From: Dana Jansens Date: Fri, 12 Feb 2010 18:44:10 +0000 (-0500) Subject: using g_slice_new() instead of g_new() part 1 X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=1d57f7b08590255e57dd5931a1993507b4f116c2;p=chaz%2Fopenbox using g_slice_new() instead of g_new() part 1 --- diff --git a/openbox/actions/moveresizeto.c b/openbox/actions/moveresizeto.c index f0472797..68b4c0b2 100644 --- a/openbox/actions/moveresizeto.c +++ b/openbox/actions/moveresizeto.c @@ -174,8 +174,8 @@ static gboolean run_func(ObActionsData *data, gpointer options) client_configure(c, x, y, w, h, TRUE, TRUE, FALSE); actions_client_move(data, FALSE); - g_free(area); - g_free(carea); + g_slice_free(Rect, area); + g_slice_free(Rect, carea); } return FALSE; diff --git a/openbox/client.c b/openbox/client.c index 2f9cfb8f..481d7d2b 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -150,7 +150,7 @@ static void client_call_notifies(ObClient *self, GSList *list) void client_add_destroy_notify(ObClientCallback func, gpointer data) { - ClientCallback *d = g_new(ClientCallback, 1); + ClientCallback *d = g_slice_new(ClientCallback); d->func = func; d->data = data; client_destroy_notifies = g_slist_prepend(client_destroy_notifies, d); @@ -163,7 +163,7 @@ void client_remove_destroy_notify(ObClientCallback func) for (it = client_destroy_notifies; it; it = g_slist_next(it)) { ClientCallback *d = it->data; if (d->func == func) { - g_free(d); + g_slice_free(ClientCallback, d); client_destroy_notifies = g_slist_delete_link(client_destroy_notifies, it); break; @@ -221,7 +221,7 @@ void client_manage(Window window, ObPrompt *prompt) /* create the ObClient struct, and populate it from the hints on the window */ - self = g_new0(ObClient, 1); + self = g_slice_new0(ObClient); self->obwin.type = OB_WINDOW_CLASS_CLIENT; self->window = window; self->prompt = prompt; @@ -347,7 +347,7 @@ void client_manage(Window window, ObPrompt *prompt) place.x = r->x; place.y = r->y; ob_debug("Moving buggy app from (0,0) to (%d,%d)", r->x, r->y); - g_free(r); + g_slice_free(Rect, r); } /* make sure the window is visible. */ @@ -420,7 +420,7 @@ void client_manage(Window window, ObPrompt *prompt) place.width -= self->frame->size.left + self->frame->size.right; place.height -= self->frame->size.top + self->frame->size.bottom; - g_free(a); + g_slice_free(Rect, a); } ob_debug("placing window 0x%x at %d, %d with size %d x %d. " @@ -518,7 +518,7 @@ ObClient *client_fake_manage(Window window) /* do this minimal stuff to figure out the client's decorations */ - self = g_new0(ObClient, 1); + self = g_slice_new0(ObClient); self->window = window; client_get_all(self, FALSE); @@ -695,7 +695,7 @@ void client_unmanage(ObClient *self) g_free(self->role); g_free(self->client_machine); g_free(self->sm_client_id); - g_free(self); + g_slice_free(ObClient, self); } void client_fake_unmanage(ObClient *self) @@ -1085,7 +1085,7 @@ gboolean client_find_onscreen(ObClient *self, gint *x, gint *y, gint w, gint h, if (rudeb && !self->strut.bottom && *y + fh > a->y + a->height) *y = a->y + MAX(0, a->height - fh); - g_free(a); + g_slice_free(Rect, a); } /* get where the client should be */ @@ -2877,7 +2877,7 @@ void client_try_configure(ObClient *self, gint *x, gint *y, gint *w, gint *h, user = FALSE; /* ignore if the client can't be moved/resized when it is maximizing */ - g_free(a); + g_slice_free(Rect, a); } /* gets the client's position */ @@ -4253,7 +4253,7 @@ void client_find_edge_directional(ObClient *self, ObDirection dir, Rect *area = screen_area(self->desktop, i, NULL); detect_edge(*area, dir, my_head, my_size, my_edge_start, my_edge_size, dest, near_edge); - g_free(area); + g_slice_free(Rect, area); } /* search for edges of clients */ @@ -4284,7 +4284,7 @@ void client_find_edge_directional(ObClient *self, ObDirection dir, my_edge_size, dest, near_edge); } - g_free(a); + g_slice_free(Rect, a); } void client_find_move_directional(ObClient *self, ObDirection dir, diff --git a/openbox/place.c b/openbox/place.c index c396e8fa..cf4d3048 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -150,7 +150,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; @@ -339,7 +339,7 @@ static gboolean place_nooverlap(ObClient *c, gint *x, gint *y) } 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 +364,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 +396,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 +416,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 +462,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; } diff --git a/openbox/resist.c b/openbox/resist.c index dc4e2d70..8df7ceed 100644 --- a/openbox/resist.c +++ b/openbox/resist.c @@ -202,7 +202,7 @@ void resist_move_monitors(ObClient *c, gint resist, gint *x, gint *y) else if (cb <= pb && b > pb && b < pb + resist) *y = pb - h + 1; - g_free(area); + g_slice_free(Rect, area); g_free(parea); } @@ -414,7 +414,7 @@ void resist_size_monitors(ObClient *c, gint resist, gint *w, gint *h, break; } - g_free(area); + g_slice_free(Rect, area); g_free(parea); } } diff --git a/openbox/screen.c b/openbox/screen.c index cbcaad79..0bd56591 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -1298,11 +1298,14 @@ typedef struct { } ObScreenStrut; #define RESET_STRUT_LIST(sl) \ - (g_slist_free(sl), sl = NULL) + while (sl) { \ + g_slice_free(ObScreenStrut, (sl)->data); \ + sl = g_slist_delete_link(sl, sl); \ + } #define ADD_STRUT_TO_LIST(sl, d, s) \ { \ - ObScreenStrut *ss = g_new(ObScreenStrut, 1); \ + ObScreenStrut *ss = g_slice_new(ObScreenStrut); \ ss->desktop = d; \ ss->strut = s; \ sl = g_slist_prepend(sl, ss); \ @@ -1436,7 +1439,7 @@ void screen_update_areas(void) dims[i*4+1] = area->y; dims[i*4+2] = area->width; dims[i*4+3] = area->height; - g_free(area); + g_slice_free(Rect, area); } /* set the legacy workarea hint to the union of all the monitors */ @@ -1608,7 +1611,7 @@ Rect* screen_area(guint desktop, guint head, Rect *search) } } - a = g_new(Rect, 1); + a = g_slice_new(Rect); a->x = l; a->y = t; a->width = r - l + 1; diff --git a/openbox/screen.h b/openbox/screen.h index 94085398..8c6a5570 100644 --- a/openbox/screen.h +++ b/openbox/screen.h @@ -135,6 +135,7 @@ Rect *screen_physical_area_primary(gboolean fixed); /*! @param head is the number of the head or one of SCREEN_AREA_ALL_MONITORS, SCREEN_AREA_ONE_MONITOR @param search NULL or the whole monitor(s) + @return A Rect allocated with g_slice_new() */ Rect* screen_area(guint desktop, guint head, Rect *search);