Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_object.c etk_object.h etk_signal.c etk_signal_callback.c 


Log Message:
* [Object] The default-handler is now called before all the callbacks 
when a signal is emitted. Since the calling order is changed, the 
behavior  of some things may be different. Please tell me if you 
notice some thing that has not a correct behaviour anymore.


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_object.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- etk_object.c        20 Oct 2006 17:51:44 -0000      1.30
+++ etk_object.c        13 Jan 2007 05:52:40 -0000      1.31
@@ -54,7 +54,7 @@
  * @internal
  * @brief Shutdowns the object system: it frees all the created objects
  */
-void etk_object_shutdown()
+void etk_object_shutdown(void)
 {
    while (_etk_object_objects)
       _etk_object_free(_etk_object_objects);
@@ -66,7 +66,7 @@
  * @brief Frees the objects that have been marked as "destroyed".
  * It's called at the start of each iteration of the main loop
  */
-void etk_object_purge()
+void etk_object_purge(void)
 {
    Etk_Object *object, *next;
    
@@ -82,8 +82,9 @@
  * @internal
  * @brief Gets the type of an Etk_Object
  * @return Returns the type of an Etk_Object
+ * TODO: improve the doc, its confusing here (with 
etk_object_object_type_get()) (or rename those functions...)
  */
-Etk_Type *etk_object_type_get()
+Etk_Type *etk_object_type_get(void)
 {
    static Etk_Type *object_type = NULL;
 
@@ -158,7 +159,7 @@
 }
 
 /**
- * @brief Destroys the object: it first sets the weak pointers to NULL, emits 
the "destroyed" signal, and then
+ * @brief Destroys the object: it first sets the weak-pointers to NULL, emits 
the "destroyed" signal, and then
  * queues the object in the list of objects to free. Thus, the destructors 
will only be called at the beginning of the
  * next main loop iteration (from the destructor of the more derived class to 
the destructor of the ultimate base class).
  * @param object the object to destroy
@@ -173,12 +174,12 @@
 
    etk_object_name_set(object, NULL);
    
-   /* Sets the weak pointers to NULL */
-   while (object->weak_pointers_list)
+   /* Sets the weak-pointers to NULL */
+   while (object->weak_pointers)
    {
-      weak_pointer = object->weak_pointers_list->data;
+      weak_pointer = object->weak_pointers->data;
       *weak_pointer =  NULL;
-      object->weak_pointers_list = 
evas_list_remove_list(object->weak_pointers_list, object->weak_pointers_list);
+      object->weak_pointers = evas_list_remove_list(object->weak_pointers, 
object->weak_pointers);
    }
    
    object->destroy_me = ETK_TRUE;
@@ -186,7 +187,7 @@
 }
 
 /**
- * @brief Sets the name of the object. The object can then be retrieved from 
this name with etk_object_name_find()
+ * @brief Sets the name of the object. The object can then be retrieved from 
his name with etk_object_name_find()
  * @param object an object
  * @param name the name to set
  * @see etk_object_name_find()
@@ -279,11 +280,11 @@
 
 /**
  * @internal
- * @brief Adds @a signal_callback to the list of the signal callbacks of the 
object
+ * @brief Adds @a signal_callback to the list of the signal-callbacks of the 
object
  * @param object an object
- * @param signal_callback the signal callback to add
- * @param after if @a after is ETK_TRUE, the callback will be called after the 
default handler.
- * Otherwise, it will be called before.
+ * @param signal_callback the signal-callback to add
+ * @param after if @a after is ETK_TRUE, the callback will be called after all 
the other callbacks already connected
+ * to this signal, otherwise it will be called before (default behaviour)
  * @note You do not have to call this function, use etk_signal_connect() 
instead
  */
 void etk_object_signal_callback_add(Etk_Object *object, Etk_Signal_Callback 
*signal_callback, Etk_Bool after)
@@ -292,16 +293,16 @@
       return;
 
    if (after)
-      object->after_signal_callbacks_list = 
evas_list_append(object->after_signal_callbacks_list, signal_callback);
+      object->signal_callbacks = evas_list_append(object->signal_callbacks, 
signal_callback);
    else
-      object->before_signal_callbacks_list = 
evas_list_prepend(object->before_signal_callbacks_list, signal_callback);
+      object->signal_callbacks = evas_list_prepend(object->signal_callbacks, 
signal_callback);
 }
 
 /**
  * @internal
- * @brief Removes @a signal_callback from the list of the signal callbacks of 
the object
+ * @brief Removes @a signal_callback from the list of the signal-callbacks of 
the object
  * @param object an object
- * @param signal_callback the signal callback to remove
+ * @param signal_callback the signal-callback to remove
  * @note You do not have have to call this function, use 
etk_signal_disconnect() instead
  */
 void etk_object_signal_callback_remove(Etk_Object *object, Etk_Signal_Callback 
*signal_callback)
@@ -311,29 +312,22 @@
    if (!object || !signal_callback)
       return;
    
-   if ((l = evas_list_find_list(object->before_signal_callbacks_list, 
signal_callback)))
+   if ((l = evas_list_find_list(object->signal_callbacks, signal_callback)))
    {
       etk_signal_callback_del(l->data);
-      object->before_signal_callbacks_list = 
evas_list_remove_list(object->before_signal_callbacks_list, l);
-   }
-   if ((l = evas_list_find_list(object->after_signal_callbacks_list, 
signal_callback)))
-   {
-      etk_signal_callback_del(l->data);
-      object->after_signal_callbacks_list = 
evas_list_remove_list(object->after_signal_callbacks_list, l);
+      object->signal_callbacks = 
evas_list_remove_list(object->signal_callbacks, l);
    }
 }
 
 /**
  * @internal
- * @brief Gets the signal callbacks connected to the signal @a signal of the 
object @a object
+ * @brief Gets the signal-callbacks connected to the signal @a signal of the 
object @a object
  * @param object the object connected to the signal
- * @param signal the signal of which we want the callbacks
- * @param callbacks the location of a list where the signal callbacks will be 
appended
- * @param after if @a after == ETK_TRUE, it appends only the callbacks that 
have to be called after the
- * default handler. Otherwise, it appends the callbacks called before the 
default handler
+ * @param signal the signal which we want the callbacks of
+ * @param callbacks the location of a list where the signal-callbacks will be 
appended
  * @note You usually do not need to call this function manually, it is used by 
etk_signal_emit()
  */
-void etk_object_signal_callbacks_get(Etk_Object *object, Etk_Signal *signal, 
Evas_List **callbacks, Etk_Bool after)
+void etk_object_signal_callbacks_get(Etk_Object *object, Etk_Signal *signal, 
Evas_List **callbacks)
 {
    Evas_List *l;
    Etk_Signal_Callback *callback;
@@ -341,8 +335,7 @@
    if (!object || !signal || !callbacks)
       return;
 
-   l = after ? object->after_signal_callbacks_list : 
object->before_signal_callbacks_list;
-   for ( ; l; l = l->next)
+   for (l = object->signal_callbacks; l; l = l->next)
    {
       callback = l->data;
       if (callback->signal == signal)
@@ -351,10 +344,10 @@
 }
 
 /**
- * @brief Adds a weak pointer to the object. A weak pointer is a pointer that 
will be automatically set
+ * @brief Adds a weak-pointer to the object. A weak-pointer is a pointer that 
will be automatically set
  * to NULL when the object is destroyed
  * @param object an object
- * @param pointer_location the location of the weak pointer
+ * @param pointer_location the location of the weak-pointer
  * @warning if the @a pointer_location is not accessible when the object is 
destroyed, it may segfaults. So you have
  * to use etk_object_weak_pointer_remove() when @a pointer_location becomes 
inaccessible
  * @see etk_object_weak_pointer_remove()
@@ -363,23 +356,23 @@
 {
    if (!object || !pointer_location || object->destroy_me)
       return;
-   if (evas_list_find(object->weak_pointers_list, pointer_location))
+   if (evas_list_find(object->weak_pointers, pointer_location))
       return;
    
-   object->weak_pointers_list = evas_list_append(object->weak_pointers_list, 
pointer_location);
+   object->weak_pointers = evas_list_append(object->weak_pointers, 
pointer_location);
 }
 
 /**
- * @brief Removes a weak pointer from the object
+ * @brief Removes a weak-pointer from the object
  * @param object an object
- * @param pointer_location the location of the weak pointer to remove
+ * @param pointer_location the location of the weak-pointer to remove
  * @see etk_object_weak_pointer_add()
  */
 void etk_object_weak_pointer_remove(Etk_Object *object, void 
**pointer_location)
 {
    if (!object || !pointer_location)
       return;
-   object->weak_pointers_list = evas_list_remove(object->weak_pointers_list, 
pointer_location);
+   object->weak_pointers = evas_list_remove(object->weak_pointers, 
pointer_location);
 }
 
 /**
@@ -596,7 +589,7 @@
 
    if (!object || !property_name)
       return object;
-   if (!(callbacks = evas_hash_find(object->notification_callbacks_hash, 
property_name)))
+   if (!(callbacks = evas_hash_find(object->notification_callbacks, 
property_name)))
       return object;
    
    /* We use a copy of the callback list here to avoid potential bugs
@@ -637,11 +630,11 @@
    if (!object || !property_name || !callback)
       return;
 
-   if (!(list = evas_hash_find(object->notification_callbacks_hash, 
property_name)))
+   if (!(list = evas_hash_find(object->notification_callbacks, property_name)))
    {
       list = malloc(sizeof(Evas_List *));
       *list = NULL;
-      object->notification_callbacks_hash = 
evas_hash_add(object->notification_callbacks_hash, property_name, list);
+      object->notification_callbacks = 
evas_hash_add(object->notification_callbacks, property_name, list);
    }
 
    new_callback = malloc(sizeof(Etk_Notification_Callback));
@@ -664,7 +657,7 @@
 
    if (!object || !property_name || !callback)
       return;
-   if (!(list = evas_hash_find(object->notification_callbacks_hash, 
property_name)))
+   if (!(list = evas_hash_find(object->notification_callbacks, property_name)))
       return;
 
    for (l = *list; l; )
@@ -693,10 +686,9 @@
 
    object->name = NULL;
    object->data_hash = NULL;
-   object->before_signal_callbacks_list = NULL;
-   object->after_signal_callbacks_list = NULL;
-   object->notification_callbacks_hash = NULL;
-   object->weak_pointers_list = NULL;
+   object->signal_callbacks = NULL;
+   object->notification_callbacks = NULL;
+   object->weak_pointers = NULL;
    object->destroy_me = ETK_FALSE;
    
    /* Append the new object to the list */
@@ -718,21 +710,15 @@
    evas_hash_foreach(object->data_hash, _etk_object_data_free_cb, NULL);
    evas_hash_free(object->data_hash);
    
-   while (object->before_signal_callbacks_list)
-   {
-      etk_signal_callback_del(object->before_signal_callbacks_list->data);
-      object->before_signal_callbacks_list = 
evas_list_remove_list(object->before_signal_callbacks_list,
-         object->before_signal_callbacks_list);
-   }
-   while (object->after_signal_callbacks_list)
+   while (object->signal_callbacks)
    {
-      etk_signal_callback_del(object->after_signal_callbacks_list->data);
-      object->after_signal_callbacks_list = 
evas_list_remove_list(object->after_signal_callbacks_list,
-         object->after_signal_callbacks_list);
+      etk_signal_callback_del(object->signal_callbacks->data);
+      object->signal_callbacks = 
evas_list_remove_list(object->signal_callbacks,
+         object->signal_callbacks);
    }
    
-   evas_hash_foreach(object->notification_callbacks_hash, 
_etk_object_notification_callbacks_free_cb, NULL);
-   evas_hash_free(object->notification_callbacks_hash);
+   evas_hash_foreach(object->notification_callbacks, 
_etk_object_notification_callbacks_free_cb, NULL);
+   evas_hash_free(object->notification_callbacks);
 }
 
 /* Sets the property whose id is "property_id" to the value "value" */
@@ -852,7 +838,7 @@
  * etk_object_new() automatically calls the corresponding constructors of the 
object, from the constructor of
  * the base class to the constructor of the more derived class. @n
  *
- * You can then destroy the object with etk_object_destroy(): it sets the weak 
pointers of the object to NULL
+ * You can then destroy the object with etk_object_destroy(): it sets the 
weak-pointers of the object to NULL
  * (see etk_object_weak_pointer_add()), emits the "destroyed" signal and 
queues the object for freeing. Thus, the
  * destructors will only be called at the beginning of the next main loop 
iteration (from the destructor of the more
  * derived class to the destructor of the ultimate base class). You should 
then not assume that etk_object_destroy()
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_object.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- etk_object.h        20 Oct 2006 17:51:44 -0000      1.13
+++ etk_object.h        13 Jan 2007 05:52:40 -0000      1.14
@@ -53,20 +53,19 @@
    char *name;
    Evas_Hash *data_hash;
    
-   Evas_List *before_signal_callbacks_list;
-   Evas_List *after_signal_callbacks_list;
-   Evas_Hash *notification_callbacks_hash;
-   Evas_List *weak_pointers_list;
+   Evas_List *signal_callbacks;
+   Evas_Hash *notification_callbacks;
+   Evas_List *weak_pointers;
    Etk_Bool destroy_me;
    
    Etk_Object *prev;
    Etk_Object *next;
 };
 
-void etk_object_shutdown();
-void etk_object_purge();
+void etk_object_shutdown(void);
+void etk_object_purge(void);
 
-Etk_Type   *etk_object_type_get();
+Etk_Type   *etk_object_type_get(void);
 Etk_Object *etk_object_new(Etk_Type *object_type, const char *first_property, 
...);
 Etk_Object *etk_object_new_valist(Etk_Type *object_type, const char 
*first_property, va_list args);
 void        etk_object_destroy(Etk_Object *object);
@@ -80,7 +79,7 @@
 
 void etk_object_signal_callback_add(Etk_Object *object, Etk_Signal_Callback 
*signal_callback, Etk_Bool after);
 void etk_object_signal_callback_remove(Etk_Object *object, Etk_Signal_Callback 
*signal_callback);
-void etk_object_signal_callbacks_get(Etk_Object *object, Etk_Signal *signal, 
Evas_List **callbacks, Etk_Bool after);
+void etk_object_signal_callbacks_get(Etk_Object *object, Etk_Signal *signal, 
Evas_List **callbacks);
 
 void etk_object_weak_pointer_add(Etk_Object *object, void **pointer_location);
 void etk_object_weak_pointer_remove(Etk_Object *object, void 
**pointer_location);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_signal.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- etk_signal.c        13 Jan 2007 05:19:11 -0000      1.19
+++ etk_signal.c        13 Jan 2007 05:52:40 -0000      1.20
@@ -256,7 +256,7 @@
    }
    
    callbacks = NULL;
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_FALSE);
+   etk_object_signal_callbacks_get(object, signal, &callbacks);
    while (callbacks)
    {
       signal_callback = callbacks->data;
@@ -264,15 +264,6 @@
          etk_object_signal_callback_remove(object, signal_callback);
       callbacks = evas_list_remove_list(callbacks, callbacks);
    }
-   
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_TRUE);
-   while (callbacks)
-   {
-      signal_callback = callbacks->data;
-      if (signal_callback->callback == callback)
-         etk_object_signal_callback_remove(object, signal_callback);
-      callbacks = evas_list_remove_list(callbacks, callbacks);
-   }   
 }
 
 /**
@@ -299,16 +290,7 @@
    }
    
    callbacks = NULL;
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_FALSE);
-   while (callbacks)
-   {
-      signal_callback = callbacks->data;
-      if (signal_callback->callback == callback)
-         etk_signal_callback_block(signal_callback);
-      callbacks = evas_list_remove_list(callbacks, callbacks);
-   }
-   
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_TRUE);
+   etk_object_signal_callbacks_get(object, signal, &callbacks);
    while (callbacks)
    {
       signal_callback = callbacks->data;
@@ -342,16 +324,7 @@
    }
    
    callbacks = NULL;
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_FALSE);
-   while (callbacks)
-   {
-      signal_callback = callbacks->data;
-      if (signal_callback->callback == callback)
-         etk_signal_callback_unblock(signal_callback);
-      callbacks = evas_list_remove_list(callbacks, callbacks);
-   }
-   
-   etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_TRUE);
+   etk_object_signal_callbacks_get(object, signal, &callbacks);
    while (callbacks)
    {
       signal_callback = callbacks->data;
@@ -452,31 +425,8 @@
    
    va_copy(args2, args);
 
-   /* We call the callbacks to call before the default handler */
-   if (object_ptr)
-   {
-      callbacks = NULL;
-      etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_FALSE);
-      while (!emitted_signal->stop_emission && callbacks && object_ptr)
-      {
-         callback = callbacks->data;
-         if (!return_value_set || !signal->accumulator)
-         {
-            etk_signal_callback_call_valist(callback, object, return_value, 
args2);
-            return_value_set = ETK_TRUE;
-         }
-         else
-         {
-            etk_signal_callback_call_valist(callback, object, result, args2);
-            signal->accumulator(return_value, result, signal->accum_data);
-         }
-         callbacks = evas_list_remove_list(callbacks, callbacks);
-      }
-      callbacks = evas_list_free(callbacks);
-   }
-
    /* Calls the default handler */
-   if (object_ptr && !emitted_signal->stop_emission && signal->handler_offset 
>= 0 && signal->marshaller)
+   if (signal->handler_offset >= 0 && signal->marshaller)
    {
       Etk_Callback *default_handler;
 
@@ -495,12 +445,12 @@
          }
       }
    }
-   
-   /* We call the callbacks to call after the default handler */
+
+   /* Then we call the corresponding callbacks */
    if (object_ptr)
    {
       callbacks = NULL;
-      etk_object_signal_callbacks_get(object, signal, &callbacks, ETK_TRUE);
+      etk_object_signal_callbacks_get(object, signal, &callbacks);
       while (!emitted_signal->stop_emission && callbacks && object_ptr)
       {
          callback = callbacks->data;
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_signal_callback.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- etk_signal_callback.c       13 Jan 2007 05:19:11 -0000      1.8
+++ etk_signal_callback.c       13 Jan 2007 05:52:40 -0000      1.9
@@ -17,14 +17,14 @@
 
 /**
  * @internal
- * @brief Creates a new signal callback for the signal @a signal, using the 
callback function @a callback, and
+ * @brief Creates a new signal-callback for the signal @a signal, using the 
callback function @a callback, and
  * associated to user data @a data
  * @param signal the signal to which this callback should be added
  * @param callback the callback function to call when the signal is emitted
  * @param data the user data to pass to the callback function
  * @param swapped if @a swapped is ETK_TRUE, the callback function will be 
called with the data as the only argument
- * @return Returns the new signal callback on success or NULL on failure
- * @warning The new signal callback has to be freed with 
etk_signal_callback_del()
+ * @return Returns the new signal-callback on success or NULL on failure
+ * @warning The new signal-callback has to be freed with 
etk_signal_callback_del()
  */
 Etk_Signal_Callback *etk_signal_callback_new(Etk_Signal *signal, Etk_Callback 
callback, void *data, Etk_Bool swapped)
 {
@@ -45,8 +45,8 @@
 
 /**
  * @internal
- * @brief Deletes the signal callback
- * @param signal_callback the signal callback to delete
+ * @brief Deletes the signal-callback
+ * @param signal_callback the signal-callback to delete
  */
 void etk_signal_callback_del(Etk_Signal_Callback *signal_callback)
 {
@@ -55,8 +55,8 @@
 
 /**
  * @internal
- * @brief Calls the signal callback @a callback on the object @a object
- * @param callback the signal callback to call
+ * @brief Calls the signal-callback @a callback on the object @a object
+ * @param callback the signal-callback to call
  * @param object the object to call the callback on
  * @param return_value the location for the return value (if none, it can be 
NULL)
  * @param ... the arguments to pass to the callback
@@ -77,7 +77,7 @@
 /**
  * @internal
  * @brief Calls the callback @a callback on the object @a object
- * @param callback the signal callback to call
+ * @param callback the signal-callback to call
  * @param object the object to call the callback on
  * @param return_value the location for the return value (if none, it can be 
NULL)
  * @param args the arguments to pass to the callback



-------------------------------------------------------------------------
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

Reply via email to