int maxx = -99999, maxy = -99999;
int x, y;
int i;
+ int w, h;
+ Eina_Bool geometry_change = EINA_FALSE;
if (!ec) return;
if (!ec->frame) return;
if (y > maxy) maxy = y;
}
+ w = maxx - minx;
+ h = maxy - miny;
+
+ geometry_change = ec->transform_core.result.boundary.x != minx ||
+ ec->transform_core.result.boundary.y != miny ||
+ ec->transform_core.result.boundary.w != w ||
+ ec->transform_core.result.boundary.h != h;
+
ec->transform_core.result.boundary.x = minx;
ec->transform_core.result.boundary.y = miny;
- ec->transform_core.result.boundary.w = maxx - minx;
- ec->transform_core.result.boundary.h = maxy - miny;
+ ec->transform_core.result.boundary.w = w;
+ ec->transform_core.result.boundary.h = h;
ELOGF("COMP", "[Transform][boundary][%d %d %d %d]",
ec,
ec->transform_core.result.boundary.w,
ec->transform_core.result.boundary.h);
- if (e_input_thread_check_client_cloning_needed())
+ if (geometry_change && e_input_thread_check_client_cloning_needed())
{
E_Input_Thread_Request_EClient_Data ec_data;
memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
Eina_List *l;
Eina_Bool background;
E_Util_Transform *temp_trans;
+ Eina_Bool change = EINA_FALSE;
// 1. init state
+ change = ec->transform_core.result.enable != EINA_TRUE;
ec->transform_core.result.enable = EINA_TRUE;
- if (e_input_thread_check_client_cloning_needed())
+ if (change && e_input_thread_check_client_cloning_needed())
_e_input_thread_client_transform_core_state_set(ec, EINA_TRUE);
e_util_transform_rect_client_rect_get(&source_rect, ec);
if (ec->transform_core.result.enable)
{
ec->transform_core.result.enable = EINA_FALSE;
+
if (e_input_thread_check_client_cloning_needed())
_e_input_thread_client_transform_core_state_set(ec, EINA_FALSE);