[gtk/wip/matthiasc/popup5: 141/150] surface: Make only toplevels control events
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/popup5: 141/150] surface: Make only toplevels control events
- Date: Fri, 24 May 2019 02:10:02 +0000 (UTC)
commit ba21b2f243816022191911a2a543b9291a1faa28
Author: Matthias Clasen <mclasen redhat com>
Date: Wed May 22 20:58:24 2019 +0000
surface: Make only toplevels control events
There is no need for popups to connect to the frame
clock to pause and unpause events on the display -
the toplevel already does it.
gdk/gdksurface.c | 40 +++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 17 deletions(-)
---
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 56c3644866..9833f59fc2 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -3821,34 +3821,40 @@ gdk_surface_set_frame_clock (GdkSurface *surface,
if (clock)
{
g_object_ref (clock);
- g_signal_connect (G_OBJECT (clock),
- "flush-events",
- G_CALLBACK (gdk_surface_flush_events),
- surface);
+ if (surface->surface_type == GDK_SURFACE_TOPLEVEL)
+ {
+ g_signal_connect (G_OBJECT (clock),
+ "flush-events",
+ G_CALLBACK (gdk_surface_flush_events),
+ surface);
+ g_signal_connect (G_OBJECT (clock),
+ "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),
- "resume-events",
- G_CALLBACK (gdk_surface_resume_events),
- surface);
}
if (surface->frame_clock)
{
- if (surface->frame_clock_events_paused)
- gdk_surface_resume_events (surface->frame_clock, G_OBJECT (surface));
-
- g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
- G_CALLBACK (gdk_surface_flush_events),
- surface);
+ if (surface->surface_type == GDK_SURFACE_TOPLEVEL)
+ {
+ if (surface->frame_clock_events_paused)
+ gdk_surface_resume_events (surface->frame_clock, G_OBJECT (surface));
+
+ g_signal_handlers_disconnect_by_func (G_OBJECT (surface->frame_clock),
+ G_CALLBACK (gdk_surface_flush_events),
+ 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_resume_events),
- surface);
g_object_unref (surface->frame_clock);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]