diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 62de7d39e9..60a8892c59 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -878,7 +878,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator, } if (toplevel) - gdk_surface_freeze_toplevel_updates (surface); + gdk_surface_freeze_updates (surface); _gdk_x11_surface_grab_check_unmap (surface, xevent->xany.serial); } @@ -901,7 +901,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator, 0); if (toplevel) - gdk_surface_thaw_toplevel_updates (surface); + gdk_surface_thaw_updates (surface); } return_val = FALSE; diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c index c4887c0fbc..64a1d11cca 100644 --- a/gdk/x11/gdksurface-x11.c +++ b/gdk/x11/gdksurface-x11.c @@ -745,6 +745,9 @@ static void on_frame_clock_before_paint (GdkFrameClock *clock, GdkSurface *surface) { + if (surface->update_freeze_count > 0) + return; + gdk_x11_surface_predict_presentation_time (surface); gdk_x11_surface_begin_frame (surface, FALSE); } @@ -753,8 +756,10 @@ static void on_frame_clock_after_paint (GdkFrameClock *clock, GdkSurface *surface) { - gdk_x11_surface_end_frame (surface); + if (surface->update_freeze_count > 0) + return; + gdk_x11_surface_end_frame (surface); } static void @@ -909,7 +914,7 @@ _gdk_x11_display_create_surface (GdkDisplay *display, connect_frame_clock (surface); - gdk_surface_freeze_toplevel_updates (surface); + gdk_surface_freeze_updates (surface); if (parent) {