From e9f453ac2dc1a2f231e6bc2f5a66b95465e9c732 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 24 Jan 2019 19:17:34 +0900 Subject: [PATCH] e_hwc_windows: commit hwc even if only info of hwc_window is changed Change-Id: Ie84db27423287b2a29f91d5fb8f92b1362d9cc72 --- src/bin/e_hwc_window.c | 12 +++++++++++- src/bin/e_hwc_window.h | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/bin/e_hwc_window.c b/src/bin/e_hwc_window.c index 18363e8..bf39aaa 100644 --- a/src/bin/e_hwc_window.c +++ b/src/bin/e_hwc_window.c @@ -3,6 +3,10 @@ # include # include +#ifndef CLEAR +#define CLEAR(x) memset(&(x), 0, sizeof (x)) +#endif + #define EHWINF(f, ec, ehw, x...) \ do \ { \ @@ -992,7 +996,9 @@ e_hwc_window_commit_data_acquire(E_Hwc_Window *hwc_window) hwc_window->accepted_state == E_HWC_WINDOW_STATE_VIDEO) { if (!hwc_window->buffer.tsurface) return EINA_FALSE; - if (hwc_window->buffer.tsurface == hwc_window->display.buffer.tsurface) return EINA_FALSE; + if ((hwc_window->buffer.tsurface == hwc_window->display.buffer.tsurface) && + (!memcmp(&hwc_window->info, &hwc_window->display.info, sizeof(tdm_hwc_window_info)))) + return EINA_FALSE; commit_data = E_NEW(E_Hwc_Window_Commit_Data, 1); EINA_SAFETY_ON_NULL_RETURN_VAL(commit_data, EINA_FALSE); @@ -1078,6 +1084,8 @@ e_hwc_window_commit_data_release(E_Hwc_Window *hwc_window) e_comp_wl_buffer_reference(&hwc_window->display.buffer_ref, NULL); _e_hwc_window_buffer_set(&hwc_window->display.buffer, NULL, NULL); + + CLEAR(hwc_window->display.info); } else { @@ -1102,6 +1110,8 @@ e_hwc_window_commit_data_release(E_Hwc_Window *hwc_window) /* update hwc_window display info */ _e_hwc_window_buffer_set(&hwc_window->display.buffer, tsurface, queue); + memcpy(&hwc_window->display.info, &hwc_window->commit_data->info, sizeof(tdm_hwc_window_info)); + e_object_ref(E_OBJECT(hwc_window)); } diff --git a/src/bin/e_hwc_window.h b/src/bin/e_hwc_window.h index 6531450..610278b 100644 --- a/src/bin/e_hwc_window.h +++ b/src/bin/e_hwc_window.h @@ -100,6 +100,7 @@ struct _E_Hwc_Window { E_Comp_Wl_Buffer_Ref buffer_ref; E_Hwc_Window_Buffer buffer; + tdm_hwc_window_info info; } display; struct @@ -142,6 +143,7 @@ struct _E_Hwc_Window_Target struct _E_Hwc_Window_Commit_Data { E_Comp_Wl_Buffer_Ref buffer_ref; E_Hwc_Window_Buffer buffer; + tdm_hwc_window_info info; }; EINTERN Eina_Bool e_hwc_window_init(E_Hwc *hwc); -- 2.7.4