From 0f2cc767e7d5a7a052f8e68f2f5944701e39ed47 Mon Sep 17 00:00:00 2001 From: lsj119 Date: Tue, 7 May 2019 10:29:36 +0900 Subject: [PATCH] headless_server::ouput update the empty screen Change-Id: Ibe75da060ac3010ab888406a20b8b2f89d0a22c2 --- src/bin/headless/output/output_led.c | 16 +++++++++++----- src/bin/headless/shell/shell.c | 10 ++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/bin/headless/output/output_led.c b/src/bin/headless/output/output_led.c index 50116e1..aac60a3 100644 --- a/src/bin/headless/output/output_led.c +++ b/src/bin/headless/output/output_led.c @@ -248,10 +248,10 @@ led_output_cb_frame_done(void *data) { led_output_t *output = (led_output_t *)data; - PEPPER_TRACE("[OUTPUT] frame_done\n"); + PEPPER_TRACE("[OUTPUT] frame_done %p\n", output); + output->frame_done = NULL; pepper_output_finish_frame(output->output, NULL); - output->frame_done = NULL; } static void @@ -259,16 +259,18 @@ led_output_add_frame_done(led_output_t *output) { struct wl_event_loop *loop; - PEPPER_TRACE("[OUTPUT] Add idle for frame(output:%p, frame:%p\n", output, output->frame_done); + PEPPER_TRACE("[OUTPUT] Add idle for frame(output:%p, frame_done:%p)\n", output, output->frame_done); - if (!output || output->frame_done) + if (!output || output->frame_done) { + PEPPER_TRACE("[OUTPUT] skip add frame_done\n"); return; + } loop = wl_display_get_event_loop(pepper_compositor_get_display(output->compositor)); PEPPER_CHECK(loop, return, "[OUTPUT] fail to get event loop\n"); output->frame_done = wl_event_loop_add_idle(loop, led_output_cb_frame_done, output); - PEPPER_CHECK(output->frame_done, return, "fail to add idle\n"); + PEPPER_CHECK(output->frame_done, return, "[OUTPUT] fail to add idle\n"); } static void @@ -355,6 +357,10 @@ headless_output_deinit(pepper_compositor_t *compositor) if (output) { pepper_object_set_user_data((pepper_object_t *)compositor, &KEY_OUTPUT, NULL, NULL); + if (output->boot_ani) { + boot_ani_stop(output); + } + pepper_output_destroy(output->output); led_output_destroy(output); diff --git a/src/bin/headless/shell/shell.c b/src/bin/headless/shell/shell.c index b6284b6..fe7c0d7 100644 --- a/src/bin/headless/shell/shell.c +++ b/src/bin/headless/shell/shell.c @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -1031,9 +1032,18 @@ headless_shell_cb_idle(void *data) } if (top != hs_shell->top_mapped) { + const pepper_list_t *l; + pepper_list_t *ll; + PEPPER_TRACE("[SHELL] IDLE : top-view change: %p to %p\n", hs_shell->top_mapped , top); hs_shell->top_mapped = top; headless_input_set_top_view(hs_shell->compositor, hs_shell->top_mapped); + + /*Force update the output*/ + l = pepper_compositor_get_output_list(hs_shell->compositor); + pepper_list_for_each_list(ll, l) { + pepper_output_add_damage_region((pepper_output_t *)ll->item, NULL); + } } if (focus != hs_shell->focus) { -- 2.34.1