return surface->ec;
}
+static E_Comp_Wl_Aux_Hint *
+_e_aux_hint_create(int32_t id, const char *hint_name, const char *value)
+{
+ E_Comp_Wl_Aux_Hint *hint;
+
+ hint = E_NEW(E_Comp_Wl_Aux_Hint, 1);
+ if (!hint)
+ return NULL;
+
+ hint->id = id;
+ hint->hint = eina_stringshare_add(hint_name);
+ hint->val = eina_stringshare_add(value);
+ hint->changed = true;
+
+ return hint;
+}
+
+static void
+_e_aux_hint_destroy(E_Comp_Wl_Aux_Hint *hint)
+{
+ if (hint->hint) eina_stringshare_del(hint->hint);
+ if (hint->val) eina_stringshare_del(hint->val);
+ free(hint);
+}
+
+static void
+_e_aux_hint_replace(E_Comp_Wl_Aux_Hint *hint, const char *hint_name, const char *value)
+{
+ eina_stringshare_del(hint->hint);
+ eina_stringshare_del(hint->val);
+
+ hint->hint = eina_stringshare_add(hint_name);
+ hint->val = eina_stringshare_add(value);
+ hint->changed = true;
+ hint->deleted = false;
+}
+
+static bool
+_e_aux_hint_value_set(E_Comp_Wl_Aux_Hint *hint, const char *value)
+{
+ if ((!hint->val) ||
+ (strcmp(hint->val, value) == 0))
+ return false;
+
+ eina_stringshare_del(hint->val);
+ hint->val = eina_stringshare_add(value);
+ hint->changed = true;
+ hint->deleted = false;
+
+ return true;
+}
+
EINTERN bool
e_aux_hint_surface_hint_add(E_Aux_Hint_Surface *surface, int32_t id, const char *name, const char *value)
{
{
if (!e_util_strcmp(hint->hint, name))
{
- if (strcmp(hint->val, value) != 0)
+ if (_e_aux_hint_value_set(hint, value))
{
ELOGF("HINTS", "AUX_HINT |Change [%d:%s:%s -> %s]",
surface->ec, id, hint->hint, hint->val, value);
- eina_stringshare_del(hint->val);
-
- hint->val = eina_stringshare_add(value);
- hint->changed = true;
- hint->deleted = false;
surface->changed = true;
}
}
ELOGF("HINTS", "AUX_HINT |Replace [%d:%s:%s -> %s:%s]",
surface->ec, id, hint->hint, hint->val, name, value);
- eina_stringshare_del(hint->hint);
- eina_stringshare_del(hint->val);
-
- hint->hint = eina_stringshare_add(name);
- hint->val = eina_stringshare_add(value);
- hint->changed = true;
- hint->deleted = false;
+ _e_aux_hint_replace(hint, name, value);
surface->changed = true;
}
goto end;
}
}
- hint = E_NEW(E_Comp_Wl_Aux_Hint, 1);
+ hint = _e_aux_hint_create(id, name, value);
EINA_SAFETY_ON_NULL_RETURN_VAL(hint, false);
- memset(hint, 0, sizeof(E_Comp_Wl_Aux_Hint));
-
- hint->id = id;
- hint->hint = eina_stringshare_add(name);
- hint->val = eina_stringshare_add(value);
- hint->changed = true;
- hint->deleted = false;
surface->hints = eina_list_append(surface->hints, hint);
- surface->changed = 1;
+ surface->changed = true;
+
ELOGF("HINTS", "AUX_HINT |Add [%d:%s:%s]", surface->ec, id, hint->hint, hint->val);
end:
{
if (hint->id == id)
{
- if ((hint->val) && (strcmp(hint->val, value) != 0))
- {
- ELOGF("COMP", "AUX_HINT |Change [%d:%s:%s -> %s]", surface->ec,
- id, hint->hint, hint->val, value);
- eina_stringshare_del(hint->val);
- hint->val = eina_stringshare_add(value);
- hint->changed = true;
- surface->changed = true;
- }
-
- if (hint->deleted)
- hint->deleted = false;
-
+ ELOGF("COMP", "AUX_HINT |Change [%d:%s:%s -> %s]", surface->ec,
+ id, hint->hint, hint->val, value);
+ if (_e_aux_hint_value_set(hint, value))
+ surface->changed = true;
return true;
}
}
if (hint->deleted)
{
ELOGF("HINTS", "AUX_HINT |Del [%d:%s:%s]", surface->ec, hint->id, hint->hint, hint->val);
- if (hint->hint) eina_stringshare_del(hint->hint);
- if (hint->val) eina_stringshare_del(hint->val);
surface->hints = eina_list_remove_list(surface->hints, l);
- E_FREE(hint);
+ _e_aux_hint_destroy(hint);
}
}
- surface->changed = 0;
+ surface->changed = false;
}
EINTERN bool