Enlightenment CVS committal Author : rephorm Project : e17 Module : proto
Dir : e17/proto/e_dbus/src/lib/dbus Modified Files: E_DBus.h e_dbus_message.c e_dbus_util.c Log Message: include errors in method return callbacks =================================================================== RCS file: /cvs/e/e17/proto/e_dbus/src/lib/dbus/E_DBus.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- E_DBus.h 11 Jul 2007 00:47:11 -0000 1.10 +++ E_DBus.h 11 Jul 2007 00:47:19 -0000 1.11 @@ -112,7 +112,7 @@ * @param event_data a struct containing the return data. */ typedef void (*E_DBus_Callback_Func) (void *user_data, void *method_return, DBusError *error); -typedef DBusMessage *(*E_DBus_Unmarshal_Func) (DBusMessage *msg); +typedef DBusMessage *(*E_DBus_Unmarshal_Func) (DBusMessage *msg, DBusError *err); typedef struct E_DBus_Callback E_DBus_Callback; struct E_DBus_Callback @@ -126,7 +126,7 @@ void e_dbus_callback_free(E_DBus_Callback *callback); void e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error); -void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg); +void *e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err); const char *e_dbus_basic_type_as_string(int type); =================================================================== RCS file: /cvs/e/e17/proto/e_dbus/src/lib/dbus/e_dbus_message.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_dbus_message.c 11 Jul 2007 00:47:11 -0000 1.4 +++ e_dbus_message.c 11 Jul 2007 00:47:19 -0000 1.5 @@ -89,12 +89,19 @@ { E_DBus_Callback *cb = data; void *method_return = NULL; + DBusError new_err; if (!cb) return; + dbus_error_init(&new_err); if (!dbus_error_is_set(err)) - method_return = e_dbus_callback_unmarshal(cb, msg); + method_return = e_dbus_callback_unmarshal(cb, msg, &new_err); + else + dbus_move_error(err, &new_err); - e_dbus_callback_call(cb, method_return, err); + e_dbus_callback_call(cb, method_return, &new_err); + + if (dbus_error_is_set(&new_err)) + dbus_error_free(&new_err); } DBusPendingCall * =================================================================== RCS file: /cvs/e/e17/proto/e_dbus/src/lib/dbus/e_dbus_util.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- e_dbus_util.c 11 Jul 2007 00:47:11 -0000 1.4 +++ e_dbus_util.c 11 Jul 2007 00:47:19 -0000 1.5 @@ -39,12 +39,11 @@ cb->cb_func(cb->user_data, data, error); } -//XXX this probably should be passed an error pointer void * -e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg) +e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err) { if (cb && cb->unmarshal_func) - return cb->unmarshal_func(msg); + return cb->unmarshal_func(msg, err); else return NULL; } ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs