[gtk/wip/matthiasc/popup5: 184/187] surface: Handle paint recursively
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/popup5: 184/187] surface: Handle paint recursively
- Date: Thu, 23 May 2019 11:09:01 +0000 (UTC)
commit bcbe9c1030da5fb9a62ee137cbdb92e2788af18e
Author: Matthias Clasen <mclasen redhat com>
Date: Wed May 22 22:36:24 2019 +0000
surface: Handle paint recursively
Only connect to paint on the frame clock for
toplevels, and paint popups recursively from
there.
gdk/gdksurface.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index bf0b4ef325..a10f680d02 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -1365,9 +1365,8 @@ static void
gdk_surface_paint_on_clock (GdkFrameClock *clock,
void *data)
{
- GdkSurface *surface;
-
- surface = GDK_SURFACE (data);
+ GdkSurface *surface = GDK_SURFACE (data);
+ GList *l;
g_return_if_fail (GDK_IS_SURFACE (surface));
@@ -1388,6 +1387,9 @@ gdk_surface_paint_on_clock (GdkFrameClock *clock,
gdk_surface_remove_update_surface (surface);
}
+ for (l = surface->children; l; l = l->next)
+ gdk_surface_paint_on_clock (clock, l->data);
+
g_object_unref (surface);
}
@@ -3838,11 +3840,11 @@ gdk_surface_set_frame_clock (GdkSurface *surface,
"resume-events",
G_CALLBACK (gdk_surface_resume_events),
surface);
+ g_signal_connect (G_OBJECT (clock),
+ "paint",
+ G_CALLBACK (gdk_surface_paint_on_clock),
+ surface);
}
- g_signal_connect (G_OBJECT (clock),
- "paint",
- G_CALLBACK (gdk_surface_paint_on_clock),
- surface);
}
if (surface->frame_clock)
@@ -3858,10 +3860,10 @@ gdk_surface_set_frame_clock (GdkSurface *surface,
g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
G_CALLBACK (gdk_surface_resume_events),
surface);
+ g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
+ G_CALLBACK (gdk_surface_paint_on_clock),
+ surface);
}
- g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
- G_CALLBACK (gdk_surface_paint_on_clock),
- surface);
g_object_unref (surface->frame_clock);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]