{
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
- if (display->events_paused)
+ if (display->event_pause_count > 0)
return NULL;
GDK_DISPLAY_GET_CLASS (display)->queue_events (display);
}
void
-_gdk_display_set_events_paused (GdkDisplay *display,
- gboolean events_paused)
+_gdk_display_pause_events (GdkDisplay *display)
{
- display->events_paused = !!events_paused;
+ display->event_pause_count++;
+}
+
+void
+_gdk_display_unpause_events (GdkDisplay *display)
+{
+ g_return_if_fail (display->event_pause_count > 0);
+
+ display->event_pause_count--;
}
void
guint double_click_time; /* Maximum time between clicks in msecs */
GdkDevice *core_pointer; /* Core pointer device */
+ guint event_pause_count; /* How many times events are blocked */
+
guint closed : 1; /* Whether this display has been closed */
- guint events_paused : 1; /* Whether events are blocked */
guint flushing_events : 1; /* Inside gdk_display_flush_events */
GArray *touch_implicit_grabs;
GdkDisplayPointerInfoForeach func,
gpointer user_data);
gulong _gdk_display_get_next_serial (GdkDisplay *display);
-void _gdk_display_set_events_paused (GdkDisplay *display,
- gboolean events_paused);
+void _gdk_display_pause_events (GdkDisplay *display);
+void _gdk_display_unpause_events (GdkDisplay *display);
void _gdk_display_flush_events (GdkDisplay *display);
void _gdk_display_event_data_copy (GdkDisplay *display,
const GdkEvent *event,
GList *tmp_list;
GList *pending_motion = NULL;
- if (display->events_paused)
+ if (display->event_pause_count > 0)
return NULL;
tmp_list = display->queued_events;
display = gdk_window_get_display (window);
_gdk_display_flush_events (display);
- _gdk_display_set_events_paused (display, TRUE);
+ _gdk_display_pause_events (display);
gdk_frame_clock_request_phase (clock, GDK_FRAME_CLOCK_PHASE_RESUME_EVENTS);
}
window = GDK_WINDOW (data);
display = gdk_window_get_display (window);
- _gdk_display_set_events_paused (display, FALSE);
+ _gdk_display_unpause_events (display);
}
/**