From 5bdc869e498d13cfa7dbd004ae41e6524fc94029 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 22 Oct 2015 12:20:42 +0200 Subject: [PATCH] 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. --- libs/canvas/wave_view.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libs/canvas/wave_view.cc b/libs/canvas/wave_view.cc index fce30e7f38..a193e8c339 100644 --- a/libs/canvas/wave_view.cc +++ b/libs/canvas/wave_view.cc @@ -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"