diff options
author | Ray Strode <rstrode@redhat.com> | 2009-10-08 15:59:15 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2009-10-08 15:59:15 -0400 |
commit | bda90f63c1194a312426eb2528f37f505672d8f9 (patch) | |
tree | 25e7f0d61846f1147da9e307b587c890838d8ced | |
parent | 30fa8e2d48ab6ea8909a997aa983c475753059b2 (diff) |
[renderer] make map and unmap idempotent
-rw-r--r-- | src/libplybootsplash/ply-renderer.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libplybootsplash/ply-renderer.c b/src/libplybootsplash/ply-renderer.c index 0966418d..7c6695f6 100644 --- a/src/libplybootsplash/ply-renderer.c +++ b/src/libplybootsplash/ply-renderer.c @@ -54,6 +54,7 @@ struct _ply_renderer ply_console_t *console; uint32_t input_source_is_open : 1; + uint32_t is_mapped : 1; }; typedef const ply_renderer_plugin_interface_t * @@ -199,7 +200,12 @@ ply_renderer_map_to_device (ply_renderer_t *renderer) assert (renderer != NULL); assert (renderer->plugin_interface != NULL); - return renderer->plugin_interface->map_to_device (renderer->backend); + if (renderer->is_mapped) + return true; + + renderer->is_mapped = renderer->plugin_interface->map_to_device (renderer->backend); + + return renderer->is_mapped; } static void @@ -208,7 +214,11 @@ ply_renderer_unmap_from_device (ply_renderer_t *renderer) assert (renderer != NULL); assert (renderer->plugin_interface != NULL); + if (!renderer->is_mapped) + return; + renderer->plugin_interface->unmap_from_device (renderer->backend); + renderer->is_mapped = false; } bool |