]> Dogcows Code - chaz/openbox/blobdiff - openbox/popup.c
Fix some memleaks.
[chaz/openbox] / openbox / popup.c
index 071f5b62e2c5d9a40208170d40a27cb449a7450f..15d1bf52bed291cb342b3ffee40263003e407468 100644 (file)
@@ -58,6 +58,7 @@ ObPopup *popup_new(void)
     XMapWindow(ob_display, self->text);
 
     stacking_add(INTERNAL_AS_WINDOW(self));
+    g_hash_table_insert(window_map, &self->bg, self);
     return self;
 }
 
@@ -68,6 +69,7 @@ void popup_free(ObPopup *self)
         XDestroyWindow(ob_display, self->text);
         RrAppearanceFree(self->a_bg);
         RrAppearanceFree(self->a_text);
+        g_hash_table_remove(window_map, &self->bg);
         stacking_remove(self);
         g_free(self);
     }
@@ -255,6 +257,8 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
     x=MAX(MIN(x, area->x+area->width-w),area->x);
     y=MAX(MIN(y, area->y+area->height-h),area->y);
 
+    g_free(area);
+
     if (m == screen_num_monitors) {
         RECT_SET(mon, x, y, w, h);
         m = screen_find_monitor(&mon);
@@ -264,6 +268,8 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
 
         x=MAX(MIN(x, area->x+area->width-w),area->x);
         y=MAX(MIN(y, area->y+area->height-h),area->y);
+
+        g_free(area);
     }
 
     /* set the windows/appearances up */
@@ -299,8 +305,6 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
             popup_show_timeout(self);
         }
     }
-
-    g_free(area);
 }
 
 void popup_hide(ObPopup *self)
This page took 0.020959 seconds and 4 git commands to generate.