[maemo-commits] [maemo-commits] r12437 - in projects/haf/trunk/hildon-desktop: . debian libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Jun 25 10:50:29 EEST 2007
- Previous message: [maemo-commits] r12436 - projects/haf/trunk/hildon-desktop
- Next message: [maemo-commits] r12438 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: lucasr Date: 2007-06-25 10:50:08 +0300 (Mon, 25 Jun 2007) New Revision: 12437 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/debian/control projects/haf/trunk/hildon-desktop/libhildondesktop/Makefile.am projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-notification-manager.c Log: 2007-06-25 Lucas Rocha <lucas.rocha at nokia.com> * debian/control: added build dependency on libsqlite3-dev to enable notification manager persistency support. * libhildondesktop/hildon-desktop-notification-manager.c: dynamicaly load libsqlite3 in order to avoid direct linking. * libhildondesktop/Makefile.am: don't link to sqlite anymore. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-22 16:17:24 UTC (rev 12436) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-25 07:50:08 UTC (rev 12437) @@ -1,3 +1,11 @@ +2007-06-25 Lucas Rocha <lucas.rocha at nokia.com> + + * debian/control: added build dependency on libsqlite3-dev to enable + notification manager persistency support. + * libhildondesktop/hildon-desktop-notification-manager.c: dynamicaly + load libsqlite3 in order to avoid direct linking. + * libhildondesktop/Makefile.am: don't link to sqlite anymore. + 2007-06-22 Moises Martinez <moises.martinez at nokia.com> * src/hd-desktop.c: @@ -205,7 +213,6 @@ Pointed out by Tommi. 2007-06-12 Johan Bilien <johan.bilien at nokia.com> -2007-06-12 Johan Bilien <johan.bilien at nokia.com> * libhildondesktop/hildon-home-area.c: - Allow add without layout Modified: projects/haf/trunk/hildon-desktop/debian/control =================================================================== --- projects/haf/trunk/hildon-desktop/debian/control 2007-06-22 16:17:24 UTC (rev 12436) +++ projects/haf/trunk/hildon-desktop/debian/control 2007-06-25 07:50:08 UTC (rev 12437) @@ -2,7 +2,7 @@ Section: x11 Priority: optional Maintainer: Johan Bilien <johan.bilien at nokia.com> -Build-Depends: debhelper (>= 4.0.0), libhildon1-dev | hildon-libs-dev, pkg-config, libosso-dev (>= 0.9.19), libosso-gnomevfs2-dev, osso-af-settings, libhildonfm2-dev | hildon-fm-dev, libhildonhelp-dev | libosso-help-dev, libxtst-dev, libxml2-dev, osso-esd-dev, libxdamage-dev, libxcomposite-dev +Build-Depends: debhelper (>= 4.0.0), libhildon1-dev | hildon-libs-dev, pkg-config, libosso-dev (>= 0.9.19), libosso-gnomevfs2-dev, osso-af-settings, libhildonfm2-dev | hildon-fm-dev, libhildonhelp-dev | libosso-help-dev, libxtst-dev, libxml2-dev, osso-esd-dev, libxdamage-dev, libxcomposite-dev, libsqlite3-dev Standards-Version: 3.6.0 Package: hildon-desktop Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/Makefile.am =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/Makefile.am 2007-06-22 16:17:24 UTC (rev 12436) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/Makefile.am 2007-06-25 07:50:08 UTC (rev 12437) @@ -40,7 +40,6 @@ $(HILDON_CFLAGS) \ $(GNOME_VFS_CFLAGS) \ $(OSSO_CFLAGS) \ - $(SQLITE_CFLAGS) \ $(LIBXML_CFLAGS) \ $(DBUS_GLIB_CFLAGS) \ $(XCOMPOSITE_CFLAGS) \ @@ -130,7 +129,6 @@ libhildondesktop_la_LIBADD = \ $(HILDON_LIBS) \ - $(SQLITE_LIBS) \ $(HILDONBASELIB_LIBS) \ $(GNOME_VFS_LIBS) \ $(DBUS_GLIB_LIBS) \ Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-notification-manager.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-notification-manager.c 2007-06-22 16:17:24 UTC (rev 12436) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-notification-manager.c 2007-06-25 07:50:08 UTC (rev 12437) @@ -35,10 +35,6 @@ #include <gtk/gtk.h> #include <gdk-pixbuf/gdk-pixbuf.h> -#ifdef HAVE_SQLITE -#include <sqlite3.h> -#endif - #define HILDON_DESKTOP_NOTIFICATION_MANAGER_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), HILDON_DESKTOP_TYPE_NOTIFICATION_MANAGER, HildonDesktopNotificationManagerPrivate)) @@ -56,6 +52,63 @@ #define HILDON_DESKTOP_NOTIFICATION_MANAGER_ICON_SIZE 48 +#ifdef HAVE_SQLITE + +#define SQLITE_OK 0 +#define SQLITE_ERROR 1 + +typedef struct _sqlite3 sqlite3; + +typedef int (*sqlite3_callback) (void *, + int, + char**, + char**); + +static char *(*sqlite3_mprintf) (const char*, ...); + +static void (*sqlite3_free_table) (char **result); + +static int (*sqlite3_get_table) (sqlite3 *, + const char *sql, + char ***resultp, + int *nrow, + int *ncolumn, + char **errmsg); + +static int (*sqlite3_open) (const char *filename, + sqlite3 **ppDb); + +static int (*sqlite3_close) (sqlite3 *); + +static void (*sqlite3_free) (void *); + +static int (*sqlite3_exec) (sqlite3 *, + const char *sql, + sqlite3_callback, + void *, + char **errmsg); + +static const char *(*sqlite3_errmsg) (sqlite3 *); + +static struct SqliteDlMapping +{ + const char *fn_name; + gpointer *fn_ptr_ref; +} sqlite_dl_mapping[] = +{ +#define MAP_SYMBOL(a) { #a, (void *)&a } + MAP_SYMBOL (sqlite3_mprintf), + MAP_SYMBOL (sqlite3_open), + MAP_SYMBOL (sqlite3_errmsg), + MAP_SYMBOL (sqlite3_close), + MAP_SYMBOL (sqlite3_free), + MAP_SYMBOL (sqlite3_exec), + MAP_SYMBOL (sqlite3_get_table), + MAP_SYMBOL (sqlite3_free_table) +#undef MAP_SYMBOL +}; +#endif + struct _HildonDesktopNotificationManagerPrivate { DBusGConnection *connection; @@ -82,6 +135,42 @@ HD_NM_HINT_TYPE_UCHAR }; +#ifdef HAVE_SQLITE +static void +open_libsqlite3 () +{ + static gboolean done = FALSE; + + if (!done) + { + int i; + GModule *sqlite; + + done = TRUE; + + sqlite = g_module_open ("libsqlite3.so.0", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL); + + if (!sqlite) + return; + + for (i = 0; i < G_N_ELEMENTS (sqlite_dl_mapping); i++) + { + if (!g_module_symbol (sqlite, sqlite_dl_mapping[i].fn_name, + sqlite_dl_mapping[i].fn_ptr_ref)) + { + g_warning ("Missing symbol '%s' in libsqlite3", sqlite_dl_mapping[i].fn_name); + g_module_close (sqlite); + + for (i = 0; i < G_N_ELEMENTS (sqlite_dl_mapping); i++) + sqlite_dl_mapping[i].fn_ptr_ref = NULL; + + return; + } + } + } +} +#endif + static void hint_value_free (GValue *value) { @@ -326,7 +415,7 @@ { gchar *error; - g_return_if_fail(nm->priv->db != NULL); + g_return_if_fail (nm->priv->db != NULL); if (sqlite3_exec (nm->priv->db, "SELECT * FROM notifications", @@ -631,7 +720,7 @@ { gchar *sql; gint result; - + result = hildon_desktop_notification_manager_db_exec (nm, "BEGIN TRANSACTION"); if (result != SQLITE_OK) goto rollback; @@ -745,11 +834,18 @@ G_OBJECT (nm)); #ifdef HAVE_SQLITE + nm->priv->db = NULL; + + open_libsqlite3 (); + + if (sqlite3_open == NULL) + return; + notifications_db = g_build_filename (g_get_home_dir (), ".osso/hildon-desktop", "notifications.db", NULL); - + result = sqlite3_open (notifications_db, &nm->priv->db); g_free (notifications_db);
- Previous message: [maemo-commits] r12436 - projects/haf/trunk/hildon-desktop
- Next message: [maemo-commits] r12438 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]