jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/tools/erigo.git/commit/?id=5bd4e4f904ce40c84753aa6db3255901235e4c8f

commit 5bd4e4f904ce40c84753aa6db3255901235e4c8f
Author: Daniel Zaoui <daniel.za...@samsung.com>
Date:   Mon Nov 9 14:27:34 2015 +0200

    Undo/redo: add debug prints
---
 src/lib/undoredo.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/src/lib/undoredo.c b/src/lib/undoredo.c
index d6715c0..6c30eff 100644
--- a/src/lib/undoredo.c
+++ b/src/lib/undoredo.c
@@ -2,6 +2,13 @@
 #include "egui_log.h"
 #include "gui_widget.h"
 
+#define DEBUGON 1
+#ifdef DEBUGON
+# define undo_debug(fmt, args...) fprintf(stderr, __FILE__":%s/%d : " fmt 
"\n", __FUNCTION__, __LINE__, ##args)
+#else
+# define undo_debug(x...) do { } while (0)
+#endif
+
 struct _Memento_Command
 {
    Eid *eid; // wdg, action...
@@ -72,6 +79,25 @@ struct _Memento
    Eina_Bool finalized : 1;
 };
 
+static const char *
+_memento_type_get_as_string(Memento_Type type)
+{
+   switch(type)
+     {
+      case MEMENTO_PROPERTY:              return "Property memento";
+      case MEMENTO_ACTION:                return "Action memento";
+      case MEMENTO_CALLBACK:              return "Callback memento";
+      case MEMENTO_CALLBACK_ADD_DEL:      return "Callback add/del memento";
+      case MEMENTO_OBJ_CONTAINER:         return "Object container memento";
+      case MEMENTO_ITEM_CONTAINER_ITEM:   return "Item container memento";
+      case MEMENTO_WIDGET:                return "Widget add/del memento";
+      case MEMENTO_WIDGET_PARENT:         return "Widget parent memento";
+      case MEMENTO_WIDGET_NAME:           return "Widget name memento";
+      case MEMENTO_WIDGET_PUBLIC:         return "Widget public memento";
+      default:                            return NULL;
+     }
+}
+
 /* Create new Memento Item */
 Eina_Bool
 memento_command_add(Eid *eid, Memento_Type type, void *old_pointer, void 
*new_pointer)
@@ -294,6 +320,10 @@ memento_finalize(Memento *memento)
                         cmd->eid == cmd_next->eid &&
                         cmd->new_ptr == cmd_next->old_ptr)
                     {
+                       undo_debug("Merging %s on %p: %p -> %p -> %p",
+                             _memento_type_get_as_string(cmd->type),
+                             cmd->eid, cmd->old_ptr, cmd->new_ptr,
+                             cmd_next->new_ptr);
                        /* Swap pointers in order to properly unref data. */
                        void *tmp = cmd->new_ptr;
                        cmd->new_ptr = cmd_next->new_ptr;
@@ -307,6 +337,9 @@ memento_finalize(Memento *memento)
                }
              if (cmd->old_ptr == cmd->new_ptr)
                {
+                  undo_debug("Deleting %s on %p: %p -> %p",
+                        _memento_type_get_as_string(cmd->type),
+                        cmd->eid, cmd->old_ptr, cmd->new_ptr);
                   cmd_del = EINA_TRUE;
                   break;
                }
@@ -319,7 +352,7 @@ memento_finalize(Memento *memento)
                   to_list = obj_container_contents_list_get(cmd->new_ptr);
                   if (eina_list_count(from_list) != eina_list_count(to_list)) 
continue;
                   cmd_del = EINA_TRUE;
-                  while (from_list)
+                  while (from_list && cmd_del)
                     {
                        if 
(obj_container_item_eid_get(eina_list_data_get(from_list)) !=
                            
obj_container_item_eid_get(eina_list_data_get(to_list)))
@@ -331,7 +364,13 @@ memento_finalize(Memento *memento)
                        from_list = eina_list_next(from_list);
                        to_list = eina_list_next(to_list);
                     }
-                  if (cmd_del) break;
+                  if (cmd_del)
+                    {
+                       undo_debug("Deleting %s on %p: %p -> %p",
+                             _memento_type_get_as_string(cmd->type),
+                             cmd->eid, cmd->old_ptr, cmd->new_ptr);
+                       break;
+                    }
                }
              if (cmd->type == MEMENTO_PROPERTY)
                {
@@ -347,6 +386,9 @@ memento_finalize(Memento *memento)
                        wdg_prop_remove(wdg, cmd->new_ptr);
                        wdg_prop_add(wdg, cmd->old_ptr);
                        cmd_del = EINA_TRUE;
+                       undo_debug("Deleting %s on %p: %p -> %p",
+                             _memento_type_get_as_string(cmd->type),
+                             cmd->eid, cmd->old_ptr, cmd->new_ptr);
                        break;
                     }
                }

-- 


Reply via email to