2009-03-26 Alejandro Pinheiro Iglesias <apinheiro@igalia.com>
authorAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 26 Mar 2009 14:56:46 +0000 (14:56 +0000)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 26 Mar 2009 14:56:46 +0000 (14:56 +0000)
* 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
configure.ac
debian/control
src/Makefile.am
src/hildon-sound.c

index b23c4a3..6862d65 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-03-26  Alejandro Pinheiro Iglesias <apinheiro@igalia.com>
+
+       * 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  <agarcia@igalia.com>
 
        Patch by Daniel Borgmann (danielb@openismus.com)
index c30f42b..9db3428 100644 (file)
@@ -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)
index c715bfa..7ab0ca5 100644 (file)
@@ -2,13 +2,13 @@ Source: libhildon
 Section: x11
 Priority: optional
 Maintainer: Claudio Saavedra <csaavedra@igalia.com>
-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
index bcb5c3a..10187f0 100644 (file)
@@ -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                        \
index 938812c..392c2c0 100644 (file)
 #include <unistd.h>
 #include <gconf/gconf-client.h>
 #include <canberra.h>
-#include <canberra-gtk.h>
 
 #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);