merge of 'd3231850edf096c5afacfab40b53717b34098355'

Sat, 12 May 2007 20:34:56 +0000

author
Evan Schoenberg <evands@pidgin.im>
date
Sat, 12 May 2007 20:34:56 +0000
changeset 17108
41a52fb8d3b6
parent 17104
d3231850edf0 (diff)
parent 17107
fbdf9f73f9f8 (current diff)
child 17109
8ce3b7c451f1
child 17139
6a6f27caf79e

merge of 'd3231850edf096c5afacfab40b53717b34098355'
and 'fbdf9f73f9f80061cac081c957b4c35513c732a7'

--- a/libpurple/protocols/msn/msn.c	Sat May 12 20:34:01 2007 +0000
+++ b/libpurple/protocols/msn/msn.c	Sat May 12 20:34:56 2007 +0000
@@ -73,6 +73,15 @@
 
 } MsnGetInfoStepTwoData;
 
+typedef struct
+{
+	PurpleConnection *gc;
+	const char *who;
+	char *msg;
+	PurpleMessageFlags flags;
+	time_t when;
+} MsnIMData;
+
 static const char *
 msn_normalize(const PurpleAccount *account, const char *str)
 {
@@ -727,6 +736,16 @@
 	gc->proto_data = NULL;
 }
 
+static gboolean
+msn_send_me_im(gpointer data)
+{
+	MsnIMData *imdata = data;
+	serv_got_im(imdata->gc, imdata->who, imdata->msg, imdata->flags, imdata->when);
+	g_free(imdata->msg);
+	g_free(imdata);
+	return FALSE;
+}
+
 static int
 msn_send_im(PurpleConnection *gc, const char *who, const char *message,
 			PurpleMessageFlags flags)
@@ -779,6 +798,7 @@
 	{
 		char *body_str, *body_enc, *pre, *post;
 		const char *format;
+		MsnIMData *imdata = g_new0(MsnIMData, 1);
 		/*
 		 * In MSN, you can't send messages to yourself, so
 		 * we'll fake like we received it ;)
@@ -796,8 +816,12 @@
 		g_free(post);
 
 		serv_got_typing_stopped(gc, who);
-		serv_got_im(gc, who, body_str, flags, time(NULL));
-		g_free(body_str);
+		imdata->gc = gc;
+		imdata->who = who;
+		imdata->msg = body_str;
+		imdata->flags = flags;
+		imdata->when = time(NULL);
+		g_idle_add(msn_send_me_im, imdata);
 	}
 
 	msn_message_destroy(msg);
--- a/pidgin/gtkmain.c	Sat May 12 20:34:01 2007 +0000
+++ b/pidgin/gtkmain.c	Sat May 12 20:34:56 2007 +0000
@@ -473,9 +473,6 @@
 #else
 	debug_enabled = FALSE;
 #endif
-
-	/* This is the first Glib function call. Make sure to initialize GThread bfeore then */
-	g_thread_init(NULL);
 	
 #ifdef ENABLE_NLS
 	bindtextdomain(PACKAGE, LOCALEDIR);

mercurial