[gtk/gtk-3-24: 1/2] wayland: Don't postpone resizes for subsurfaces
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-3-24: 1/2] wayland: Don't postpone resizes for subsurfaces
- Date: Fri, 3 Apr 2020 16:43:51 +0000 (UTC)
commit 749d9408875afc0acb65b27d99726f13f82cae39
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Fri Apr 3 18:01:15 2020 +0200
wayland: Don't postpone resizes for subsurfaces
Subsurfaces won't ever receive a configure event.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2570
gdk/wayland/gdkwindow-wayland.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index 0ba53e75e2..eba8361b21 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -272,6 +272,8 @@ static gboolean gdk_wayland_window_is_exported (GdkWindow *window);
static void gdk_wayland_window_unexport (GdkWindow *window);
static void gdk_wayland_window_announce_decoration_mode (GdkWindow *window);
+static gboolean should_map_as_subsurface (GdkWindow *window);
+
GType _gdk_window_impl_wayland_get_type (void);
G_DEFINE_TYPE (GdkWindowImplWayland, _gdk_window_impl_wayland, GDK_TYPE_WINDOW_IMPL)
@@ -1078,6 +1080,21 @@ is_realized_popup (GdkWindow *window)
impl->display_server.zxdg_popup_v6);
}
+static gboolean
+needs_initial_configure (GdkWindow *window)
+{
+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+ if (impl->display_server.wl_subsurface)
+ return FALSE;
+ else if (is_realized_toplevel (window))
+ return TRUE;
+ else if (is_realized_popup (window))
+ return TRUE;
+ else
+ return !should_map_as_subsurface (window);
+}
+
static void
gdk_wayland_window_maybe_configure (GdkWindow *window,
int width,
@@ -1093,7 +1110,8 @@ gdk_wayland_window_maybe_configure (GdkWindow *window,
impl->scale == scale)
return;
- if (!impl->initial_configure_received)
+ if (needs_initial_configure (window) &&
+ !impl->initial_configure_received)
{
impl->unconfigured_width = width;
impl->unconfigured_height = height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]