{
E_Comp_Wl_Buffer *buffer;
struct wl_listener destroy_listener;
- Eina_Bool destroy_listener_usable;
};
struct _E_Comp_Wl_Buffer_Viewport {
if (ref->buffer)
{
+ wl_list_remove(&ref->destroy_listener.link);
_e_comp_wl_buffer_unref(ref->buffer);
-
- if (ref->destroy_listener_usable)
- {
- wl_list_remove(&ref->destroy_listener.link);
- ref->destroy_listener_usable = EINA_FALSE;
- }
}
if (buffer)
ref->destroy_listener.notify = _e_comp_wl_buffer_reference_cb_destroy;
wl_signal_add(&buffer->destroy_signal, &ref->destroy_listener);
-
- ref->destroy_listener_usable = EINA_TRUE;
}
ref->buffer = buffer;
E_Comp_Wl_Buffer_Ref *ref;
ref = container_of(listener, E_Comp_Wl_Buffer_Ref, destroy_listener);
- if ((E_Comp_Wl_Buffer *)data != ref->buffer) return;
+ wl_list_remove(&ref->destroy_listener.link);
ref->buffer = NULL;
- ref->destroy_listener_usable = EINA_FALSE;
}
static void