+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)
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)
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
$(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 \
#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
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);