}
}
- // check parent matrix change
- E_Client *parent = e_comp_wl_subsurface_parent_get(ec);
- if (parent && parent->transform_core.result.enable)
+ if (e_comp_wl_subsurface_check(ec))
{
- ec->transform_core.parent.enable = EINA_TRUE;
+ // check parent matrix change
+ E_Client *parent = e_comp_wl_subsurface_parent_get(ec);
+ if (parent && parent->transform_core.result.enable)
+ {
+ ec->transform_core.parent.enable = EINA_TRUE;
- if (!e_util_transform_matrix_equal_check(&ec->transform_core.parent.matrix,
- &parent->transform_core.result.matrix))
+ if (!e_util_transform_matrix_equal_check(&ec->transform_core.parent.matrix,
+ &parent->transform_core.result.matrix))
+ {
+ check = EINA_TRUE;
+ ec->transform_core.parent.matrix = parent->transform_core.result.matrix;
+ }
+ }
+ else if (ec->transform_core.parent.enable)
{
+ ec->transform_core.parent.enable = EINA_FALSE;
+ e_util_transform_matrix_load_identity(&ec->transform_core.parent.matrix);
check = EINA_TRUE;
- ec->transform_core.parent.matrix = parent->transform_core.result.matrix;
}
}
- else if (ec->transform_core.parent.enable)
- {
- ec->transform_core.parent.enable = EINA_FALSE;
- e_util_transform_matrix_load_identity(&ec->transform_core.parent.matrix);
- check = EINA_TRUE;
- }
return check;
}
{
E_Client *parent;
+ if (!e_comp_wl_subsurface_check(ec))
+ return ec;
+
parent = e_comp_wl_subsurface_parent_get(ec);
while (parent)
{
_e_comp_wl_viewport_parent_check(E_Viewport *viewport)
{
E_Client *ec;
- E_Client *new_parent;
+ E_Client *new_parent = NULL;
ec = viewport->ec;
if (e_object_is_del(E_OBJECT(ec)) || !ec->comp_data) return;
- new_parent = e_comp_wl_subsurface_parent_get(ec);
+ if (e_comp_wl_subsurface_check(ec))
+ new_parent = e_comp_wl_subsurface_parent_get(ec);
if (viewport->epc == new_parent) return;
if (output_ec == ec) return eom_output;
+ if (!e_comp_wl_subsurface_check(ec)) continue;
+
parent_ec = e_comp_wl_subsurface_parent_get(ec);
while (parent_ec)
{
E_EomClientPtr client;
E_Client *parent = NULL;
+ if (!e_comp_wl_subsurface_check(ec))
+ return NULL;
+
EINA_LIST_FOREACH(g_eom->clients, l, client)
{
parent = e_comp_wl_subsurface_parent_get(ec);
static const char*
_get_win_prop_Subsurface_Parent(const Evas_Object *evas_obj)
{
- const E_Client *ec, *parent;
+ const E_Client *ec, *parent = NULL;
char *str = NULL;
ec = evas_object_data_get(evas_obj, "E_Client");
if (!ec->comp_data)
return strdup("None");
- parent = e_comp_wl_subsurface_parent_get((E_Client *)ec);
+ if (e_comp_wl_subsurface_check((E_Client *)ec))
+ parent = e_comp_wl_subsurface_parent_get((E_Client *)ec);
+
if (asprintf(&str, "0x%zx", parent ? e_client_util_win_get(parent) : 0) < 0)
return NULL;