Wayland client library thread safety
Bill Spitzak
spitzak at gmail.com
Fri Apr 20 14:56:39 PDT 2012
Kristian Høgsberg wrote:
>> 1) Toughen up and add locking around all access to wl_display. It's
>> not as much code as it sounds, there are actually only a few entry
>> points that need locking.
This could be free if the *caller* is required to lock/unlock. Ie there
is a wl_lock/unlock call that you must use around all other use of
wl_display.
Programs won't have to call this if they are single threaded, or
(because they already have locking around the relevant code) they know
that they are already preventing multiple threads from interacting. The
calls can also surround multiple wayland calls, which is more efficient,
and can also allow relying on the state being unchanged between them.
Possibly you are already considering this. I apologize if I am just
restating the obvious implementation.
>> The
>> idea here is to introduce a wl_display_iterate_for_object() entry
>> point that will only call out for events addressed to that object
>> and queue up the rest.
It sounds like adding this call would avoid the need for thread affinity
and any other blocking of events that you describe. Instead the calling
program can use this entry point to limit callbacks to objects it knows
will work.
More information about the wayland-devel
mailing list