protect current_request with request_queue_lock
This commit is contained in:
parent
36d30f8c89
commit
4384aff43f
@ -944,8 +944,11 @@ WaveView::queue_get_image (boost::shared_ptr<const ARDOUR::Region> region, frame
|
||||
/* this will stop rendering in progress (which might otherwise
|
||||
be long lived) for any current request.
|
||||
*/
|
||||
Glib::Threads::Mutex::Lock lm (request_queue_lock);
|
||||
if (current_request) {
|
||||
current_request->cancel ();
|
||||
}
|
||||
}
|
||||
|
||||
start_drawing_thread ();
|
||||
|
||||
@ -1001,6 +1004,11 @@ WaveView::generate_image (boost::shared_ptr<WaveViewThreadRequest> req, bool in_
|
||||
req->channel,
|
||||
req->samples_per_pixel);
|
||||
|
||||
if (req->should_stop()) {
|
||||
cerr << "Request stopped after reading peaks\n";
|
||||
return;
|
||||
}
|
||||
|
||||
req->image = Cairo::ImageSurface::create (Cairo::FORMAT_ARGB32, n_peaks, req->height);
|
||||
|
||||
// http://cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-create
|
||||
@ -1491,11 +1499,12 @@ WaveView::cancel_my_render_request () const
|
||||
* ever starting up.
|
||||
*/
|
||||
|
||||
Glib::Threads::Mutex::Lock lm (request_queue_lock);
|
||||
|
||||
if (current_request) {
|
||||
current_request->cancel ();
|
||||
}
|
||||
|
||||
Glib::Threads::Mutex::Lock lm (request_queue_lock);
|
||||
|
||||
/* now remove it from the queue and reset our request pointer so that
|
||||
have no outstanding request (that we know about)
|
||||
|
Loading…
Reference in New Issue
Block a user