diff --git a/src/common/text.c b/src/common/text.c index 3d1c9280..f0a1dfb1 100644 --- a/src/common/text.c +++ b/src/common/text.c @@ -58,6 +58,9 @@ struct pevt_stage1 struct pevt_stage1 *next; }; +#ifdef USE_LIBCANBERRA +static ca_context *ca_con; +#endif static void mkdir_p (char *filename); static char *log_create_filename (char *channame); @@ -2209,9 +2212,6 @@ sound_play (const char *file, gboolean quiet) char *wavfile; #ifndef WIN32 char *cmd; -#ifdef USE_LIBCANBERRA - ca_context *con; -#endif #endif /* the pevents GUI editor triggers this after removing a soundfile */ @@ -2240,9 +2240,16 @@ sound_play (const char *file, gboolean quiet) PlaySound (wavfile, NULL, SND_NODEFAULT|SND_FILENAME|SND_ASYNC); #else #ifdef USE_LIBCANBERRA - ca_context_create (&con); - /* TODO: Volume setting? */ - if (ca_context_play (con, 0, CA_PROP_MEDIA_FILENAME, wavfile, NULL) != 0) + if (ca_con == NULL) + { + ca_context_create (&ca_con); + ca_context_change_props (ca_con, + CA_PROP_APPLICATION_ID, "hexchat", + CA_PROP_APPLICATION_NAME, "HexChat", + CA_PROP_APPLICATION_ICON_NAME, "hexchat", NULL); + } + + if (ca_context_play (ca_con, 0, CA_PROP_MEDIA_FILENAME, wavfile, NULL) != 0) #endif { cmd = g_find_program_in_path ("play"); diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index d737b744..e017b9b9 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -62,6 +62,9 @@ GdkPixmap *channelwin_pix; +#ifdef USE_LIBCANBERRA +static ca_context *ca_con; +#endif #ifdef USE_XLIB @@ -674,11 +677,16 @@ fe_beep (session *sess) } #else #ifdef USE_LIBCANBERRA - ca_context *con; - ca_context_create (&con); - if (ca_context_play (con, 0, - CA_PROP_APPLICATION_NAME, DISPLAY_NAME, - CA_PROP_EVENT_ID, "message-new-instant", NULL) != 0) + if (ca_con == NULL) + { + ca_context_create (&ca_con); + ca_context_change_props (ca_con, + CA_PROP_APPLICATION_ID, "hexchat", + CA_PROP_APPLICATION_NAME, DISPLAY_NAME, + CA_PROP_APPLICATION_ICON_NAME, "hexchat", NULL); + } + + if (ca_context_play (ca_con, 0, CA_PROP_EVENT_ID, "message-new-instant", NULL) != 0) #endif gdk_beep (); #endif