diff options
-rw-r--r-- | gdk/gdksurface.c | 5 | ||||
-rw-r--r-- | gdk/gdksurfaceprivate.h | 2 | ||||
-rw-r--r-- | gdk/wayland/gdksurface-wayland.c | 4 | ||||
-rw-r--r-- | gdk/x11/gdksurface-x11.c | 4 |
4 files changed, 11 insertions, 4 deletions
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index fd2d0772e8..27b775982c 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -1340,7 +1340,10 @@ gdk_surface_layout_on_clock (GdkFrameClock *clock, class = GDK_SURFACE_GET_CLASS (surface); if (class->compute_size) - class->compute_size (surface); + { + if (class->compute_size (surface)) + return; + } g_signal_emit (surface, signals[LAYOUT], 0, surface->width, surface->height); } diff --git a/gdk/gdksurfaceprivate.h b/gdk/gdksurfaceprivate.h index 4fb40a376b..4c879fc2cb 100644 --- a/gdk/gdksurfaceprivate.h +++ b/gdk/gdksurfaceprivate.h @@ -162,7 +162,7 @@ struct _GdkSurfaceClass GdkGLContext *share, GError **error); void (* request_layout) (GdkSurface *surface); - void (* compute_size) (GdkSurface *surface); + gboolean (* compute_size) (GdkSurface *surface); }; #define GDK_SURFACE_DESTROYED(d) (((GdkSurface *)(d))->destroyed) diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index 6ad40c39cd..c152acf3e5 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -639,7 +639,7 @@ configure_drag_surface_geometry (GdkSurface *surface) impl->scale); } -static void +static gboolean gdk_wayland_surface_compute_size (GdkSurface *surface) { GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface); @@ -655,6 +655,8 @@ gdk_wayland_surface_compute_size (GdkSurface *surface) impl->next_layout.surface_geometry_dirty = FALSE; } + + return FALSE; } static void diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c index a4b6e5f6ce..5e0fc557d8 100644 --- a/gdk/x11/gdksurface-x11.c +++ b/gdk/x11/gdksurface-x11.c @@ -295,7 +295,7 @@ gdk_x11_surface_request_layout (GdkSurface *surface) } } -static void +static gboolean gdk_x11_surface_compute_size (GdkSurface *surface) { GdkX11Surface *impl = GDK_X11_SURFACE (surface); @@ -352,6 +352,8 @@ gdk_x11_surface_compute_size (GdkSurface *surface) impl->next_layout.surface_geometry_dirty = FALSE; } + + return surface->resize_count > 0; } gboolean |