static void
_twe_thread_wl_disp_finalize(GSource *source)
{
+ twe_wl_disp_source *wl_source = (twe_wl_disp_source *)source;
+
+ wl_display_dispatch_queue(wl_source->disp, wl_source->ev_queue);
+ wl_event_queue_destroy(wl_source->ev_queue);
+
return;
}
void
twe_thread_add_wl_display(twe_thread* thread,
- struct wl_display *display,
- struct wl_event_queue *ev_queue)
+ struct wl_display *display)
{
twe_thread_context *ctx = thread->ctx;
twe_wl_disp_source *source;
source = (twe_wl_disp_source *)g_source_new(&_twe_wl_disp_funcs,
sizeof(twe_wl_disp_source));
source->disp = display;
- source->ev_queue = ev_queue;
+ source->ev_queue = wl_display_create_queue(display);
source->gfd.fd = wl_display_get_fd(display);
source->gfd.events = G_IO_IN | G_IO_ERR;
source->gfd.revents = 0;
void
twe_thread_add_wl_display(twe_thread* thread,
- struct wl_display *display,
- struct wl_event_queue *ev_queue);
+ struct wl_display *display);
+
+void
+twe_thread_del_wl_display(twe_thread* thread,
+ struct wl_display *display);
void
twe_thread_add_wl_surface(twe_thread* thread,