From 8be56d700309fad3966356249f024ed94ff36f8b Mon Sep 17 00:00:00 2001 From: TingPing Date: Wed, 12 Jun 2013 10:41:52 -0400 Subject: Don't open libcanberra connection for every event Closes #645 --- src/common/text.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/common/text.c') 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"); -- cgit 1.4.1