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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Jan 22 17:59:45 EET 2007
Author: kihamala
Date: 2007-01-22 17:59:44 +0200 (Mon, 22 Jan 2007)
New Revision: 9229

Modified:
   projects/haf/trunk/libosso/debian/changelog
   projects/haf/trunk/libosso/src/libosso.h
   projects/haf/trunk/libosso/src/muali.h
   projects/haf/trunk/libosso/src/osso-application-init.c
   projects/haf/trunk/libosso/src/osso-hw.c
   projects/haf/trunk/libosso/src/osso-init.c
   projects/haf/trunk/libosso/src/osso-internal.h
   projects/haf/trunk/libosso/src/osso-rpc.c
Log:
new muali stuff + some API cleanup


Modified: projects/haf/trunk/libosso/debian/changelog
===================================================================
--- projects/haf/trunk/libosso/debian/changelog	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/debian/changelog	2007-01-22 15:59:44 UTC (rev 9229)
@@ -1,5 +1,6 @@
-libosso (2.0-1unreleased1) unstable; urgency=low
+libosso (2.0-1) unstable; urgency=low
 
+  * UNRELEASED
   * Branched the code (1.x branch is the maintenance branch).
   * Compilation fixes for the case that LIBOSSO_DEBUG is defined.
   * Const keyword fixes from Murray Cumming <murrayc at murrayc.com>.
@@ -15,8 +16,12 @@
   * Made lot of muali development, design fixes, and tested code.
   * Implemented muali_reply_string (not sure if *_string functions make
     sense...) and muali_reply_error.
+  * The old API does not use muali filter anymore.
+  * Removed unused API (as part of Hildon API cleanup): osso_tasknav_* and
+    osso_application_initialize.
+  * (Contains some untested muali code.)
 
- -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>  Wed, 03 Jan 2007 09:43:15 +0200
+ -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>  Mon, 22 Jan 2007 18:00:35 +0200
 
 libosso (1.20-1) unstable; urgency=low
 

Modified: projects/haf/trunk/libosso/src/libosso.h
===================================================================
--- projects/haf/trunk/libosso/src/libosso.h	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/libosso.h	2007-01-22 15:59:44 UTC (rev 9229)
@@ -1356,6 +1356,7 @@
  */
 void osso_state_close(osso_context_t *osso, gint fd);
 
+#if 0  /* Hildon API cleanup */
 /** This function adds a mail to be displayed in the
  *      mail popup of the tasknavigator.
  *
@@ -1425,6 +1426,7 @@
 					     const gchar *version,
 					     osso_application_top_cb_f *cb,
 					     gpointer callback_data);
+#endif
 
 
 /*@}*/

Modified: projects/haf/trunk/libosso/src/muali.h
===================================================================
--- projects/haf/trunk/libosso/src/muali.h	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/muali.h	2007-01-22 15:59:44 UTC (rev 9229)
@@ -61,12 +61,10 @@
                            the length of the data */
   union {
     int b;              /* MUALI_TYPE_BOOL */
+    char by;            /* MUALI_TYPE_BYTE */
     int i;              /* MUALI_TYPE_INT */
     unsigned int u;     /* MUALI_TYPE_UINT */
-    long l;             /* MUALI_TYPE_LONG */
-    unsigned long ul;   /* MUALI_TYPE_ULONG */
     double d;           /* MUALI_TYPE_DOUBLE */
-    char c;             /* MUALI_TYPE_CHAR */
     char *s;            /* MUALI_TYPE_STRING */
     void *data;         /* MUALI_TYPE_DATA */
   } value;
@@ -76,14 +74,12 @@
  * come later. */
 #define MUALI_TYPE_INVALID      0
 #define MUALI_TYPE_BOOL         1
-#define MUALI_TYPE_INT          2
-#define MUALI_TYPE_UINT         3
-#define MUALI_TYPE_LONG         4
-#define MUALI_TYPE_ULONG        5
-#define MUALI_TYPE_DOUBLE       6
-#define MUALI_TYPE_CHAR         7
-#define MUALI_TYPE_STRING       8
-#define MUALI_TYPE_DATA         9
+#define MUALI_TYPE_BYTE         2
+#define MUALI_TYPE_INT          3
+#define MUALI_TYPE_UINT         4
+#define MUALI_TYPE_DOUBLE       5
+#define MUALI_TYPE_STRING       6
+#define MUALI_TYPE_DATA         7
 
 typedef enum {
         MUALI_BUS_IRRELEVANT = 0,

Modified: projects/haf/trunk/libosso/src/osso-application-init.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-application-init.c	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/osso-application-init.c	2007-01-22 15:59:44 UTC (rev 9229)
@@ -27,6 +27,7 @@
 #include "libosso.h"
 #include <assert.h>
 
+#if 0   /* Hildon API cleanup */
 static void _run_main_loop( void );
 
 
@@ -88,6 +89,7 @@
     g_main_loop_quit( (GMainLoop *)data);
     return 0;
 }
+#endif
 
 const gchar * osso_application_name_get(osso_context_t *osso)
 {

Modified: projects/haf/trunk/libosso/src/osso-hw.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-hw.c	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/osso-hw.c	2007-01-22 15:59:44 UTC (rev 9229)
@@ -519,8 +519,6 @@
 
             int i;
             unsigned int u;
-            long l;
-            unsigned long ul;
             double d;
             char c, *s;
 
@@ -543,18 +541,6 @@
                             arg_array[idx].value.u = u;
                             ++idx;
                             break;
-                    case DBUS_TYPE_INT64:
-                            arg_array[idx].type = MUALI_TYPE_LONG; 
-                            dbus_message_iter_get_basic(iter, &l);
-                            arg_array[idx].value.l = l;
-                            ++idx;
-                            break;
-                    case DBUS_TYPE_UINT64:
-                            arg_array[idx].type = MUALI_TYPE_ULONG; 
-                            dbus_message_iter_get_basic(iter, &ul);
-                            arg_array[idx].value.ul = ul;
-                            ++idx;
-                            break;
                     case DBUS_TYPE_DOUBLE:
                             arg_array[idx].type = MUALI_TYPE_DOUBLE; 
                             dbus_message_iter_get_basic(iter, &d);
@@ -562,9 +548,9 @@
                             ++idx;
                             break;
                     case DBUS_TYPE_BYTE:
-                            arg_array[idx].type = MUALI_TYPE_CHAR; 
+                            arg_array[idx].type = MUALI_TYPE_BYTE; 
                             dbus_message_iter_get_basic(iter, &c);
-                            arg_array[idx].value.c = c;
+                            arg_array[idx].value.by = c;
                             ++idx;
                             break;
                     case DBUS_TYPE_STRING:

Modified: projects/haf/trunk/libosso/src/osso-init.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-init.c	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/osso-init.c	2007-01-22 15:59:44 UTC (rev 9229)
@@ -171,6 +171,7 @@
         _deinit(osso);
         return NULL;
     }
+    osso->muali_filters_setup = TRUE;
     osso->cur_conn = NULL;
     return (muali_context_t*)osso;
 }
@@ -471,21 +472,6 @@
         ULOG_ERR_F("dbus_connection_add_filter failed");
 	goto dbus_conn_error4;
     }
-    /* FIXME: there are two filters because semantics in the new
-     * muali API are slightly different (stricter matching) */
-    if (bus_type == DBUS_BUS_SESSION) {
-        if (!dbus_connection_add_filter(conn, _muali_filter_session, osso,
-                                        NULL)) {
-            ULOG_ERR_F("dbus_connection_add_filter failed");
-	    goto dbus_conn_error4;
-        }
-    } else {
-        if (!dbus_connection_add_filter(conn, _muali_filter_system, osso,
-                                        NULL)) {
-            ULOG_ERR_F("dbus_connection_add_filter failed");
-	    goto dbus_conn_error4;
-        }
-    }
 
     dprint("My base service is '%s'", dbus_bus_get_unique_name(conn));
 
@@ -570,8 +556,10 @@
         osso->conn = NULL;
     }
     dbus_connection_remove_filter(conn, _msg_handler, osso);
-    dbus_connection_remove_filter(conn, _muali_filter_session, osso);
-    dbus_connection_remove_filter(conn, _muali_filter_system, osso);
+    if (osso->muali_filters_setup) {
+        dbus_connection_remove_filter(conn, _muali_filter_session, osso);
+        dbus_connection_remove_filter(conn, _muali_filter_system, osso);
+    }
 #ifdef LIBOSSO_DEBUG
     dbus_connection_remove_filter(conn, _debug_filter, NULL);
 #endif

Modified: projects/haf/trunk/libosso/src/osso-internal.h
===================================================================
--- projects/haf/trunk/libosso/src/osso-internal.h	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/osso-internal.h	2007-01-22 15:59:44 UTC (rev 9229)
@@ -175,6 +175,7 @@
     int next_handler_id;    /* next available handler id, unique in this
                                context */
     const DBusMessage *reply_dummy, *error_dummy;
+    gboolean muali_filters_setup;
 } _osso_af_context_t, _muali_context_t;
 
 typedef struct _muali_context_t {
@@ -204,6 +205,7 @@
     int next_handler_id;    /* next available handler id, unique in this
                                context */
     const DBusMessage *reply_dummy, *error_dummy;
+    gboolean muali_filters_setup;
 } _muali_this_type_is_not_used_t;
 
 # ifdef LIBOSSO_DEBUG

Modified: projects/haf/trunk/libosso/src/osso-rpc.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-rpc.c	2007-01-22 13:50:52 UTC (rev 9228)
+++ projects/haf/trunk/libosso/src/osso-rpc.c	2007-01-22 15:59:44 UTC (rev 9229)
@@ -1274,21 +1274,95 @@
         return MUALI_ERROR_SUCCESS;
 }
 
-muali_error_t muali_send_string(muali_context_t *context,
-                                muali_handler_t *reply_handler,
-                                const void *user_data,
-                                muali_bus_type bus_type,
-                                const char *destination,
-                                const char *message_name,
-                                const char *string_to_send)
+static muali_error_t _muali_append_args(DBusMessage *msg, int type,
+                                        va_list var_args)
 {
+        muali_error_t rc = MUALI_ERROR_SUCCESS;
+
+        while (type != MUALI_TYPE_INVALID && rc == MUALI_ERROR_SUCCESS) {
+                dbus_bool_t ret;
+                char *s;
+                const char *empty_str = "";
+                int i;
+                unsigned int u;
+                double d;
+
+                switch (type) {
+                case MUALI_TYPE_BOOL:
+                        i = va_arg(var_args, int);
+                        ret = dbus_message_append_args(msg, DBUS_TYPE_BOOLEAN,
+                                                 &i, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_BYTE:
+                        i = va_arg(var_args, int);
+                        ret = dbus_message_append_args(msg, DBUS_TYPE_BYTE,
+                                                 &i, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_INT:
+                        i = va_arg(var_args, int);
+                        ret = dbus_message_append_args(msg, DBUS_TYPE_INT32,
+                                                 &i, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_UINT:
+                        u = va_arg(var_args, unsigned int);
+                        ret = dbus_message_append_args(msg, DBUS_TYPE_UINT32,
+                                                 &u, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_DOUBLE:
+                        d = va_arg(var_args, double);
+                        ret = dbus_message_append_args(msg, DBUS_TYPE_DOUBLE,
+                                                 &d, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_STRING:
+                        s = va_arg(var_args, char *);
+                        if (s == NULL) {
+                                ret = dbus_message_append_args(msg,
+                                    DBUS_TYPE_STRING, &empty_str,
+                                    DBUS_TYPE_INVALID);
+                        } else {
+                                ret = dbus_message_append_args(msg,
+                                    DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID);
+                        }
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                case MUALI_TYPE_DATA:
+                        i = va_arg(var_args, int); /* length of the data */
+                        s = va_arg(var_args, char *);
+        	        ret = dbus_message_append_args(msg,
+                                  DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE,
+                                  &s, i, DBUS_TYPE_INVALID);
+                        if (!ret) rc = MUALI_ERROR;
+                        break;
+                default:
+                        ULOG_ERR_F("unknown type %d", type);
+                        rc = MUALI_ERROR_INVALID;
+                        break;	    
+                }
+                type = va_arg(var_args, int);
+        }
+        return rc;
+}
+
+static
+muali_error_t _muali_send_helper(muali_context_t *context,
+                                 muali_handler_t *reply_handler,
+                                 const void *user_data,
+                                 muali_bus_type bus_type,
+                                 const char *destination,
+                                 const char *message_name,
+                                 int arg_type, va_list va_args)
+{
         char service[MAX_SVC_LEN + 1], path[MAX_OP_LEN + 1],
              interface[MAX_IF_LEN + 1];
         _osso_callback_data_t *cb_data;
         DBusMessage *msg;
         DBusConnection *conn;
         int msg_serial = 0, handler_id;
-        dbus_bool_t ret;
 
         if (context == NULL) {
                 return MUALI_ERROR_INVALID;
@@ -1334,14 +1408,12 @@
 	        goto _muali_send_oom;
         }
 
-        if (string_to_send != NULL) {
-                ret = dbus_message_append_args(msg, DBUS_TYPE_STRING,
-                                               &string_to_send,
-                                               DBUS_TYPE_INVALID);
-                if (!ret) {
-                        ULOG_ERR_F("dbus_message_append_args failed");
+        if (arg_type != MUALI_TYPE_INVALID) {
+                muali_error_t rc;
+                rc = _muali_append_args(msg, arg_type, va_args);
+                if (rc != MUALI_ERROR_SUCCESS) {
                         dbus_message_unref(msg);
-	                goto _muali_send_oom;
+                        return rc;
                 }
         }
 
@@ -1409,10 +1481,33 @@
                                  const char *message_name,
                                  int arg_type, ...)
 {
-        /* TODO */
-        return MUALI_ERROR_OOM;
+        va_list va_args;
+        muali_error_t rc;
+
+        va_start(va_args, arg_type);
+        rc = _muali_send_helper(context, reply_handler, user_data,
+                                bus_type, destination, message_name,
+                                arg_type, va_args);
+        va_end(va_args);
+        return rc;
 }
 
+muali_error_t muali_send_string(muali_context_t *context,
+                                muali_handler_t *reply_handler,
+                                const void *user_data,
+                                muali_bus_type bus_type,
+                                const char *destination,
+                                const char *message_name,
+                                const char *string_to_send)
+{
+        muali_error_t rc;
+        rc = muali_send_varargs(context, reply_handler, user_data,
+                                bus_type, destination, message_name,
+                                MUALI_TYPE_STRING, string_to_send,
+                                MUALI_TYPE_INVALID);
+        return rc;
+}
+
 muali_error_t muali_reply_string(muali_context_t *context,
                                  const char *message_id,
                                  const char *string)


More information about the maemo-commits mailing list