Enlightenment CVS committal Author : sebastid Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/bin Modified Files: ecore_dbus_hal_test.c ecore_dbus_test.c Log Message: Use callbacks for method return, not events =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/bin/ecore_dbus_hal_test.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ecore_dbus_hal_test.c 27 Jul 2006 13:29:43 -0000 1.2 +++ ecore_dbus_hal_test.c 27 Jul 2006 15:06:13 -0000 1.3 @@ -7,13 +7,16 @@ static int ecore_dbus_event_server_add(void *udata, int ev_type, void *ev); static int ecore_dbus_event_server_del(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_server_method_return(void *udata, int ev_type, void *ev); + +static void ecore_dbus_method_name_has_owner_cb(void *data, Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *reply); +static void ecore_dbus_method_add_match_cb(void *data, Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *reply); + static int ecore_dbus_event_server_signal(void *udata, int ev_type, void *ev); static const char *event_type_get(Ecore_DBus_Message_Type type); -static int state = 0; - static Ecore_DBus_Server *svr = NULL; int @@ -38,8 +41,6 @@ ecore_dbus_event_server_add, NULL); handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_DEL, ecore_dbus_event_server_del, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_METHOD_RETURN, - ecore_dbus_event_server_method_return, NULL); handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_SIGNAL, ecore_dbus_event_server_signal, NULL); @@ -61,8 +62,8 @@ event = ev; printf("ecore_dbus_event_server_add\n"); - ecore_dbus_method_name_has_owner(event->server, "org.freedesktop.Hal"); - state++; + ecore_dbus_method_name_has_owner(event->server, "org.freedesktop.Hal", + ecore_dbus_method_name_has_owner_cb, NULL); return 0; } @@ -78,54 +79,58 @@ return 0; } -static int -ecore_dbus_event_server_method_return(void *udata, int ev_type, void *ev) +static void +ecore_dbus_method_name_has_owner_cb(void *data, Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *reply) { - Ecore_DBus_Event_Server_Data *event; - - event = ev; - printf("ecore_dbus_event_server_method_return %s %s.%s\n", event_type_get(event->type), - event->header.interface, - event->header.member); - printf("state: %d\n", state); - if (state == 1) - { - int *exists; - - exists = event->args[0].value; - if ((!exists) || (!*exists)) - { - printf("No hal\n"); - ecore_main_loop_quit(); - } - else - { - printf("Add listener for devices\n"); - ecore_dbus_method_add_match(event->server, - "type='signal'," - "interface='org.freedesktop.Hal.Manager'," - "sender='org.freedesktop.Hal'," - "path='/org/freedesktop/Hal/Manager'"); - - state++; - } + unsigned int *exists; + if (type != ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN) + { + ecore_main_loop_quit(); + return; } - else if (state == 2) + printf("ecore_dbus_event_server_method_return %s %s.%s\n", event_type_get(reply->type), + reply->header.interface, + reply->header.member); + + exists = reply->args[0].value; + if ((!exists) || (!*exists)) { - printf("Should be listening for device changes!\n"); + printf("No hal\n"); + ecore_main_loop_quit(); } else { - printf("Hm: %s\n", event->header.member); - ecore_dbus_message_print(event->message); + printf("Add listener for devices\n"); + ecore_dbus_method_add_match(reply->server, + "type='signal'," + "interface='org.freedesktop.Hal.Manager'," + "sender='org.freedesktop.Hal'," + "path='/org/freedesktop/Hal/Manager'", + ecore_dbus_method_add_match_cb, NULL); + } - return 0; +} + +static void +ecore_dbus_method_add_match_cb(void *data, Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *reply) +{ + if (type != ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN) + { + ecore_main_loop_quit(); + return; + } + printf("ecore_dbus_event_server_method_return %s %s.%s\n", event_type_get(reply->type), + reply->header.interface, + reply->header.member); + printf("Should be listening for device changes!\n"); } static int ecore_dbus_event_server_signal(void *udata, int ev_type, void *ev) { - Ecore_DBus_Event_Server_Data *event; + Ecore_DBus_Event_Server_Signal *event; event = ev; printf("ecore_dbus_event_server_signal %s %s.%s\n", event_type_get(event->type), =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/bin/ecore_dbus_test.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_dbus_test.c 27 Jul 2006 13:29:43 -0000 1.8 +++ ecore_dbus_test.c 27 Jul 2006 15:06:13 -0000 1.9 @@ -7,7 +7,10 @@ static int ecore_dbus_event_server_add(void *udata, int ev_type, void *ev); static int ecore_dbus_event_server_del(void *udata, int ev_type, void *ev); -static int ecore_dbus_event_server_method_return(void *udata, int ev_type, void *ev); + +static void ecore_dbus_method_list_names_cb(void *data, + Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *ev); static const char * event_type_get(Ecore_DBus_Message_Type type); @@ -34,12 +37,10 @@ ecore_dbus_event_server_add, NULL); handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_DEL, ecore_dbus_event_server_del, NULL); - handler[i++] = ecore_event_handler_add(ECORE_DBUS_EVENT_SERVER_METHOD_RETURN, - ecore_dbus_event_server_method_return, NULL); ecore_main_loop_begin(); - for (i = 0; i < 3; i++) + for (i = 0; i < 2; i++) ecore_event_handler_del(handler[i]); if (svr) ecore_dbus_server_del(svr); @@ -55,7 +56,7 @@ event = ev; printf("ecore_dbus_event_server_add\n"); - ecore_dbus_method_list_names(event->server); + ecore_dbus_method_list_names(event->server, ecore_dbus_method_list_names_cb, NULL); return 0; } @@ -71,19 +72,19 @@ return 0; } -static int -ecore_dbus_event_server_method_return(void *udata, int ev_type, void *ev) +static void +ecore_dbus_method_list_names_cb(void *data, + Ecore_DBus_Message_Type type, + Ecore_DBus_Method_Return *reply) { - Ecore_DBus_Event_Server_Data *event; Ecore_List *names; - event = ev; - printf("ecore_dbus_event_server_data %s %s.%s\n", event_type_get(event->type), - event->header.interface, - event->header.member); + printf("ecore_dbus_event_server_data %s %s.%s\n", event_type_get(reply->type), + reply->header.interface, + reply->header.member); - printf("Got names %c\n", event->args[0].type); - names = event->args[0].value; + names = reply->args[0].value; + printf("Got names %c\n", reply->args[0].type); if (names) { char *name; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs