summaryrefslogtreecommitdiff
path: root/gdk/x11
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2010-08-29 01:05:59 +0200
committerBenjamin Otte <otte@redhat.com>2010-09-26 15:11:32 +0200
commiteee6c002d1fd5359e8e588c7b13fa4074382a05d (patch)
tree099769942bddd28b94a5b00086d713c703fa6e74 /gdk/x11
parent894d402c0fe3246b22da0d5e05f96227899c7686 (diff)
downloadgtk+-eee6c002d1fd5359e8e588c7b13fa4074382a05d.tar.gz
gdk: store the visual in the GdkWindowObject
Diffstat (limited to 'gdk/x11')
-rw-r--r--gdk/x11/gdkwindow-x11.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index d62e343e74..4f949717ea 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -470,6 +470,7 @@ _gdk_windowing_window_init (GdkScreen * screen)
private = (GdkWindowObject *) screen_x11->root_window;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_screen_get_system_visual (screen);
draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
@@ -689,7 +690,6 @@ void
_gdk_window_impl_new (GdkWindow *window,
GdkWindow *real_parent,
GdkScreen *screen,
- GdkVisual *visual,
GdkEventMask event_mask,
GdkWindowAttr *attributes,
gint attributes_mask)
@@ -728,7 +728,7 @@ _gdk_window_impl_new (GdkWindow *window,
xattributes_mask = 0;
- xvisual = ((GdkVisualPrivate*) visual)->xvisual;
+ xvisual = ((GdkVisualPrivate*) private->visual)->xvisual;
if (attributes_mask & GDK_WA_NOREDIR)
{
@@ -770,14 +770,14 @@ _gdk_window_impl_new (GdkWindow *window,
}
else
{
- if ((((GdkVisualPrivate *)gdk_screen_get_system_visual (screen))->xvisual) == xvisual)
+ if ((((GdkVisualPrivate *)gdk_screen_get_system_visual (screen))->xvisual) == xvisual)
{
draw_impl->colormap = gdk_screen_get_system_colormap (screen);
g_object_ref (draw_impl->colormap);
}
else
{
- draw_impl->colormap = gdk_colormap_new (visual, FALSE);
+ draw_impl->colormap = gdk_colormap_new (private->visual, FALSE);
}
}
@@ -917,6 +917,7 @@ GdkWindow *
gdk_window_foreign_new_for_display (GdkDisplay *display,
GdkNativeWindow anid)
{
+ GdkScreen *screen;
GdkWindow *window;
GdkWindowObject *private;
GdkWindowImplX11 *impl;
@@ -950,16 +951,20 @@ gdk_window_foreign_new_for_display (GdkDisplay *display,
if (children)
XFree (children);
+ screen = _gdk_x11_display_screen_for_xrootwin (display, root);
+
window = g_object_new (GDK_TYPE_WINDOW, NULL);
private = (GdkWindowObject *) window;
private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
private->impl_window = private;
+ private->visual = gdk_x11_screen_lookup_visual (screen,
+ XVisualIDFromVisual (attrs.visual));
impl = GDK_WINDOW_IMPL_X11 (private->impl);
draw_impl = GDK_DRAWABLE_IMPL_X11 (private->impl);
draw_impl->wrapper = GDK_DRAWABLE (window);
- draw_impl->screen = _gdk_x11_display_screen_for_xrootwin (display, root);
+ draw_impl->screen = screen;
private->parent = gdk_xid_table_lookup_for_display (display, parent);