[maemo-commits] [maemo-commits] r17998 - in projects/haf/trunk/libmatchbox2: . matchbox/core

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu Apr 2 14:58:47 EEST 2009
Author: gw
Date: 2009-04-02 14:58:44 +0300 (Thu, 02 Apr 2009)
New Revision: 17998

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-decor.c
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-main-context.c
Log:
	* matchbox/core/mb-wm-main-context.c: Removed accidentally checked
	in code
	* matchbox/core/mb-wm-decor.c: Fixed NB#109094 - crash caused by
	clicking on title bar button repeatedly very quickly


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-04-02 11:48:52 UTC (rev 17997)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-04-02 11:58:44 UTC (rev 17998)
@@ -1,5 +1,12 @@
 2009-04-02  Gordon Williams  <gordon.williams at collabora.co.uk>
 
+	* matchbox/core/mb-wm-main-context.c: Removed accidentally checked
+	in code
+	* matchbox/core/mb-wm-decor.c: Fixed NB#109094 - crash caused by
+	clicking on title bar button repeatedly very quickly
+
+2009-04-02  Gordon Williams  <gordon.williams at collabora.co.uk>
+
 	* matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c: More fixes for
 	  g_object_unref - deal with weak reference on clutter
 	  actors.

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-decor.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-decor.c	2009-04-02 11:48:52 UTC (rev 17997)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-decor.c	2009-04-02 11:58:44 UTC (rev 17998)
@@ -670,11 +670,12 @@
 
   while (l)
     {
-      MBWMList * old = l;
+      MBWMList * next = l->next;
       mb_wm_decor_button_unrealize((MBWMDecorButton *)l->data);
       mb_wm_object_unref (MB_WM_OBJECT (l->data));
-      l = l->next;
-      free (old);
+      l = next;
+      /* we don't free, because the dispose handler of the decor button
+       * removes itself */
     }
 
   if (decor->press_cb_id)
@@ -1103,12 +1104,16 @@
 static void
 mb_wm_decor_button_destroy (MBWMObject* obj)
 {
-  //MBWMDecorButton * button = MB_WM_DECOR_BUTTON (obj);
-  /*
-   * We are doing the job in the mb_wm_decor_button_unrealize() while the
-   * decoration still exists.
-   */
+  MBWMDecorButton * button = MB_WM_DECOR_BUTTON (obj);
 
+  /* unrealise ourselves */
+  if (button->realized)
+    mb_wm_decor_button_unrealize(button);
+
+  /* remove ourselves from the list of buttons in decor */
+  if (button->decor)
+    button->decor->buttons = mb_wm_util_list_remove(button->decor->buttons,
+                                                    button);
 }
 
 static void

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-main-context.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-main-context.c	2009-04-02 11:48:52 UTC (rev 17997)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-main-context.c	2009-04-02 11:58:44 UTC (rev 17998)
@@ -170,17 +170,15 @@
 }
 
 static inline void
-call_handlers_for_event (MBWMList *iter_base,
+call_handlers_for_event (MBWMList *iter,
 			 void *event,
 			 Window xwin
 			 )
 {
-  MBWMList *iter = iter_base;
   while (iter)
     {
       MBWMXEventFuncInfo *i = iter->data;
       MBWMList        *next = iter->next;
-      MBWMList        *iter_check = iter_base;
 
       if (i && (i->xwindow == None || i->xwindow == xwin))
 	{
@@ -196,10 +194,6 @@
 	    }
 	}
 
-      while (iter_check && iter_check!=next)
-        iter_check = iter_check->next;
-      g_assert(iter_check == next);
-
       iter = next;
     }
 }


More information about the maemo-commits mailing list