summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2009-10-08 15:59:15 -0400
committerRay Strode <rstrode@redhat.com>2009-10-08 15:59:15 -0400
commitbda90f63c1194a312426eb2528f37f505672d8f9 (patch)
tree25e7f0d61846f1147da9e307b587c890838d8ced
parent30fa8e2d48ab6ea8909a997aa983c475753059b2 (diff)
[renderer] make map and unmap idempotent
-rw-r--r--src/libplybootsplash/ply-renderer.c12
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