Avoid relocations for the list of standard atoms.
2005-12-27 Matthias Clasen <mclasen@redhat.com> * gdk/x11/gdkproperty-x11.c: Avoid relocations for the list of standard atoms.
This commit is contained in:
committed by
Matthias Clasen
parent
779c7ea8df
commit
86838ffd06
@ -1,5 +1,8 @@
|
|||||||
2005-12-27 Matthias Clasen <mclasen@redhat.com>
|
2005-12-27 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gdk/x11/gdkproperty-x11.c: Avoid relocations for the list
|
||||||
|
of standard atoms.
|
||||||
|
|
||||||
* gtk/gtkbindings.c (gtk_binding_set_new): Avoid copying
|
* gtk/gtkbindings.c (gtk_binding_set_new): Avoid copying
|
||||||
the set_name by interning it.
|
the set_name by interning it.
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
2005-12-27 Matthias Clasen <mclasen@redhat.com>
|
2005-12-27 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gdk/x11/gdkproperty-x11.c: Avoid relocations for the list
|
||||||
|
of standard atoms.
|
||||||
|
|
||||||
* gtk/gtkbindings.c (gtk_binding_set_new): Avoid copying
|
* gtk/gtkbindings.c (gtk_binding_set_new): Avoid copying
|
||||||
the set_name by interning it.
|
the set_name by interning it.
|
||||||
|
|
||||||
|
|||||||
@ -42,81 +42,90 @@
|
|||||||
static GPtrArray *virtual_atom_array;
|
static GPtrArray *virtual_atom_array;
|
||||||
static GHashTable *virtual_atom_hash;
|
static GHashTable *virtual_atom_hash;
|
||||||
|
|
||||||
static const gchar *const XAtomsStrings[] = {
|
static const gchar xatoms_string[] =
|
||||||
/* These are all the standard predefined X atoms */
|
/* These are all the standard predefined X atoms */
|
||||||
"NONE",
|
"NONE\0"
|
||||||
"PRIMARY",
|
"PRIMARY\0"
|
||||||
"SECONDARY",
|
"SECONDARY\0"
|
||||||
"ARC",
|
"ARC\0"
|
||||||
"ATOM",
|
"ATOM\0"
|
||||||
"BITMAP",
|
"BITMAP\0"
|
||||||
"CARDINAL",
|
"CARDINAL\0"
|
||||||
"COLORMAP",
|
"COLORMAP\0"
|
||||||
"CURSOR",
|
"CURSOR\0"
|
||||||
"CUT_BUFFER0",
|
"CUT_BUFFER0\0"
|
||||||
"CUT_BUFFER1",
|
"CUT_BUFFER1\0"
|
||||||
"CUT_BUFFER2",
|
"CUT_BUFFER2\0"
|
||||||
"CUT_BUFFER3",
|
"CUT_BUFFER3\0"
|
||||||
"CUT_BUFFER4",
|
"CUT_BUFFER4\0"
|
||||||
"CUT_BUFFER5",
|
"CUT_BUFFER5\0"
|
||||||
"CUT_BUFFER6",
|
"CUT_BUFFER6\0"
|
||||||
"CUT_BUFFER7",
|
"CUT_BUFFER7\0"
|
||||||
"DRAWABLE",
|
"DRAWABLE\0"
|
||||||
"FONT",
|
"FONT\0"
|
||||||
"INTEGER",
|
"INTEGER\0"
|
||||||
"PIXMAP",
|
"PIXMAP\0"
|
||||||
"POINT",
|
"POINT\0"
|
||||||
"RECTANGLE",
|
"RECTANGLE\0"
|
||||||
"RESOURCE_MANAGER",
|
"RESOURCE_MANAGER\0"
|
||||||
"RGB_COLOR_MAP",
|
"RGB_COLOR_MAP\0"
|
||||||
"RGB_BEST_MAP",
|
"RGB_BEST_MAP\0"
|
||||||
"RGB_BLUE_MAP",
|
"RGB_BLUE_MAP\0"
|
||||||
"RGB_DEFAULT_MAP",
|
"RGB_DEFAULT_MAP\0"
|
||||||
"RGB_GRAY_MAP",
|
"RGB_GRAY_MAP\0"
|
||||||
"RGB_GREEN_MAP",
|
"RGB_GREEN_MAP\0"
|
||||||
"RGB_RED_MAP",
|
"RGB_RED_MAP\0"
|
||||||
"STRING",
|
"STRING\0"
|
||||||
"VISUALID",
|
"VISUALID\0"
|
||||||
"WINDOW",
|
"WINDOW\0"
|
||||||
"WM_COMMAND",
|
"WM_COMMAND\0"
|
||||||
"WM_HINTS",
|
"WM_HINTS\0"
|
||||||
"WM_CLIENT_MACHINE",
|
"WM_CLIENT_MACHINE\0"
|
||||||
"WM_ICON_NAME",
|
"WM_ICON_NAME\0"
|
||||||
"WM_ICON_SIZE",
|
"WM_ICON_SIZE\0"
|
||||||
"WM_NAME",
|
"WM_NAME\0"
|
||||||
"WM_NORMAL_HINTS",
|
"WM_NORMAL_HINTS\0"
|
||||||
"WM_SIZE_HINTS",
|
"WM_SIZE_HINTS\0"
|
||||||
"WM_ZOOM_HINTS",
|
"WM_ZOOM_HINTS\0"
|
||||||
"MIN_SPACE",
|
"MIN_SPACE\0"
|
||||||
"NORM_SPACE",
|
"NORM_SPACE\0"
|
||||||
"MAX_SPACE",
|
"MAX_SPACE\0"
|
||||||
"END_SPACE",
|
"END_SPACE\0"
|
||||||
"SUPERSCRIPT_X",
|
"SUPERSCRIPT_X\0"
|
||||||
"SUPERSCRIPT_Y",
|
"SUPERSCRIPT_Y\0"
|
||||||
"SUBSCRIPT_X",
|
"SUBSCRIPT_X\0"
|
||||||
"SUBSCRIPT_Y",
|
"SUBSCRIPT_Y\0"
|
||||||
"UNDERLINE_POSITION",
|
"UNDERLINE_POSITION\0"
|
||||||
"UNDERLINE_THICKNESS",
|
"UNDERLINE_THICKNESS\0"
|
||||||
"STRIKEOUT_ASCENT",
|
"STRIKEOUT_ASCENT\0"
|
||||||
"STRIKEOUT_DESCENT",
|
"STRIKEOUT_DESCENT\0"
|
||||||
"ITALIC_ANGLE",
|
"ITALIC_ANGLE\0"
|
||||||
"X_HEIGHT",
|
"X_HEIGHT\0"
|
||||||
"QUAD_WIDTH",
|
"QUAD_WIDTH\0"
|
||||||
"WEIGHT",
|
"WEIGHT\0"
|
||||||
"POINT_SIZE",
|
"POINT_SIZE\0"
|
||||||
"RESOLUTION",
|
"RESOLUTION\0"
|
||||||
"COPYRIGHT",
|
"COPYRIGHT\0"
|
||||||
"NOTICE",
|
"NOTICE\0"
|
||||||
"FONT_NAME",
|
"FONT_NAME\0"
|
||||||
"FAMILY_NAME",
|
"FAMILY_NAME\0"
|
||||||
"FULL_NAME",
|
"FULL_NAME\0"
|
||||||
"CAP_HEIGHT",
|
"CAP_HEIGHT\0"
|
||||||
"WM_CLASS",
|
"WM_CLASS\0"
|
||||||
"WM_TRANSIENT_FOR",
|
"WM_TRANSIENT_FOR\0"
|
||||||
/* Below here, these are our additions. Increment N_CUSTOM_PREDEFINED
|
/* Below here, these are our additions. Increment N_CUSTOM_PREDEFINED
|
||||||
* if you add any.
|
* if you add any.
|
||||||
*/
|
*/
|
||||||
"CLIPBOARD" /* = 69 */
|
"CLIPBOARD\0" /* = 69 */
|
||||||
|
;
|
||||||
|
|
||||||
|
static const gint xatoms_offset[] = {
|
||||||
|
0, 5, 13, 23, 27, 32, 39, 48, 57, 64, 76, 88,
|
||||||
|
100, 112, 124, 136, 148, 160, 169, 174, 182, 189, 195, 205,
|
||||||
|
222, 236, 249, 262, 278, 291, 305, 317, 324, 333, 340, 351,
|
||||||
|
360, 378, 391, 404, 412, 428, 442, 456, 466, 477, 487, 497,
|
||||||
|
511, 525, 537, 549, 568, 588, 605, 623, 636, 645, 656, 663,
|
||||||
|
674, 685, 695, 702, 712, 724, 734, 745, 754, 771
|
||||||
};
|
};
|
||||||
|
|
||||||
#define N_CUSTOM_PREDEFINED 1
|
#define N_CUSTOM_PREDEFINED 1
|
||||||
@ -151,7 +160,7 @@ lookup_cached_xatom (GdkDisplay *display,
|
|||||||
{
|
{
|
||||||
GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
|
GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
|
||||||
|
|
||||||
if (ATOM_TO_INDEX (atom) < G_N_ELEMENTS (XAtomsStrings) - N_CUSTOM_PREDEFINED)
|
if (ATOM_TO_INDEX (atom) < G_N_ELEMENTS (xatoms_offset) - N_CUSTOM_PREDEFINED)
|
||||||
return ATOM_TO_INDEX (atom);
|
return ATOM_TO_INDEX (atom);
|
||||||
|
|
||||||
if (display_x11->atom_from_virtual)
|
if (display_x11->atom_from_virtual)
|
||||||
@ -289,7 +298,7 @@ gdk_x11_xatom_to_atom_for_display (GdkDisplay *display,
|
|||||||
|
|
||||||
display_x11 = GDK_DISPLAY_X11 (display);
|
display_x11 = GDK_DISPLAY_X11 (display);
|
||||||
|
|
||||||
if (xatom < G_N_ELEMENTS (XAtomsStrings) - N_CUSTOM_PREDEFINED)
|
if (xatom < G_N_ELEMENTS (xatoms_offset) - N_CUSTOM_PREDEFINED)
|
||||||
return INDEX_TO_ATOM (xatom);
|
return INDEX_TO_ATOM (xatom);
|
||||||
|
|
||||||
if (display_x11->atom_to_virtual)
|
if (display_x11->atom_to_virtual)
|
||||||
@ -345,10 +354,10 @@ virtual_atom_check_init (void)
|
|||||||
virtual_atom_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
virtual_atom_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
virtual_atom_array = g_ptr_array_new ();
|
virtual_atom_array = g_ptr_array_new ();
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (XAtomsStrings); i++)
|
for (i = 0; i < G_N_ELEMENTS (xatoms_offset); i++)
|
||||||
{
|
{
|
||||||
g_ptr_array_add (virtual_atom_array, (gchar *) XAtomsStrings[i]);
|
g_ptr_array_add (virtual_atom_array, (gchar *)(xatoms_string + xatoms_offset[i]));
|
||||||
g_hash_table_insert (virtual_atom_hash, (gchar *) XAtomsStrings[i],
|
g_hash_table_insert (virtual_atom_hash, (gchar *)(xatoms_string + xatoms_offset[i]),
|
||||||
GUINT_TO_POINTER (i));
|
GUINT_TO_POINTER (i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -367,7 +376,7 @@ intern_atom (const gchar *atom_name,
|
|||||||
{
|
{
|
||||||
result = INDEX_TO_ATOM (virtual_atom_array->len);
|
result = INDEX_TO_ATOM (virtual_atom_array->len);
|
||||||
|
|
||||||
g_ptr_array_add (virtual_atom_array, dup ? g_strdup (atom_name) : atom_name);
|
g_ptr_array_add (virtual_atom_array, dup ? g_strdup (atom_name) : (gchar *)atom_name);
|
||||||
g_hash_table_insert (virtual_atom_hash,
|
g_hash_table_insert (virtual_atom_hash,
|
||||||
g_ptr_array_index (virtual_atom_array,
|
g_ptr_array_index (virtual_atom_array,
|
||||||
ATOM_TO_INDEX (result)),
|
ATOM_TO_INDEX (result)),
|
||||||
|
|||||||
Reference in New Issue
Block a user