Use g_slice instead of mem chunks.

2005-12-05  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkwidget.c:
	* gtk/gtkuimanager.c:
	* gtk/gtktreedatalist.c:
	* gtk/gtktext.c:
	* gtk/gtkmain.c:
	* gtk/gtkitemfactory.c:
	* gtk/gtkseparator.[hc]:
	* gtk/gtkclist.[hc]:
	* gtk/gtkctree.c:
	* gtk/gtkgc.c: Use g_slice instead of mem chunks.
This commit is contained in:
Matthias Clasen 2005-12-05 21:28:32 +00:00 committed by Matthias Clasen
parent 40894e9a49
commit 7dc70fba99
12 changed files with 56 additions and 131 deletions

View File

@ -1,3 +1,16 @@
2005-12-05 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkwidget.c:
* gtk/gtkuimanager.c:
* gtk/gtktreedatalist.c:
* gtk/gtktext.c:
* gtk/gtkmain.c:
* gtk/gtkitemfactory.c:
* gtk/gtkseparator.[hc]:
* gtk/gtkclist.[hc]:
* gtk/gtkctree.c:
* gtk/gtkgc.c: Use g_slice instead of mem chunks.
2005-12-05 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkevents-x11.c: map the new GtkSettings properties

View File

@ -1,3 +1,16 @@
2005-12-05 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkwidget.c:
* gtk/gtkuimanager.c:
* gtk/gtktreedatalist.c:
* gtk/gtktext.c:
* gtk/gtkmain.c:
* gtk/gtkitemfactory.c:
* gtk/gtkseparator.[hc]:
* gtk/gtkclist.[hc]:
* gtk/gtkctree.c:
* gtk/gtkgc.c: Use g_slice instead of mem chunks.
2005-12-05 Michael Natterer <mitch@imendio.com>
* gdk/x11/gdkevents-x11.c: map the new GtkSettings properties

View File

@ -46,9 +46,6 @@
/* length of button_actions array */
#define MAX_BUTTON 5
/* the number rows memchunk expands at a time */
#define CLIST_OPTIMUM_SIZE 64
/* the width of the column resize windows */
#define DRAG_WIDTH 6
@ -1014,9 +1011,6 @@ gtk_clist_init (GtkCList *clist)
GTK_CLIST_SET_FLAG (clist, CLIST_DRAW_DRAG_LINE);
GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS);
clist->row_mem_chunk = NULL;
clist->cell_mem_chunk = NULL;
clist->freeze_count = 0;
clist->rows = 0;
@ -1092,23 +1086,6 @@ gtk_clist_constructor (GType type,
construct_properties);
GtkCList *clist = GTK_CLIST (object);
/* initalize memory chunks, if this has not been done by any
* possibly derived widget
*/
if (!clist->row_mem_chunk)
clist->row_mem_chunk = g_mem_chunk_new ("clist row mem chunk",
sizeof (GtkCListRow),
sizeof (GtkCListRow) *
CLIST_OPTIMUM_SIZE,
G_ALLOC_AND_FREE);
if (!clist->cell_mem_chunk)
clist->cell_mem_chunk = g_mem_chunk_new ("clist cell mem chunk",
sizeof (GtkCell) * clist->columns,
sizeof (GtkCell) * clist->columns *
CLIST_OPTIMUM_SIZE,
G_ALLOC_AND_FREE);
/* allocate memory for columns */
clist->column = columns_new (clist);
@ -4438,9 +4415,6 @@ gtk_clist_finalize (GObject *object)
columns_delete (clist);
g_mem_chunk_destroy (clist->cell_mem_chunk);
g_mem_chunk_destroy (clist->row_mem_chunk);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@ -6374,8 +6348,8 @@ row_new (GtkCList *clist)
int i;
GtkCListRow *clist_row;
clist_row = g_chunk_new (GtkCListRow, clist->row_mem_chunk);
clist_row->cell = g_chunk_new (GtkCell, clist->cell_mem_chunk);
clist_row = g_slice_new (GtkCListRow);
clist_row->cell = g_slice_new (GtkCell);
for (i = 0; i < clist->columns; i++)
{
@ -6424,8 +6398,8 @@ row_delete (GtkCList *clist,
if (clist_row->destroy)
clist_row->destroy (clist_row->data);
g_mem_chunk_free (clist->cell_mem_chunk, clist_row->cell);
g_mem_chunk_free (clist->row_mem_chunk, clist_row);
g_slice_free (GtkCell, clist_row->cell);
g_slice_free (GtkCListRow, clist_row);
}
/* FOCUS FUNCTIONS

View File

@ -151,9 +151,8 @@ struct _GtkCList
guint16 flags;
/* mem chunks */
GMemChunk *row_mem_chunk;
GMemChunk *cell_mem_chunk;
gpointer reserved1;
gpointer reserved2;
guint freeze_count;

View File

@ -567,23 +567,11 @@ gtk_ctree_set_arg (GtkObject *object,
switch (arg_id)
{
case ARG_N_COLUMNS: /* construct-only arg, only set at construction time */
g_return_if_fail (clist->row_mem_chunk == NULL);
clist->columns = MAX (1, GTK_VALUE_UINT (*arg));
clist->row_mem_chunk = g_mem_chunk_new ("ctree row mem chunk",
sizeof (GtkCTreeRow),
sizeof (GtkCTreeRow)
* CLIST_OPTIMUM_SIZE,
G_ALLOC_AND_FREE);
clist->cell_mem_chunk = g_mem_chunk_new ("ctree cell mem chunk",
sizeof (GtkCell) * clist->columns,
sizeof (GtkCell) * clist->columns
* CLIST_OPTIMUM_SIZE,
G_ALLOC_AND_FREE);
ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
break;
case ARG_TREE_COLUMN: /* construct-only arg, only set at construction time */
ctree->tree_column = GTK_VALUE_UINT (*arg);
if (clist->row_mem_chunk)
ctree->tree_column = CLAMP (ctree->tree_column, 0, clist->columns);
break;
case ARG_INDENT:
@ -3207,8 +3195,8 @@ row_new (GtkCTree *ctree)
int i;
clist = GTK_CLIST (ctree);
ctree_row = g_chunk_new (GtkCTreeRow, clist->row_mem_chunk);
ctree_row->row.cell = g_chunk_new (GtkCell, clist->cell_mem_chunk);
ctree_row = g_slice_new (GtkCTreeRow);
ctree_row->row.cell = g_slice_new (GtkCell);
for (i = 0; i < clist->columns; i++)
{
@ -3294,8 +3282,8 @@ row_delete (GtkCTree *ctree,
dnotify (ddata);
}
g_mem_chunk_free (clist->cell_mem_chunk, ctree_row->row.cell);
g_mem_chunk_free (clist->row_mem_chunk, ctree_row);
g_slice_free (GtkCell, ctree_row->row.cell);
g_slice_free (GtkCListRow, ctree_row);
}
static void

View File

@ -65,8 +65,6 @@ static gint gtk_gc_drawable_equal (GtkGCDrawable *a,
static gint initialize = TRUE;
static GCache *gc_cache = NULL;
static GMemChunk *key_mem_chunk = NULL;
GdkGC*
gtk_gc_get (gint depth,
@ -143,11 +141,7 @@ gtk_gc_key_dup (GtkGCKey *key)
{
GtkGCKey *new_key;
if (!key_mem_chunk)
key_mem_chunk = g_mem_chunk_new ("key mem chunk", sizeof (GtkGCKey),
1024, G_ALLOC_AND_FREE);
new_key = g_chunk_new (GtkGCKey, key_mem_chunk);
new_key = g_slice_new (GtkGCKey);
*new_key = *key;
@ -157,7 +151,7 @@ gtk_gc_key_dup (GtkGCKey *key)
static void
gtk_gc_key_destroy (GtkGCKey *key)
{
g_mem_chunk_free (key_mem_chunk, key);
g_slice_free (GtkGCKey, key);
}
static gpointer

View File

@ -84,8 +84,6 @@ static void gtk_item_factory_finalize (GObject *object);
static GtkItemFactoryClass *gtk_item_factory_class = NULL;
static gpointer parent_class = NULL;
static const gchar item_factory_string[] = "Gtk-<ItemFactory>";
static GMemChunk *ifactory_item_chunks = NULL;
static GMemChunk *ifactory_cb_data_chunks = NULL;
static GQuark quark_popup_data = 0;
static GQuark quark_if_menu_pos = 0;
static GQuark quark_item_factory = 0;
@ -148,16 +146,6 @@ gtk_item_factory_class_init (GtkItemFactoryClass *class)
object_class->destroy = gtk_item_factory_destroy;
class->item_ht = g_hash_table_new (g_str_hash, g_str_equal);
ifactory_item_chunks =
g_mem_chunk_new ("GtkItemFactoryItem",
sizeof (GtkItemFactoryItem),
sizeof (GtkItemFactoryItem) * ITEM_BLOCK_SIZE,
G_ALLOC_ONLY);
ifactory_cb_data_chunks =
g_mem_chunk_new ("GtkIFCBData",
sizeof (GtkIFCBData),
sizeof (GtkIFCBData) * ITEM_BLOCK_SIZE,
G_ALLOC_AND_FREE);
quark_popup_data = g_quark_from_static_string ("GtkItemFactory-popup-data");
quark_if_menu_pos = g_quark_from_static_string ("GtkItemFactory-menu-position");
@ -289,7 +277,7 @@ gtk_item_factory_add_foreign (GtkWidget *accel_widget,
item = g_hash_table_lookup (class->item_ht, full_path);
if (!item)
{
item = g_chunk_new (GtkItemFactoryItem, ifactory_item_chunks);
item = g_slice_new (GtkItemFactoryItem);
item->path = g_strdup (full_path);
item->widgets = NULL;
@ -333,7 +321,7 @@ gtk_item_factory_add_foreign (GtkWidget *accel_widget,
static void
ifactory_cb_data_free (gpointer mem)
{
g_mem_chunk_free (ifactory_cb_data_chunks, mem);
g_slice_free (GtkIFCBData, mem);
}
static void
@ -369,7 +357,7 @@ gtk_item_factory_add_item (GtkItemFactory *ifactory,
{
GtkIFCBData *data;
data = g_chunk_new (GtkIFCBData, ifactory_cb_data_chunks);
data = g_slice_new (GtkIFCBData);
data->func = callback;
data->callback_type = callback_type;
data->func_data = callback_data;

View File

@ -144,8 +144,6 @@ static GList *init_functions = NULL; /* A list of init functions.
*/
static GList *quit_functions = NULL; /* A list of quit functions.
*/
static GMemChunk *quit_mem_chunk = NULL;
static GSList *key_snoopers = NULL;
guint gtk_debug_flags = 0; /* Global GTK debug flag */
@ -1693,11 +1691,7 @@ gtk_quit_add_full (guint main_level,
g_return_val_if_fail ((function != NULL) || (marshal != NULL), 0);
if (!quit_mem_chunk)
quit_mem_chunk = g_mem_chunk_new ("quit mem chunk", sizeof (GtkQuitFunction),
512, G_ALLOC_AND_FREE);
quitf = g_chunk_new (GtkQuitFunction, quit_mem_chunk);
quitf = g_slice_new (GtkQuitFunction);
quitf->id = quit_id++;
quitf->main_level = main_level;
@ -1716,7 +1710,7 @@ gtk_quit_destroy (GtkQuitFunction *quitf)
{
if (quitf->destroy)
quitf->destroy (quitf->data);
g_mem_chunk_free (quit_mem_chunk, quitf);
g_slice_free (GtkQuitFunction, quitf);
}
static gint

View File

@ -442,10 +442,6 @@ static void gtk_text_show_props (GtkText* test,
#define TEXT_SHOW_ADJ(text,adj,msg)
#endif
/* Memory Management. */
static GMemChunk *params_mem_chunk = NULL;
static GMemChunk *text_property_chunk = NULL;
static GtkWidgetClass *parent_class = NULL;
@ -735,12 +731,6 @@ gtk_text_init (GtkText *text)
text->freeze_count = 0;
if (!params_mem_chunk)
params_mem_chunk = g_mem_chunk_new ("LineParams",
sizeof (LineParams),
256 * sizeof (LineParams),
G_ALLOC_AND_FREE);
text->default_tab_width = 4;
text->tab_stops = NULL;
@ -2293,7 +2283,7 @@ line_params_iterate (GtkText* text,
for (;;)
{
if (alloc)
lp = g_chunk_new (LineParams, params_mem_chunk);
lp = g_slice_new (LineParams);
else
lp = &lpbuf;
@ -2977,15 +2967,7 @@ new_text_property (GtkText *text, GdkFont *font, const GdkColor* fore,
{
TextProperty *prop;
if (text_property_chunk == NULL)
{
text_property_chunk = g_mem_chunk_new ("text property mem chunk",
sizeof(TextProperty),
1024*sizeof(TextProperty),
G_ALLOC_AND_FREE);
}
prop = g_chunk_new(TextProperty, text_property_chunk);
prop = g_slice_new (TextProperty);
prop->flags = 0;
if (font)
@ -3022,7 +3004,7 @@ destroy_text_property (TextProperty *prop)
if (prop->font)
text_font_unref (prop->font);
g_mem_chunk_free (text_property_chunk, prop);
g_slice_free (TextProperty, prop);
}
/* Flop the memory between the point and the gap around like a
@ -3778,7 +3760,7 @@ free_cache (GtkText* text)
}
for (; cache; cache = cache->next)
g_mem_chunk_free (params_mem_chunk, cache->data);
g_slice_free (LineParams, cache->data);
g_list_free (text->line_start_cache);
@ -3804,7 +3786,7 @@ remove_cache_line (GtkText* text, GList* member)
list = member->next;
g_mem_chunk_free (params_mem_chunk, member->data);
g_slice_free (LineParams, member->data);
g_list_free_1 (member);
return list;

View File

@ -24,8 +24,6 @@
#include "gtktreedatalist.h"
#include "gtkalias.h"
#include <string.h>
static GMemChunk *tree_chunk = NULL;
#define TREE_CHUNK_PREALLOCS 64
/* node allocation
*/
@ -34,14 +32,7 @@ _gtk_tree_data_list_alloc (void)
{
GtkTreeDataList *list;
if (tree_chunk == NULL)
tree_chunk = g_mem_chunk_new ("treedatalist mem chunk",
sizeof (GtkTreeDataList),
sizeof (GtkTreeDataList) * TREE_CHUNK_PREALLOCS,
G_ALLOC_AND_FREE);
list = g_chunk_new (GtkTreeDataList, tree_chunk);
memset (list, 0, sizeof (GtkTreeDataList));
list = g_slice_new0 (GtkTreeDataList);
return list;
}
@ -65,7 +56,7 @@ _gtk_tree_data_list_free (GtkTreeDataList *list,
else if (g_type_is_a (column_headers [i], G_TYPE_BOXED) && tmp->data.v_pointer != NULL)
g_boxed_free (column_headers [i], (gpointer) tmp->data.v_pointer);
g_mem_chunk_free (tree_chunk, tmp);
g_slice_free (GtkTreeDataList, tmp);
i++;
tmp = next;
}

View File

@ -166,8 +166,6 @@ enum
static GObjectClass *parent_class = NULL;
static guint ui_manager_signals[LAST_SIGNAL] = { 0 };
static GMemChunk *merge_node_chunk = NULL;
GType
gtk_ui_manager_get_type (void)
{
@ -205,10 +203,6 @@ gtk_ui_manager_class_init (GtkUIManagerClass *klass)
gobject_class = G_OBJECT_CLASS (klass);
if (!merge_node_chunk)
merge_node_chunk = g_mem_chunk_create (Node, 64,
G_ALLOC_AND_FREE);
gobject_class->finalize = gtk_ui_manager_finalize;
gobject_class->set_property = gtk_ui_manager_set_property;
gobject_class->get_property = gtk_ui_manager_get_property;
@ -893,7 +887,7 @@ get_child_node (GtkUIManager *self,
{
Node *mnode;
mnode = g_chunk_new0 (Node, merge_node_chunk);
mnode = g_slice_new0 (Node);
mnode->type = node_type;
mnode->name = g_strndup (childname, childname_length);
@ -933,7 +927,7 @@ get_child_node (GtkUIManager *self,
{
Node *mnode;
mnode = g_chunk_new0 (Node, merge_node_chunk);
mnode = g_slice_new0 (Node);
mnode->type = node_type;
mnode->name = g_strndup (childname, childname_length);
mnode->dirty = TRUE;
@ -1001,7 +995,7 @@ free_node (GNode *node)
if (info->extra)
g_object_unref (info->extra);
g_free (info->name);
g_chunk_free (info, merge_node_chunk);
g_slice_free (Node, info);
return FALSE;
}

View File

@ -236,7 +236,6 @@ static void gtk_widget_get_draw_rectangle (GtkWidget *widget,
/* --- variables --- */
static gpointer parent_class = NULL;
static guint widget_signals[LAST_SIGNAL] = { 0 };
static GMemChunk *aux_info_mem_chunk = NULL;
static GtkStyle *gtk_default_style = NULL;
static GSList *colormap_stack = NULL;
static guint composite_child_stack = 0;
@ -6942,11 +6941,7 @@ _gtk_widget_get_aux_info (GtkWidget *widget,
aux_info = g_object_get_qdata (G_OBJECT (widget), quark_aux_info);
if (!aux_info && create)
{
if (!aux_info_mem_chunk)
aux_info_mem_chunk = g_mem_chunk_new ("widget aux info mem chunk",
sizeof (GtkWidgetAuxInfo),
1024, G_ALLOC_AND_FREE);
aux_info = g_chunk_new (GtkWidgetAuxInfo, aux_info_mem_chunk);
aux_info = g_slice_new (GtkWidgetAuxInfo);
aux_info->width = -1;
aux_info->height = -1;
@ -6971,7 +6966,7 @@ _gtk_widget_get_aux_info (GtkWidget *widget,
static void
gtk_widget_aux_info_destroy (GtkWidgetAuxInfo *aux_info)
{
g_mem_chunk_free (aux_info_mem_chunk, aux_info);
g_slice_free (GtkWidgetAuxInfo, aux_info);
}
static void