headless_server::ouput update the empty screen 83/207183/1
authorlsj119 <lsj119@samsung.com>
Tue, 7 May 2019 01:29:36 +0000 (10:29 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Thu, 30 May 2019 08:34:12 +0000 (17:34 +0900)
Change-Id: Ibe75da060ac3010ab888406a20b8b2f89d0a22c2

src/bin/headless/output/output_led.c
src/bin/headless/shell/shell.c

index 50116e166493fc55f013f8b8e3d7253dbcf25255..aac60a363995e151ad0c64f8573ef0139e6a6993 100644 (file)
@@ -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);
 
index b6284b68b9ba140e1a3a3af8dcd343582d13b00a..fe7c0d709d300591693ed6cc6ad103e58a63280f 100644 (file)
@@ -26,6 +26,7 @@
 #include <unistd.h>
 
 #include <pepper.h>
+#include <pepper-output-backend.h>
 #include <xdg-shell-unstable-v6-server-protocol.h>
 #include <tizen-extension-server-protocol.h>
 
@@ -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) {