Enlightenment CVS committal Author : urandom Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/lib Modified Files: etk_signal.c etk_signal.h Log Message: - [Etk_Signal] new function: etk_signal_disconnect_all =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_signal.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- etk_signal.c 13 Jan 2007 19:29:19 -0000 1.22 +++ etk_signal.c 10 Feb 2007 16:55:42 -0000 1.23 @@ -268,6 +268,37 @@ } /** + * @brief Disconnects all callbacks from a signal + * @param signal_name the name of the signal for which all callbacks will be disconnected + * @param object the object for which all callbacks will be disconnected + */ +void etk_signal_disconnect_all(const char *signal_name, Etk_Object *object) +{ + Etk_Signal *signal; + Evas_List *callbacks; + Etk_Signal_Callback *signal_callback; + + if (!object || !signal_name) + return; + + if (!(signal = etk_signal_lookup(signal_name, etk_object_object_type_get(object)))) + { + ETK_WARNING("Invalid signal disconnection: the object type \"%s\" doesn't have a signal called \"%s\"", + object->type->name, signal_name); + return; + } + + callbacks = NULL; + etk_object_signal_callbacks_get(object, signal, &callbacks); + while (callbacks) + { + signal_callback = callbacks->data; + etk_object_signal_callback_remove(object, signal_callback); + callbacks = evas_list_remove_list(callbacks, callbacks); + } +} + +/** * @brief Blocks a callback from being called when the corresponding signal is emitted. Unlike etk_signal_disconnect(), * the callback is note removed, and can be easily unblock with etk_signal_unblock() * @param signal_name the name of the signal connected to the callback to block =================================================================== RCS file: /cvs/e/e17/libs/etk/src/lib/etk_signal.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- etk_signal.h 13 Jan 2007 16:20:11 -0000 1.13 +++ etk_signal.h 10 Feb 2007 16:55:42 -0000 1.14 @@ -45,6 +45,7 @@ void etk_signal_connect_swapped(const char *signal_name, Etk_Object *object, Etk_Callback callback, void *data); void etk_signal_connect_full(Etk_Signal *signal, Etk_Object *object, Etk_Callback callback, void *data, Etk_Bool swapped, Etk_Bool after); void etk_signal_disconnect(const char *signal_name, Etk_Object *object, Etk_Callback callback); +void etk_signal_disconnect_all(const char *signal_name, Etk_Object *object); void etk_signal_block(const char *signal_name, Etk_Object *object, Etk_Callback callback); void etk_signal_unblock(const char *signal_name, Etk_Object *object, Etk_Callback callback); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs