[maemo-commits] [maemo-commits] r17306 - in projects/haf/trunk/libosso: debian src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Jan 28 14:19:37 EET 2009
Author: kihamala
Date: 2009-01-28 14:19:34 +0200 (Wed, 28 Jan 2009)
New Revision: 17306

Modified:
   projects/haf/trunk/libosso/debian/changelog
   projects/haf/trunk/libosso/src/osso-init.c
Log:
not released yet..


Modified: projects/haf/trunk/libosso/debian/changelog
===================================================================
--- projects/haf/trunk/libosso/debian/changelog	2009-01-28 11:30:06 UTC (rev 17305)
+++ projects/haf/trunk/libosso/debian/changelog	2009-01-28 12:19:34 UTC (rev 17306)
@@ -1,4 +1,4 @@
-libosso (2.17-1) unstable; urgency=low
+libosso (2.17-1~unreleased) unstable; urgency=low
 
   Armin Burgmeier  <armin at openismus.com>:
 

Modified: projects/haf/trunk/libosso/src/osso-init.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-init.c	2009-01-28 11:30:06 UTC (rev 17305)
+++ projects/haf/trunk/libosso/src/osso-init.c	2009-01-28 12:19:34 UTC (rev 17306)
@@ -145,6 +145,64 @@
     return osso;
 }
 
+osso_context_t *osso_initialize_with_connections(const gchar *application,
+                        const gchar *version,
+                        DBusConnection *system_conn,
+                        DBusConnection *session_conn)
+{
+    osso_context_t *osso;
+    int ret;
+    DBusError err;
+
+    ULOG_DEBUG_F("application '%s', version '%s'", application, version);
+
+    osso = _init(application, version);
+    if (osso == NULL) {
+        ULOG_CRIT_F("initialization failed: out of memory");
+        return NULL;
+    }
+
+    /* session connection */
+    osso->conn = session_conn;
+    if (osso->conn == NULL ||
+        !dbus_connection_add_filter(session_conn, _msg_handler, osso, NULL))
+    {
+        ULOG_ERR_F("session connection is not good");
+        _deinit(osso);
+	return NULL;
+    }
+    dbus_error_init(&err);
+    ret = dbus_bus_request_name(session_conn, osso->service,
+                                DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &err);
+    if (ret == -1) {
+        ULOG_ERR_F("dbus_bus_request_name failed: %s", err.message);
+	dbus_error_free(&err);
+        _deinit(osso);
+	return NULL;
+    }
+
+    /* system connection */
+    osso->sys_conn = system_conn;
+    if (osso->sys_conn == NULL ||
+        !dbus_connection_add_filter(system_conn, _msg_handler, osso, NULL))
+    {
+        ULOG_ERR_F("system connection is not good");
+        _deinit(osso);
+	return NULL;
+    }
+    ret = dbus_bus_request_name(system_conn, osso->service,
+                                DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &err);
+    if (ret == -1) {
+        ULOG_ERR_F("dbus_bus_request_name failed: %s", err.message);
+	dbus_error_free(&err);
+        _deinit(osso);
+	return NULL;
+    }
+
+    osso->cur_conn = NULL;
+    return osso;
+}
+
 muali_context_t *muali_init(const char *program_name,
                             const char *program_version,
                             GMainContext *context)
@@ -316,7 +374,8 @@
     }
 }
 
-static osso_context_t *_init(const gchar *application, const gchar *version)
+static osso_context_t *_init(const gchar *application,
+                             const gchar *version)
 {
     osso_context_t *osso;
     
@@ -560,7 +619,8 @@
         dbus_connection_remove_filter(conn, _muali_filter_session, osso);
         dbus_connection_remove_filter(conn, _muali_filter_system, osso);
     }
-    dbus_bus_release_name(conn, osso->service, NULL);
+    if (osso->service != NULL)
+        dbus_bus_release_name(conn, osso->service, NULL);
 #ifdef LIBOSSO_DEBUG
     dbus_connection_remove_filter(conn, _debug_filter, NULL);
 #endif


More information about the maemo-commits mailing list