13
0

remove invalid assertion - #6634

There is a highly unlikely case where the render thread can have zero
requests in the queue, but it is not supposed to be terminated.

 1) WaveView::queue_get_image(); 
wake up thread, *but* the thread does not start yet
 2) WaveView::cancel_my_render_request(); 
and now the thread starts.

1,2 are initiated by user actions from the GUI thread and are normally
orders of magnitude slower than scheduler-thread wakeup.
This commit is contained in:
Robin Gareus 2015-10-22 12:20:42 +02:00
parent d31ac095e0
commit 5bdc869e49

View File

@ -1508,7 +1508,7 @@ WaveView::start_drawing_thread ()
void
WaveView::stop_drawing_thread ()
{
if (_drawing_thread) {
while (_drawing_thread) {
Glib::Threads::Mutex::Lock lm (request_queue_lock);
g_atomic_int_set (&drawing_thread_should_quit, 1);
request_cond.signal ();
@ -1537,8 +1537,7 @@ WaveView::drawing_thread ()
}
if (request_queue.empty()) {
assert (g_atomic_int_get (&drawing_thread_should_quit));
continue; // or break;
continue;
}
/* remove the request from the queue (remember: the "request"