[evolution] Remove MailAsyncEvent from mail-session.c.



commit 8dd3119dadd898f5d401ad413593d05258131872
Author: Matthew Barnes <mbarnes redhat com>
Date:   Thu Sep 30 09:23:09 2010 -0400

    Remove MailAsyncEvent from mail-session.c.
    
    Just use an idle callback to play a sound while filtering.

 mail/mail-session.c |   56 +++++++++++++++++---------------------------------
 1 files changed, 19 insertions(+), 37 deletions(-)
---
diff --git a/mail/mail-session.c b/mail/mail-session.c
index 31b11ea..3052113 100644
--- a/mail/mail-session.c
+++ b/mail/mail-session.c
@@ -78,8 +78,6 @@ struct _MailSession {
 	gboolean interactive;
 	FILE *filter_logfile;
 	GList *junk_plugins;
-
-	MailAsyncEvent *async;
 };
 
 struct _MailSessionClass {
@@ -107,7 +105,6 @@ G_DEFINE_TYPE (MailSession, mail_session, CAMEL_TYPE_SESSION)
 static void
 mail_session_finalize (GObject *object)
 {
-	MailSession *session = (MailSession *) object;
 	GConfClient *client;
 
 	client = mail_config_get_gconf_client ();
@@ -122,8 +119,6 @@ mail_session_finalize (GObject *object)
 		session_gconf_proxy_id = 0;
 	}
 
-	mail_async_event_destroy (session->async);
-
 	g_free (mail_data_dir);
 	g_free (mail_config_dir);
 
@@ -155,8 +150,6 @@ mail_session_class_init (MailSessionClass *class)
 static void
 mail_session_init (MailSession *session)
 {
-	session->async = mail_async_event_new ();
-	session->junk_plugins = NULL;
 }
 
 static gchar *
@@ -482,49 +475,38 @@ get_folder (CamelFilterDriver *d,
 	return mail_tool_uri_to_folder (uri, 0, NULL, error);
 }
 
-static void
-main_play_sound (CamelFilterDriver *driver, gchar *filename, gpointer user_data)
+static gboolean
+session_play_sound_cb (const gchar *filename)
 {
-	if (filename && *filename) {
 #ifdef HAVE_CANBERRA
-		ca_context_play (ca_gtk_context_get (), 0,
-				CA_PROP_MEDIA_FILENAME, filename,
-				NULL);
+	if (filename != NULL && *filename != '\0')
+		ca_context_play (
+			ca_gtk_context_get (), 0,
+			CA_PROP_MEDIA_FILENAME, filename,
+			NULL);
+	else
 #endif
-	} else
 		gdk_beep ();
 
-	g_free (filename);
-	g_object_unref (session);
-}
-
-static void
-session_play_sound (CamelFilterDriver *driver, const gchar *filename, gpointer user_data)
-{
-	MailSession *ms = (MailSession *) session;
-
-	g_object_ref (session);
-
-	mail_async_event_emit (ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc) main_play_sound,
-			       driver, g_strdup (filename), user_data);
+	return FALSE;
 }
 
 static void
-main_system_beep (CamelFilterDriver *driver, gpointer user_data)
+session_play_sound (CamelFilterDriver *driver,
+                    const gchar *filename,
+                    gpointer user_data)
 {
-	gdk_beep ();
-	g_object_unref (session);
+	g_idle_add_full (
+		G_PRIORITY_DEFAULT_IDLE,
+		(GSourceFunc) session_play_sound_cb,
+		g_strdup (filename), (GDestroyNotify) g_free);
 }
 
 static void
-session_system_beep (CamelFilterDriver *driver, gpointer user_data)
+session_system_beep (CamelFilterDriver *driver,
+                     gpointer user_data)
 {
-	MailSession *ms = (MailSession *) session;
-
-	g_object_ref (session);
-
-	mail_async_event_emit (ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc) main_system_beep,
-			       driver, user_data, NULL);
+	g_idle_add ((GSourceFunc) session_play_sound_cb, NULL);
 }
 
 static CamelFilterDriver *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]