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:
Marek Chalupa 2014-08-05 11:42:01 +02:00 committed by Pekka Paalanen
parent 0cb9862c93
commit 574b710ef8

View file

@ -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);
}