summaryrefslogtreecommitdiff
path: root/gdk/gdksurface.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2020-11-24 22:00:38 +0100
committerJonas Ådahl <jadahl@gmail.com>2020-12-07 09:46:39 +0100
commit475c07e935b92c2cdef3a0ff24c74ebdeb694d82 (patch)
tree246d56f621888976c95cc03e940486dac3ba511d /gdk/gdksurface.c
parent0c8d97e3f7b73f02b0376d1a7723ef7aba732efb (diff)
downloadgtk+-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.c18
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;
}
}
}