X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fplace.c;h=836c215d9239e27a3aeeae6c4d2ef1bf8032e3b1;hb=bcc31faf7ecd8b0ad3b66a75fc72145e93e6c35a;hp=c396e8fa64677675509790e5d1ef860780295de7;hpb=6014a41760a107d817422aa5412ccf0ce3fc6e92;p=chaz%2Fopenbox diff --git a/openbox/place.c b/openbox/place.c index c396e8fa..836c215d 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -107,9 +107,8 @@ static Rect **pick_head(ObClient *c) screen_pointer_pos(&px, &py); for (i = 0; i < screen_num_monitors; i++) { - Rect *monitor = screen_physical_area_monitor(i); + Rect const *monitor = screen_physical_area_monitor(i); gboolean contain = RECT_CONTAINS(*monitor, px, py); - g_free(monitor); if (contain) { add_choice(choice, i); ob_debug("placement adding choice %d for mouse pointer", i); @@ -150,7 +149,7 @@ static gboolean place_random(ObClient *client, gint *x, gint *y) else *y = areas[i]->y; for (i = 0; i < screen_num_monitors; ++i) - g_free(areas[i]); + g_slice_free(Rect, areas[i]); g_free(areas); return TRUE; @@ -158,7 +157,7 @@ static gboolean place_random(ObClient *client, gint *x, gint *y) static GSList* area_add(GSList *list, Rect *a) { - Rect *r = g_new(Rect, 1); + Rect *r = g_slice_new(Rect); *r = *a; return g_slist_prepend(list, r); } @@ -210,7 +209,7 @@ static GSList* area_remove(GSList *list, Rect *a) } /* 'r' is not being added to the result list, so free it */ - g_free(r); + g_slice_free(Rect, r); } } g_slist_free(list); @@ -332,14 +331,14 @@ static gboolean place_nooverlap(ObClient *c, gint *x, gint *y) } while (spaces) { - g_free(spaces->data); + g_slice_free(Rect, spaces->data); spaces = g_slist_delete_link(spaces, spaces); } } } for (i = 0; i < screen_num_monitors; ++i) - g_free(areas[i]); + g_slice_free(Rect, areas[i]); g_free(areas); return ret; } @@ -364,6 +363,8 @@ static gboolean place_under_mouse(ObClient *client, gint *x, gint *y) *y = py - client->area.height / 2 - client->frame->size.top; *y = MIN(MAX(*y, t), b); + g_slice_free(Rect, area); + return TRUE; } @@ -394,7 +395,7 @@ static gboolean place_per_app_setting(ObClient *client, gint *x, gint *y, /* don't free the first one, it's being set as "screen" */ for (i = 1; i < screen_num_monitors; ++i) - g_free(areas[i]); + g_slice_free(Rect, areas[i]); g_free(areas); } @@ -414,7 +415,7 @@ static gboolean place_per_app_setting(ObClient *client, gint *x, gint *y, else *y = screen->y + settings->position.y.pos; - g_free(screen); + g_slice_free(Rect, screen); return TRUE; } @@ -460,7 +461,7 @@ static gboolean place_transient_splash(ObClient *client, gint *x, gint *y) *y = (areas[0]->height - client->frame->area.height) / 2 + areas[0]->y; for (i = 0; i < screen_num_monitors; ++i) - g_free(areas[i]); + g_slice_free(Rect, areas[i]); g_free(areas); return TRUE; }