[gtk+] Fix a bootstrapping problem without root windows
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Fix a bootstrapping problem without root windows
- Date: Sat, 12 Aug 2017 13:42:32 +0000 (UTC)
commit 124b790a77e4852544184971fc7ae248acae0713
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Aug 12 09:36:49 2017 -0400
Fix a bootstrapping problem without root windows
We create various windows during the initial creation of display
objects, which causes some bootstrapping issues when we try to
find the default screen to get its root window. To work around this,
pass the display object into gdk_window_new.
This is not an API change, since gdk_window_new is no longer public API.
gdk/gdkinternals.h | 3 ++-
gdk/gdkwindow.c | 16 +++++++---------
gdk/wayland/gdkwindow-wayland.c | 3 ++-
3 files changed, 11 insertions(+), 11 deletions(-)
---
diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h
index acff6f0..537741b 100644
--- a/gdk/gdkinternals.h
+++ b/gdk/gdkinternals.h
@@ -368,7 +368,8 @@ void gdk_cairo_set_drawing_context (cairo_t *cr,
cairo_surface_t *
_gdk_window_ref_cairo_surface (GdkWindow *window);
-GdkWindow* gdk_window_new (GdkWindow *parent,
+GdkWindow* gdk_window_new (GdkDisplay *display,
+ GdkWindow *parent,
GdkWindowAttr *attributes);
void _gdk_window_destroy (GdkWindow *window,
gboolean foreign_destroy);
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 0d6a82f..010a27e 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -976,12 +976,12 @@ get_native_event_mask (GdkWindow *private)
}
GdkWindow*
-gdk_window_new (GdkWindow *parent,
+gdk_window_new (GdkDisplay *display,
+ GdkWindow *parent,
GdkWindowAttr *attributes)
{
GdkWindow *window;
GdkScreen *screen;
- GdkDisplay *display;
gboolean native;
GdkEventMask event_mask;
@@ -989,7 +989,7 @@ gdk_window_new (GdkWindow *parent,
if (!parent)
{
- screen = gdk_screen_get_default ();
+ screen = gdk_display_get_default_screen (display);
parent = gdk_screen_get_root_window (screen);
}
else
@@ -1003,8 +1003,6 @@ gdk_window_new (GdkWindow *parent,
return NULL;
}
- display = gdk_screen_get_display (screen);
-
window = _gdk_display_create_window (display);
window->parent = parent;
@@ -1159,7 +1157,7 @@ gdk_window_new_toplevel (GdkDisplay *display,
attr.height = height;
attr.window_type = GDK_WINDOW_TOPLEVEL;
- return gdk_window_new (NULL, &attr);
+ return gdk_window_new (display, NULL, &attr);
}
/**
@@ -1193,7 +1191,7 @@ gdk_window_new_popup (GdkDisplay *display,
attr.height = position->height;
attr.window_type = GDK_WINDOW_TEMP;
- return gdk_window_new (NULL, &attr);
+ return gdk_window_new (display, NULL, &attr);
}
/**
@@ -1224,7 +1222,7 @@ gdk_window_new_temp (GdkDisplay *display)
attr.height = 10;
attr.window_type = GDK_WINDOW_TEMP;
- return gdk_window_new (NULL, &attr);
+ return gdk_window_new (display, NULL, &attr);
}
/**
@@ -1256,7 +1254,7 @@ gdk_window_new_child (GdkWindow *parent,
attr.height = position->height;
attr.window_type = GDK_WINDOW_CHILD;
- return gdk_window_new (parent, &attr);
+ return gdk_window_new (gdk_window_get_display (parent), parent, &attr);
}
/**
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index b6c4cee..c304799 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -3719,7 +3719,8 @@ gdk_wayland_window_new_subsurface (GdkDisplay *display,
attr.height = position->height;
attr.window_type = GDK_WINDOW_SUBSURFACE;
- return gdk_window_new (gdk_screen_get_root_window (gdk_display_get_default_screen (display)),
+ return gdk_window_new (display,
+ gdk_screen_get_root_window (gdk_display_get_default_screen (display)),
&attr);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]