# include <pixman.h>
# include <wayland-tbm-server.h>
+#ifndef CLEAR
+#define CLEAR(x) memset(&(x), 0, sizeof (x))
+#endif
+
#define EHWINF(f, ec, ehw, x...) \
do \
{ \
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);
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
{
/* 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));
}
{
E_Comp_Wl_Buffer_Ref buffer_ref;
E_Hwc_Window_Buffer buffer;
+ tdm_hwc_window_info info;
} display;
struct
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);