https://bugs.freedesktop.org/show_bug.cgi?id=91750
--- Comment #7 from Yujie Shen <[email protected]> --- (In reply to Jonas Ã…dahl from comment #6) > Yujie: as indirectly stated by Pekka, my example was incomplete. You would > also need to dispatch pending events before the > wl_display_prepare_read(display) call. This makes it, ignoring error > handling, more or less: > > wl_surface_attach(); > while (wl_display_prepare_read_queue(display, queue) < 0) > wl_display_dispatch_queue_pending(display, queue); > window->callback = wl_surface_frame(window->surface); > wl_proxy_set_queue(window->callback,queue2); > wl_callback_add_listener(window->callback, &frame_listener, window); > wl_display_cancel_read(display); > wl_surface_commit(window->surface); > > This has the side effect that events already in the queue will be always > dispatched before the frame is requested. This may have unwanted effects, so > please consider whether this is Ok in your architecture. If it is not, you > need to make sure that the above code is done after all events on the queue > has been dispatched. Thanks for your kindly help. By adding >while (wl_display_prepare_read_queue(display, queue2) < 0) > wl_display_dispatch_queue_pending(display, queue2); >wl_surface_commit(window->surface); it works in my case. but, I still don't understand why it requires the wl_event_queue to be empty?? I'm trying to summary the restrictions of wayland when multi-thread programming. May I know if you have any idea about it. -- You are receiving this mail because: You are the assignee for the bug.
_______________________________________________ wayland-bugs mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-bugs
