e_presentation_time_container_finish(&state->presentation_container);
}
+static void
+_e_surface_base_init(E_Comp_Wl_Client_Data *base)
+{
+ wl_signal_init(&base->destroy_signal);
+ wl_signal_init(&base->apply_viewport_signal);
+ wl_signal_init(&base->state_commit_signal);
+
+ e_comp_wl_surface_state_init(&base->pending);
+
+ /* set initial client data properties */
+ base->mapped = EINA_FALSE;
+
+ /* set initial value of scaler */
+ _e_surface_buffer_viewport_state_init(&base->scaler.buffer_viewport);
+
+ e_presentation_time_container_init(&base->presentation_container);
+
+ wl_list_init(&base->pointer_constraints);
+
+ g_mutex_init(&base->surface_mutex);
+}
+
+static void
+_e_surface_base_finish(E_Comp_Wl_Client_Data *base)
+{
+ g_mutex_lock(&base->surface_mutex);
+
+ wl_signal_emit(&base->destroy_signal, &base->surface);
+
+ e_comp_wl_surface_state_finish(&base->pending);
+
+ e_comp_wl_buffer_reference(&base->buffer_ref, NULL);
+
+ if (base->aux_hint.hints)
+ {
+ E_Comp_Wl_Aux_Hint *hint;
+ EINA_LIST_FREE(base->aux_hint.hints, hint)
+ {
+ eina_stringshare_del(hint->hint);
+ eina_stringshare_del(hint->val);
+ E_FREE(hint);
+ }
+ }
+
+ if (e_comp_wl_get()->selection.cbhm == base->surface)
+ e_comp_wl_get()->selection.cbhm = NULL;
+
+ e_presentation_time_container_finish(&base->presentation_container);
+
+ E_FREE_FUNC(base->on_focus_timer, ecore_timer_del);
+
+ g_mutex_unlock(&base->surface_mutex);
+ g_mutex_clear(&base->surface_mutex);
+}
+
static E_Surface *
_e_surface_create(struct ds_surface *ds_surface)
{
wl_signal_init(&surface->events.commit);
wl_signal_init(&surface->events.new_subsurface);
wl_signal_init(&surface->events.viewport_commit);
- wl_signal_init(&surface->base.destroy_signal);
- wl_signal_init(&surface->base.apply_viewport_signal);
- wl_signal_init(&surface->base.state_commit_signal);
wl_list_init(&surface->frames);
_e_surface_state_init(&surface->pending);
_e_surface_state_init(&surface->current);
- e_comp_wl_surface_state_init(&surface->base.pending);
-
- /* set initial client data properties */
- surface->base.mapped = EINA_FALSE;
-
- /* set initial value of scaler */
- _e_surface_buffer_viewport_state_init(&surface->base.scaler.buffer_viewport);
-
- e_presentation_time_container_init(&surface->base.presentation_container);
-
- wl_list_init(&surface->base.pointer_constraints);
-
- g_mutex_init(&surface->base.surface_mutex);
+ _e_surface_base_init(&surface->base);
ELOGF("COMPOSITOR", "Create E_Surface %p", NULL, surface);
wl_signal_emit(&surface->events.destroy, surface);
- g_mutex_lock(&surface->base.surface_mutex);
-
- wl_signal_emit(&surface->base.destroy_signal, &surface->base.surface);
-
_e_surface_exported_surface_unset(surface);
- e_comp_wl_surface_state_finish(&surface->base.pending);
-
- e_comp_wl_buffer_reference(&surface->base.buffer_ref, NULL);
-
wl_resource_for_each_safe(resource, tmp, &surface->frames)
wl_resource_destroy(resource);
- if (surface->base.aux_hint.hints)
- {
- E_Comp_Wl_Aux_Hint *hint;
- EINA_LIST_FREE(surface->base.aux_hint.hints, hint)
- {
- eina_stringshare_del(hint->hint);
- eina_stringshare_del(hint->val);
- E_FREE(hint);
- }
- }
-
comp_wl = e_comp_wl_get();
if (comp_wl->ptr.ec == surface->ec)
{
if (comp_wl->touch.faked_ec == surface->ec)
comp_wl->touch.faked_ec = NULL;
- if (comp_wl->selection.cbhm == surface->base.surface)
- comp_wl->selection.cbhm = NULL;
-
e_comp_wl_data_secondary_remove(surface->ec);
if (surface->base.viewport_transform)
surface->base.viewport_transform = NULL;
}
- e_presentation_time_container_finish(&surface->base.presentation_container);
-
- E_FREE_FUNC(surface->base.on_focus_timer, ecore_timer_del);
-
- g_mutex_unlock(&surface->base.surface_mutex);
-
- g_mutex_clear(&surface->base.surface_mutex);
-
surface->ec->comp_data = NULL;
+ _e_surface_base_finish(&surface->base);
_e_surface_state_finish(&surface->pending);
_e_surface_state_finish(&surface->current);
wl_list_remove(&surface->link);