for (;;) {
block_t *event = block_FifoGet(osys->event.fifo);
- if (!event)
- return NULL;
+
+ int cancel = vlc_savecancel();
int key;
memcpy(&key, event->p_buffer, sizeof(key));
vout_SendEventKey(osys->vout, key);
block_Release(event);
+
+ vlc_restorecancel(cancel);
}
}
SplitterClose(vd);
vout_display_Delete(vd);
if (osys->event.fifo) {
- block_FifoWake(osys->event.fifo);
- vlc_join(osys->event.thread, NULL);
+ vlc_cancel(osys->event.thread);
block_FifoRelease(osys->event.fifo);
}
vlc_mutex_destroy(&osys->lock);