[ekg2-commit] ekg2: jogger.c (HEAD) messages.c (HEAD) [peres]

CVS commit cvs w toxygen.net
Sob, 5 Maj 2007, 11:01:55 CEST


Module name:	ekg2
Changes by:	peres	2007-05-05 11:01:53

Modified files:
	jogger.c messages.c

Log message:
- status sync on plugin load,
- better way of doing jogger_texts iconvization.

Index: jogger.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/jogger.c,v
diff -d -u -r1.6 -r1.7
--- jogger.c	4 May 2007 22:29:14 -0000	1.6
+++ jogger.c	5 May 2007 09:01:53 -0000	1.7
@@ -31,8 +31,8 @@
 static int jogger_plugin_destroy(void);
 
 	/* messages.c */
-void localize_texts();
-void free_texts();
+QUERY(jogger_localize_texts);
+void jogger_free_texts(int real_free);
 QUERY(jogger_msghandler);
 COMMAND(jogger_msg);
 COMMAND(jogger_subscribe);
@@ -155,15 +155,14 @@
 	if (xstrcmp(tmpb, tmp)) /* replace nickname with UID */
 		session_set(s, "used_uid", tmpb);
 
-		/* update status */
-#if 0 /* XXX: startup problems */
-	{
+	{		/* update status */
 		userlist_t *u	= userlist_find(js, tmpb);
 
-		session_connected_set(s, (u->status > EKG_STATUS_NA));
-		session_status_set(s, u->status);
+		if (session_connected_get(s) != (u && (u->status > EKG_STATUS_NA))) {
+			session_connected_set(s, (u && (u->status > EKG_STATUS_NA)));
+			session_status_set(s, (u ? u->status : EKG_STATUS_NA));
+		}
 	}
-#endif
 }
 
 	/* we need some dummy commands, e.g. /disconnect */
@@ -202,6 +201,7 @@
 	query_connect_id(&jogger_plugin, PROTOCOL_STATUS, jogger_statuschanged, NULL);
 	query_connect_id(&jogger_plugin, PROTOCOL_DISCONNECTED, jogger_statuscleanup, NULL);
 	query_connect_id(&jogger_plugin, PROTOCOL_MESSAGE, jogger_msghandler, NULL);
+	query_connect_id(&jogger_plugin, CONFIG_POSTINIT, jogger_localize_texts, NULL);
 
 #define JOGGER_CMDFLAGS SESSION_MUSTBELONG
 #define JOGGER_CMDFLAGS_TARGET SESSION_MUSTBELONG|COMMAND_ENABLEREQPARAMS|COMMAND_PARAMASTARGET
@@ -216,9 +216,9 @@
 #undef JOGGER_CMDFLAGS_TARGET
 #undef JOGGER_CMDFLAGS
 
-	localize_texts();
+	jogger_free_texts(0); /* set NULLs */
 
-	plugin_register(&jogger_plugin, prio*3);
+	plugin_register(&jogger_plugin, prio);
 
 	return 0;
 }
@@ -226,7 +226,7 @@
 static int jogger_plugin_destroy(void) {
 	plugin_unregister(&jogger_plugin);
 	
-	free_texts();
+	jogger_free_texts(1);
 
 	return 0;
 }

Index: messages.c
===================================================================
RCS file: /home/cvs/ekg2/plugins/jogger/messages.c,v
diff -d -u -r1.9 -r1.10
--- messages.c	4 May 2007 22:29:14 -0000	1.9
+++ messages.c	5 May 2007 09:01:53 -0000	1.10
@@ -57,10 +57,21 @@
 
 char *jogger_text[JOGGER_TEXT_MAX];
 
-void localize_texts() {
+void jogger_free_texts(int real_free) {
+	int i;
+
+	for (i = 0; i < JOGGER_TEXT_MAX; i++) {
+		if (real_free)
+			xfree(jogger_text[i]);
+		jogger_text[i] = NULL;
+	}
+}
+
+QUERY(jogger_localize_texts) {
 	int i;
 	void *p = ekg_convert_string_init("UTF-8", NULL, NULL);
 
+	jogger_free_texts(1);
 	for (i = 0; i < JOGGER_TEXT_MAX; i++) {
 		char *s = ekg_convert_string_p(utf_jogger_text[i], p);
 
@@ -69,13 +80,8 @@
 		jogger_text[i] = s;
 	}
 	ekg_convert_string_destroy(p);
-}
-
-void free_texts() {
-	int i;
 
-	for (i = 0; i < JOGGER_TEXT_MAX; i++)
-		xfree(jogger_text[i]);
+	return 0;
 }
 
 QUERY(jogger_msghandler) {


Więcej informacji o liście dyskusyjnej ekg2-commit