wl_proxy_set_queue(wayland_egl_buffer->wl_proxy, queue);
}
+ /* wayland_egl_surface->wl_proxy has to receive below wayland events.
+ * - buffer_attached_with_id
+ * - buffer_attached_with_fd
+ * - active
+ * - deactive
+ *
+ * When wayland_egl_surface->wl_proxy( == wl_tbm_queue ) could not receive
+ * any events, tpl_surface cannot get a buffer.
+ * So, we have to manage event queue about wl_tbm_queue along with wl_buffer.
+ */
+
+ if (wayland_egl_surface->wl_proxy)
+ wl_proxy_set_queue(wayland_egl_surface->wl_proxy, queue);
+
wl_display_dispatch_pending((struct wl_display *)surface->display->native_handle);
if (tbm_surface_queue_can_dequeue(wayland_egl_surface->tbm_queue, 0))
wl_proxy_set_queue(wayland_egl_buffer->wl_proxy, NULL);
}
+ if (wayland_egl_surface->wl_proxy)
+ wl_proxy_set_queue(wayland_egl_surface->wl_proxy, NULL);
+
wl_event_queue_destroy(queue);
return TPL_ERROR_NONE;
wl_proxy_set_queue(wayland_egl_buffer->wl_proxy, NULL);
}
+ if (wayland_egl_surface->wl_proxy)
+ wl_proxy_set_queue(wayland_egl_surface->wl_proxy, NULL);
+
wl_event_queue_destroy(queue);
return ret;
}