mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-03 09:01:42 -05:00
client: broadcast the right pthread_cond variable
In previous commit we removed unused variables. One of them was pthread_cond_t that was formerly used when reading from display, but later was (erroneously) made unused. This patch fixes this error and is a fix for the failing test introduced few patches ago (tests: test if thread can block on error) Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
parent
0cb9862c93
commit
574b710ef8
1 changed files with 16 additions and 0 deletions
|
|
@ -127,6 +127,12 @@ display_fatal_error(struct wl_display *display, int error)
|
|||
error = EFAULT;
|
||||
|
||||
display->last_error = error;
|
||||
|
||||
pthread_cond_broadcast(&display->reader_cond);
|
||||
/* prevent from indefinite looping in read_events()
|
||||
* (when calling pthread_cond_wait under condition
|
||||
* display->read_serial == serial) */
|
||||
++display->read_serial;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -175,6 +181,16 @@ display_protocol_error(struct wl_display *display, uint32_t code,
|
|||
display->protocol_error.id = id;
|
||||
display->protocol_error.interface = intf;
|
||||
|
||||
/*
|
||||
* here it is not necessary to broadcast reader's cond like in
|
||||
* display_fatal_error, because this function is called from
|
||||
* an event handler and that means that read_events() is done
|
||||
* and woke up all threads. Since wl_display_prepare_read()
|
||||
* fails when there are events in the queue, no threads
|
||||
* can sleep in read_events() during dispatching
|
||||
* (and therefore during calling this function), so this is safe.
|
||||
*/
|
||||
|
||||
pthread_mutex_unlock(&display->mutex);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue