avatar.c
changeset 15 06f8bb3de689
parent 14 9a4d0f04c7d3
child 16 694d32bf5058
equal deleted inserted replaced
14:9a4d0f04c7d3 15:06f8bb3de689
  1073 }
  1073 }
  1074 
  1074 
  1075 // release handlers before reconnect
  1075 // release handlers before reconnect
  1076 static void avatar_hh (guint32 hid, hk_arg_t *args, gpointer userdata)
  1076 static void avatar_hh (guint32 hid, hk_arg_t *args, gpointer userdata)
  1077 {
  1077 {
  1078 #ifdef HOOK_PRE_DISCONNECT
  1078 #ifndef HOOK_POST_CONNECT
  1079 	if (hid == HOOK_PRE_DISCONNECT)
  1079 	hk_arg_t *arg;
       
  1080 
       
  1081 	for (arg = args; arg->name; arg++) {
       
  1082 		if (!strcmp (arg->name, "hook")) {
       
  1083 			if (!strcmp (arg->value, "hook-pre-disconnect")) {
       
  1084 #else
       
  1085 	if (hid == HOOK_PRE_DISCONNECT) {
       
  1086 #endif
  1080 		avatar_free_reply_handlers ();
  1087 		avatar_free_reply_handlers ();
  1081 	else if (hid == HOOK_POST_CONNECT && publish_delayed) {
  1088 #ifndef HOOK_POST_CONNECT
       
  1089 			} else if (publish_delayed && !strcmp (arg -> value, "hook-post-connect")) {
       
  1090 #else
       
  1091 	} else if (hid == HOOK_POST_CONNECT && publish_delayed) {
       
  1092 #endif
  1082 		char *tmp_data = publish_data;
  1093 		char *tmp_data = publish_data;
  1083 
  1094 
  1084 		scr_LogPrint (LPRINT_DEBUG, "avatar: Publishing delayed data.");
  1095 		scr_LogPrint (LPRINT_DEBUG, "avatar: Publishing delayed data.");
  1085 
  1096 
  1086 		publish_data    = NULL;
  1097 		publish_data    = NULL;
  1087 		publish_delayed = FALSE;
  1098 		publish_delayed = FALSE;
  1088 
  1099 
  1089 		avatar_publish (publish_data, publish_len);
  1100 		avatar_publish (publish_data, publish_len);
  1090 
  1101 
  1091 		g_free (tmp_data);
  1102 		g_free (tmp_data);
  1092 	}
  1103 #ifndef HOOK_POST_CONNECT
  1093 #else
  1104 			}
  1094 	hk_arg_t *arg;
  1105 		}
  1095 
       
  1096 	for (arg = args; arg->name; arg++) {
       
  1097 		if (!strcmp (arg->name, "hook") && !strcmp (arg->value, "hook-pre-disconnect")) {
       
  1098 			avatar_free_reply_handlers ();
       
  1099 			return;
       
  1100 		}
       
  1101 	}
       
  1102 #endif
  1106 #endif
       
  1107 	}
  1103 }
  1108 }
  1104 
  1109 
  1105 const gchar *g_module_check_init (GModule *module)
  1110 const gchar *g_module_check_init (GModule *module)
  1106 {
  1111 {
  1107 	pep_register_xmlns_handler (NS_AVATAR_METADATA, avatar_handler, NULL, NULL);
  1112 	pep_register_xmlns_handler (NS_AVATAR_METADATA, avatar_handler, NULL, NULL);