/* this will stop rendering in progress (which might otherwise
be long lived) for any current request.
*/
- current_request->cancel ();
+ Glib::Threads::Mutex::Lock lm (request_queue_lock);
+ if (current_request) {
+ current_request->cancel ();
+ }
}
start_drawing_thread ();
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
* 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)