From: Ray Strode Date: Sat, 28 Nov 2009 04:19:01 +0000 (-0500) Subject: [frame-buffer] implement new activate/deactivate methods X-Git-Tag: 0.8.0~104^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=92bf5acfa2f2b5a66b276cff010a94583a29b6b9;p=thirdparty%2Fplymouth.git [frame-buffer] implement new activate/deactivate methods We basically just do what we were doing before implicitly on VT switch, explicitly on activate and deactivate. --- diff --git a/src/plugins/renderers/frame-buffer/plugin.c b/src/plugins/renderers/frame-buffer/plugin.c index ce42eb3b..80b5973d 100644 --- a/src/plugins/renderers/frame-buffer/plugin.c +++ b/src/plugins/renderers/frame-buffer/plugin.c @@ -108,6 +108,8 @@ struct _ply_renderer_backend unsigned int bytes_per_pixel; unsigned int row_stride; + uint32_t is_inactive : 1; + void (* flush_area) (ply_renderer_backend_t *backend, ply_renderer_head_t *head, ply_rectangle_t *area_to_flush); @@ -300,15 +302,32 @@ destroy_backend (ply_renderer_backend_t *backend) free (backend); } +static void +activate (ply_renderer_backend_t *backend) +{ + backend->is_inactive = false; + + if (backend->head.map_address != MAP_FAILED) + ply_renderer_head_redraw (backend, &backend->head); +} + +static void +deactivate (ply_renderer_backend_t *backend) +{ + backend->is_inactive = true; +} + static void on_active_vt_changed (ply_renderer_backend_t *backend) { if (ply_console_get_active_vt (backend->console) != ply_terminal_get_vt_number (backend->terminal)) - return; + { + deactivate (backend); + return; + } - if (backend->head.map_address != MAP_FAILED) - ply_renderer_head_redraw (backend, &backend->head); + activate (backend); } static bool @@ -525,8 +544,7 @@ flush_head (ply_renderer_backend_t *backend, assert (backend != NULL); assert (&backend->head == head); - if (ply_console_get_active_vt (backend->console) != - ply_terminal_get_vt_number (backend->terminal)) + if (backend->is_inactive) return; ply_console_set_mode (backend->console, PLY_CONSOLE_MODE_GRAPHICS); @@ -661,6 +679,8 @@ ply_renderer_backend_get_interface (void) .query_device = query_device, .map_to_device = map_to_device, .unmap_from_device = unmap_from_device, + .activate = activate, + .deactivate = deactivate, .flush_head = flush_head, .get_heads = get_heads, .get_buffer_for_head = get_buffer_for_head,