2014-07-28 13:19 GMT+03:00 Daniel Stone <[email protected]>: > Hi Eugen, > > On 27 July 2014 22:16, Eugen Friedrich <[email protected]> wrote: >> >> Hi Daniel, >> >> thanks, i understood we should add the wl_display_dispatch_pending call in >> the application >> there is currently no way to avoid this and basically it does not harm. >> I only wanted to understand if there is something missing. > > > Doing that is not enough. Firstly, it requires the application to do this, > or else EGL will break, which will make your stack appear broken with > different applications. Secondly, as an application may do this in any > thread, you could run into locking issues. > > wl_display_sync() does the following (paraphrased): > callback = wl_display_roundtrip(); /* creates wl_callback object on > default queue */ > while (!callback_signalled) > wl_display_dispatch(); /* dispatch default queue until callback > processed */
Daniel, you swapped wl_display_sync() and wl_display_roundtrip() :). > > This violates the rule that EGL must not intefere with the default queue - > meaning that the wl_callback object _cannot_ be placed on the main queue. > > In order to do this correctly, you will see Mesa does: > callback = wl_display_roundtrip(); > wl_callback_set_queue(callback, internal_egl_queue); > while (!callback_signalled) > wl_display_dispatch_queue(internal_egl_queue); > > As with all objects created by your EGL implementation, the wl_callback > object must be moved to the queue immediately after it is created by > wl_display_roundtrip(). Doing this will ensure correctness and also not > require apps to be constantly dispatching the main queue. You can search the > Mesa codebase for uses of wl_display_roundtrip() to find some examples of > this pattern. > > Again - any object created by your EGL implementation that is not > immediately moved to your internal event queue is a bug. > > Cheers, > Daniel > > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
