if ((E_Hwc_Window_Queue *)data != window_buffer->queue) return;
- if (window_buffer->queue)
- wl_list_remove(&window_buffer->queue_destroy_listener.link);
+ if (window_buffer->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&window_buffer->queue_destroy_listener.link);
+ window_buffer->queue_destroy_listener.notify = NULL;
+ }
window_buffer->queue = NULL;
}
{
if (window_buffer->queue != queue)
{
- if (window_buffer->queue)
- wl_list_remove(&window_buffer->queue_destroy_listener.link);
+ if (window_buffer->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&window_buffer->queue_destroy_listener.link);
+ window_buffer->queue_destroy_listener.notify = NULL;
+ }
if (queue)
{
if ((E_Hwc_Window_Queue *)data != hwc_window->queue) return;
- if (hwc_window->queue)
- wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ if (hwc_window->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ hwc_window->queue_destroy_listener.notify = NULL;
+ }
hwc_window->queue = NULL;
hwc_window->constraints &= ~TDM_HWC_WIN_CONSTRAINT_BUFFER_QUEUE;
return EINA_FALSE;
}
- if (hwc_window->queue)
- wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ if (hwc_window->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ hwc_window->queue_destroy_listener.notify = NULL;
+ }
wl_signal_add(&queue->destroy_signal, &hwc_window->queue_destroy_listener);
hwc_window->queue_destroy_listener.notify = _e_hwc_window_cb_queue_destroy;
if (hwc_window->queue)
{
e_hwc_window_queue_user_unset(hwc_window->queue, hwc_window);
- wl_list_remove(&hwc_window->queue_destroy_listener.link);
+
+ if (hwc_window->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ hwc_window->queue_destroy_listener.notify = NULL;
+ }
+
hwc_window->queue = NULL;
}
if ((E_Comp_Wl_Buffer *)data != hwc_window->cursor.buffer) return;
- if (hwc_window->cursor.buffer)
- wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ if (hwc_window->cursor_buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ hwc_window->cursor_buffer_destroy_listener.notify = NULL;
+ }
hwc_window->cursor.buffer = NULL;
}
return EINA_FALSE;
}
- if (hwc_window->cursor.buffer)
- wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ if (hwc_window->cursor_buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ hwc_window->cursor_buffer_destroy_listener.notify = NULL;
+ }
hwc_window->cursor.buffer = NULL;
hwc_window->cursor.rotation = 0;
return EINA_FALSE;
}
- if (hwc_window->cursor.buffer)
- wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ if (hwc_window->cursor_buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ hwc_window->cursor_buffer_destroy_listener.notify = NULL;
+ }
hwc_window->cursor.buffer = buffer;
wl_signal_add(&buffer->destroy_signal, &hwc_window->cursor_buffer_destroy_listener);
EHWINF("Free", NULL, hwc_window->hwc, hwc_window);
done:
- if (hwc_window->cursor.buffer)
- wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ if (hwc_window->cursor_buffer_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->cursor_buffer_destroy_listener.link);
+ hwc_window->cursor_buffer_destroy_listener.notify = NULL;
+ }
- if (hwc_window->queue)
- wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ if (hwc_window->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ hwc_window->queue_destroy_listener.notify = NULL;
+ }
- if (hwc_window->buffer.queue)
- wl_list_remove(&hwc_window->buffer.queue_destroy_listener.link);
+ if (hwc_window->buffer.queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->buffer.queue_destroy_listener.link);
+ hwc_window->buffer.queue_destroy_listener.notify = NULL;
+ }
- if (hwc_window->display.buffer.queue)
- wl_list_remove(&hwc_window->display.buffer.queue_destroy_listener.link);
+ if (hwc_window->display.buffer.queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->display.buffer.queue_destroy_listener.link);
+ hwc_window->display.buffer.queue_destroy_listener.notify = NULL;
+ }
E_FREE(hwc_window);
}
{
e_hwc_window_queue_user_unset(hwc_window->queue, hwc_window);
- wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ if (hwc_window->queue_destroy_listener.notify)
+ {
+ wl_list_remove(&hwc_window->queue_destroy_listener.link);
+ hwc_window->queue_destroy_listener.notify = NULL;
+ }
+
hwc_window->queue = NULL;
}