From: Ray Strode Date: Wed, 27 Aug 2008 03:48:54 +0000 (-0400) Subject: Count and pair frame buffer pause and unpause calls X-Git-Tag: 0.6.0~183 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=774d86dbdec88475a9af53f3df48335608636a37;p=thirdparty%2Fplymouth.git Count and pair frame buffer pause and unpause calls We don't want a nested unpause() to cause a premature flush of the shadow buffer out to the front buffer. --- diff --git a/src/libply/ply-frame-buffer.c b/src/libply/ply-frame-buffer.c index 8d9c4f24..32f0e6c0 100644 --- a/src/libply/ply-frame-buffer.c +++ b/src/libply/ply-frame-buffer.c @@ -74,7 +74,7 @@ struct _ply_frame_buffer void (*flush)(ply_frame_buffer_t *buffer); - uint32_t is_paused : 1; + int pause_count; }; static bool ply_frame_buffer_open_device (ply_frame_buffer_t *buffer); @@ -507,7 +507,7 @@ ply_frame_buffer_flush (ply_frame_buffer_t *buffer) { assert (buffer != NULL); - if (buffer->is_paused) + if (buffer->pause_count > 0) return true; (*buffer->flush) (buffer); @@ -538,7 +538,7 @@ ply_frame_buffer_new (const char *device_name) buffer->map_address = MAP_FAILED; buffer->shadow_buffer = NULL; - buffer->is_paused = false; + buffer->pause_count = 0; return buffer; } @@ -606,15 +606,15 @@ ply_frame_buffer_pause_updates (ply_frame_buffer_t *buffer) { assert (buffer != NULL); - buffer->is_paused = true; + buffer->pause_count++; } bool ply_frame_buffer_unpause_updates (ply_frame_buffer_t *buffer) { assert (buffer != NULL); - - buffer->is_paused = false; + + buffer->pause_count--; return ply_frame_buffer_flush (buffer); }