From 4a67f45b4a68a3748f7be9811bf78897806f37ca Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 30 May 2003 03:01:47 +0000 Subject: Fixes bug #43805. 2003-05-29 Jeffrey Stedfast Fixes bug #43805. * mail-session.c (session_system_beep): Proxy the gdk_beep() call to the main thread. (session_play_sound): Proxy the gnome_sound_play() call to the main thread. svn path=/trunk/; revision=21348 --- mail/ChangeLog | 9 +++++++++ mail/mail-session.c | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 1f9bd7ce77..bf7324a27d 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,12 @@ +2003-05-29 Jeffrey Stedfast + + Fixes bug #43805. + + * mail-session.c (session_system_beep): Proxy the gdk_beep() call + to the main thread. + (session_play_sound): Proxy the gnome_sound_play() call to the + main thread. + 2003-05-27 Not Zed * message-tag-editor.c (message_tag_editor_init): set the default diff --git a/mail/mail-session.c b/mail/mail-session.c index 52bfba7497..081c6aa533 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -763,21 +763,47 @@ get_folder (CamelFilterDriver *d, const char *uri, void *data, CamelException *e return mail_tool_uri_to_folder (uri, 0, ex); } + static void -session_play_sound (CamelFilterDriver *driver, const char *filename, gpointer user_data) +main_play_sound (CamelFilterDriver *driver, const char *filename, gpointer user_data) { - if (!filename || !*filename) - gdk_beep (); - else + if (filename && *filename) gnome_sound_play (filename); + else + gdk_beep (); + + g_free (filename); + camel_object_unref (session); } static void -session_system_beep (CamelFilterDriver *driver, gpointer user_data) +session_play_sound (CamelFilterDriver *driver, const char *filename, gpointer user_data) +{ + MailSession *ms = (MailSession *) session; + + camel_object_ref (session); + + mail_async_event_emit (ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc) main_play_sound, + driver, g_strdup (filename), user_data); +} + +static void +main_system_beep (CamelFilterDriver *driver, gpointer user_data) { gdk_beep (); } +static void +session_system_beep (CamelFilterDriver *driver, gpointer user_data) +{ + MailSession *ms = (MailSession *) session; + + camel_object_ref (session); + + mail_async_event_emit (ms->async, MAIL_ASYNC_GUI, (MailAsyncFunc) main_system_beep, + driver, user_data, NULL); +} + static CamelFilterDriver * main_get_filter_driver (CamelSession *session, const char *type, CamelException *ex) { -- cgit v1.2.3