From bb37009716aaf3342eb3eb021683130da84b2bde Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alejandro=20Pi=C3=B1eiro?= Date: Thu, 26 Mar 2009 14:56:46 +0000 Subject: [PATCH] 2009-03-26 Alejandro Pinheiro Iglesias * configure.ac: removed libcangerra-gtk dependency * debian/control: removed libcanberra-gtk dependency * src/Makefile.am: removed libcanberra gtk related flags * src/hildon-sound.c: avoid to use ca_gtk_context_get to get a canberra context, and manage a global canberra context instead Fixes: NB#106067 (hildon_play_system_sound() play sound only first time called) --- ChangeLog | 10 ++++++++++ configure.ac | 4 ---- debian/control | 4 ++-- src/Makefile.am | 4 +--- src/hildon-sound.c | 47 ++++++++++++++++++++++++++++++++++++++++------- 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index b23c4a3..6862d65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2009-03-26 Alejandro Pinheiro Iglesias + + * configure.ac: removed libcangerra-gtk dependency + * debian/control: removed libcanberra-gtk dependency + * src/Makefile.am: removed libcanberra gtk related flags + * src/hildon-sound.c: avoid to use ca_gtk_context_get to get a canberra + context, and manage a global canberra context instead + + Fixes: NB#106067 (hildon_play_system_sound() play sound only first time called) + 2009-03-26 Alberto Garcia Patch by Daniel Borgmann (danielb@openismus.com) diff --git a/configure.ac b/configure.ac index c30f42b..9db3428 100644 --- a/configure.ac +++ b/configure.ac @@ -49,10 +49,6 @@ PKG_CHECK_MODULES(CANBERRA, libcanberra) AC_SUBST(CANBERRA_LIBS) AC_SUBST(CANBERRA_CFLAGS) -PKG_CHECK_MODULES(CANBERRAGTK, libcanberra-gtk) -AC_SUBST(CANBERRAGTK_LIBS) -AC_SUBST(CANBERRAGTK_CFLAGS) - PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.6) AC_SUBST(GCONF_CFLAGS) AC_SUBST(GCONF_LIBS) diff --git a/debian/control b/debian/control index c715bfa..7ab0ca5 100644 --- a/debian/control +++ b/debian/control @@ -2,13 +2,13 @@ Source: libhildon Section: x11 Priority: optional Maintainer: Claudio Saavedra -Build-Depends: debhelper (>= 5), cdbs, libgtk2.0-dev (>= 2:2.12.12-1maemo12), libcanberra-dev, libcanberra-gtk-dev, libxi-dev, libxt-dev, libpng12-dev, libgconf2-dev, gtk-doc-tools, libgtk2.0-doc, libglib2.0-doc +Build-Depends: debhelper (>= 5), cdbs, libgtk2.0-dev (>= 2:2.12.12-1maemo12), libcanberra-dev, libxi-dev, libxt-dev, libpng12-dev, libgconf2-dev, gtk-doc-tools, libgtk2.0-doc, libglib2.0-doc Standards-Version: 3.6.0 Package: libhildon1-dev Section: devel Architecture: any -Depends: libhildon1 (= ${binary:Version}), pkg-config, libgtk2.0-dev (>= 2:2.12.12-1maemo12), libgconf2-dev, libcanberra-dev, libcanberra-gtk-dev +Depends: libhildon1 (= ${binary:Version}), pkg-config, libgtk2.0-dev (>= 2:2.12.12-1maemo12), libgconf2-dev, libcanberra-dev Description: Hildon libraries development files Package: libhildon1 diff --git a/src/Makefile.am b/src/Makefile.am index bcb5c3a..10187f0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -18,15 +18,13 @@ libhildon_@API_VERSION_MAJOR@_la_LIBADD = \ $(GTK_LIBS) \ $(GCONF_LIBS) \ $(CANBERRA_LIBS) \ - $(CANBERRAGTK_LIBS) \ @HILDON_LT_LDFLAGS@ libhildon_@API_VERSION_MAJOR@_la_CFLAGS = \ $(GTK_CFLAGS) \ $(GCONF_CFLAGS) \ $(EXTRA_CFLAGS) \ - $(CANBERRA_CFLAGS) \ - $(CANBERRAGTK_CFLAGS) + $(CANBERRA_CFLAGS) libhildon_@API_VERSION_MAJOR@_la_SOURCES = \ hildon-private.c \ diff --git a/src/hildon-sound.c b/src/hildon-sound.c index 938812c..392c2c0 100644 --- a/src/hildon-sound.c +++ b/src/hildon-sound.c @@ -31,12 +31,50 @@ #include #include #include -#include #include "hildon-sound.h" #define ALARM_GCONF_PATH "/apps/osso/sound/system_alert_volume" +static ca_context * +hildon_ca_context_get (void); + +/* + * hildon_ca_context_get: + * + * hildon maintains a single application-global ca_context object. + * + * This functions is based on ca_gtk_context_get + * + * Returns: a ca_context object + */ +ca_context *hildon_ca_context_get (void) { + static GStaticPrivate context_private = G_STATIC_PRIVATE_INIT; + ca_context *c = NULL; + const gchar *name = NULL; + gint ret; + + if ((c = g_static_private_get(&context_private))) + return c; + + if ((ret = ca_context_create(&c)) != CA_SUCCESS) { + g_warning("ca_context_create: %s\n", ca_strerror(ret)); + return NULL; + } + if ((ret = ca_context_open(c)) != CA_SUCCESS) { + g_warning("ca_context_open: %s\n", ca_strerror(ret)); + ca_context_destroy(c); + return NULL; + } + + if ((name = g_get_application_name())) + ca_context_change_props(c, CA_PROP_APPLICATION_NAME, name, NULL); + + g_static_private_set(&context_private, c, (GDestroyNotify) ca_context_destroy); + + return c; +} + /** * hildon_play_system_sound: * @sample: sound file to play @@ -77,12 +115,7 @@ hildon_play_system_sound(const gchar *sample) volume = ((1.0 - (float)gconf_vol / 2.0)) * (-6.0); #endif - ca_con = ca_gtk_context_get (); - - if (ca_con == NULL) { - g_warning ("ca_gtk_context_get doesn't return a proper context \n"); - return; - } + ca_con = hildon_ca_context_get (); ca_proplist_create(&pl); ca_proplist_sets(pl, CA_PROP_MEDIA_FILENAME, sample); -- 1.7.9.5