diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2020-11-24 22:00:38 +0100 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2020-12-07 09:46:39 +0100 |
commit | 475c07e935b92c2cdef3a0ff24c74ebdeb694d82 (patch) | |
tree | 246d56f621888976c95cc03e940486dac3ba511d /gdk/gdksurface.c | |
parent | 0c8d97e3f7b73f02b0376d1a7723ef7aba732efb (diff) | |
download | gtk+-475c07e935b92c2cdef3a0ff24c74ebdeb694d82.tar.gz |
gdk/surface: Make pending schedule a phase enum
Scheduling an update when frozen would reschedule when unfrozen; change
this to a generic pending phase enum, and use this for resrcheduling
paint and compute-size.
Diffstat (limited to 'gdk/gdksurface.c')
-rw-r--r-- | gdk/gdksurface.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 6cd7686bb2..f5f4a5790d 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -1290,7 +1290,7 @@ gdk_surface_schedule_update (GdkSurface *surface) if (surface->update_freeze_count || gdk_surface_is_toplevel_frozen (surface)) { - surface->pending_schedule_update = TRUE; + surface->pending_phases |= GDK_FRAME_CLOCK_PHASE_PAINT; return; } @@ -1319,7 +1319,7 @@ gdk_surface_request_compute_size (GdkSurface *surface) if (surface->update_freeze_count || gdk_surface_is_toplevel_frozen (surface)) { - surface->pending_request_compute_size = TRUE; + surface->pending_phases |= GDK_FRAME_CLOCK_PHASE_COMPUTE_SIZE; return; } @@ -1568,18 +1568,14 @@ gdk_surface_thaw_updates (GdkSurface *surface) if (--surface->update_freeze_count == 0) { - _gdk_frame_clock_inhibit_freeze (surface->frame_clock); + GdkFrameClock *frame_clock = surface->frame_clock; - if (surface->pending_schedule_update) - { - surface->pending_schedule_update = FALSE; - gdk_surface_schedule_update (surface); - } + _gdk_frame_clock_inhibit_freeze (frame_clock); - if (surface->pending_request_compute_size) + if (surface->pending_phases) { - surface->pending_request_compute_size = FALSE; - gdk_surface_request_compute_size (surface); + gdk_frame_clock_request_phase (frame_clock, surface->pending_phases); + surface->pending_phases = 0; } } } |