[maemo-commits] [maemo-commits] r8607 - projects/haf/trunk/libosso/src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Dec 4 17:36:28 EET 2006
- Previous message: [maemo-commits] r8606 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r8608 - projects/haf/trunk/libosso/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kihamala
Date: 2006-12-04 17:36:27 +0200 (Mon, 04 Dec 2006)
New Revision: 8607
Modified:
projects/haf/trunk/libosso/src/osso-hw.c
projects/haf/trunk/libosso/src/osso-init.c
projects/haf/trunk/libosso/src/osso-internal.h
Log:
implemented handler_id code
Modified: projects/haf/trunk/libosso/src/osso-hw.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-hw.c 2006-12-04 15:32:45 UTC (rev 8606)
+++ projects/haf/trunk/libosso/src/osso-hw.c 2006-12-04 15:36:27 UTC (rev 8607)
@@ -732,7 +732,8 @@
_osso_handler_f *event_cb,
int event_type,
muali_handler_t *user_handler,
- void *user_data)
+ void *user_data,
+ int handler_id)
{
DBusError error;
_osso_callback_data_t *cb_data;
@@ -788,15 +789,12 @@
return MUALI_ERROR;
}
- _msg_handler_set_cb_f((osso_context_t*)context,
- service,
- object_path,
- interface,
- event_cb,
- cb_data, FALSE);
+ if (_muali_set_handler(context, event_cb, cb_data, handler_id)) {
+ return MUALI_ERROR_SUCCESS;
+ } else {
+ return MUALI_ERROR;
+ }
- return MUALI_ERROR_SUCCESS;
-
_set_handler_oom1:
free(cb_data->interface);
_set_handler_oom2:
@@ -866,6 +864,7 @@
const char *service = NULL, *object_path = NULL,
*interface = NULL;
char *match = NULL;
+ int new_handler_id;
ULOG_DEBUG_F("entered");
@@ -879,6 +878,8 @@
return MUALI_ERROR_INVALID;
}
+ new_handler_id = context->next_handler_id++;
+
if (info != NULL) {
muali_error_t ret;
@@ -897,11 +898,12 @@
event_cb,
0, /* event_type ignored */
handler,
- user_data);
+ user_data,
+ new_handler_id);
} else {
error = ret;
}
- *handler_id = 0; /* TODO */
+ *handler_id = new_handler_id;
return error;
}
@@ -925,15 +927,28 @@
event_cb,
event_type,
handler,
- user_data);
+ user_data,
+ new_handler_id);
+
if (event_type == MUALI_EVENT_LOWMEM_BOTH
&& error == MUALI_ERROR_SUCCESS) {
- error = muali_set_event_handler(context,
- NULL,
- MUALI_EVENT_LOWMEM_ON,
- handler,
- user_data,
- handler_id);
+ /* set lowmem_on handler with the same
+ * handler id */
+ object_path = USER_LOWMEM_ON_SIGNAL_OP;
+ interface = USER_LOWMEM_ON_SIGNAL_IF;
+ match = "type='signal',interface='"
+ USER_LOWMEM_ON_SIGNAL_IF "'";
+ error = _set_handler(context,
+ service,
+ object_path,
+ interface,
+ NULL,
+ match,
+ event_cb,
+ event_type,
+ handler,
+ user_data,
+ new_handler_id);
}
break;
case MUALI_EVENT_LOWMEM_ON:
@@ -952,12 +967,13 @@
event_cb,
event_type,
handler,
- user_data);
+ user_data,
+ new_handler_id);
break;
default:
ULOG_ERR_F("unknown event type %d", event_type);
error = MUALI_ERROR_INVALID;
}
- *handler_id = 0; /* TODO */
+ *handler_id = new_handler_id;
return error;
}
Modified: projects/haf/trunk/libosso/src/osso-init.c
===================================================================
--- projects/haf/trunk/libosso/src/osso-init.c 2006-12-04 15:32:45 UTC (rev 8606)
+++ projects/haf/trunk/libosso/src/osso-init.c 2006-12-04 15:36:27 UTC (rev 8607)
@@ -302,6 +302,7 @@
}
osso->cp_plugins = g_array_new(FALSE, FALSE, sizeof(_osso_cp_plugin_t));
osso->rpc_timeout = -1;
+ osso->next_handler_id = 1;
return osso;
}
@@ -731,7 +732,7 @@
return TRUE;
}
-static gboolean set_handler_helper(osso_context_t *osso,
+static int set_handler_helper(osso_context_t *osso,
const char *service,
const char *object_path,
const char *interface,
@@ -749,13 +750,14 @@
handler = calloc(1, sizeof(_osso_handler_t));
if (handler == NULL) {
ULOG_ERR_F("calloc() failed");
- return FALSE;
+ return 0;
}
handler->handler = cb;
handler->data = data;
handler->method = method;
handler->can_free_data = can_free_data;
+ handler->handler_id = osso->next_handler_id++;
/* warn about the old element if it exists */
old = g_hash_table_lookup(osso->uniq_hash, uniq_key);
@@ -783,7 +785,7 @@
if (new_elem == NULL) {
ULOG_ERR_F("calloc() failed");
free(handler);
- return FALSE;
+ return 0;
}
new_key = strdup(uniq_key);
@@ -791,14 +793,19 @@
ULOG_ERR_F("strdup() failed");
free(handler);
free(new_elem);
- return FALSE;
+ return 0;
}
new_elem->handlers = g_list_append(NULL, handler);
g_hash_table_insert(osso->uniq_hash, new_key, new_elem);
}
- return add_to_if_hash(osso, handler, interface);
+
+ if (add_to_if_hash(osso, handler, interface)) {
+ return handler->handler_id;
+ } else {
+ return 0;
+ }
}
void __attribute__ ((visibility("hidden")))
Modified: projects/haf/trunk/libosso/src/osso-internal.h
===================================================================
--- projects/haf/trunk/libosso/src/osso-internal.h 2006-12-04 15:32:45 UTC (rev 8606)
+++ projects/haf/trunk/libosso/src/osso-internal.h 2006-12-04 15:36:27 UTC (rev 8607)
@@ -159,6 +159,8 @@
osso_hw_state_t hw_state;
guint rpc_timeout;
GArray *cp_plugins;
+ int next_handler_id; /* next available handler id, unique in this
+ context */
} _osso_af_context_t, _muali_context_t;
typedef struct _muali_context_t {
@@ -184,6 +186,8 @@
osso_hw_state_t hw_state;
guint rpc_timeout;
GArray *cp_plugins;
+ int next_handler_id; /* next available handler id, unique in this
+ context */
} _muali_this_type_is_not_used_t;
# ifdef LIBOSSO_DEBUG
- Previous message: [maemo-commits] r8606 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r8608 - projects/haf/trunk/libosso/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
