Commit graph

129 commits

Author SHA1 Message Date
Robin Gareus
0e4ddcf506 Fix out-of-bounds waveform image rendering.
With large sample-rates and high-zoom-level the minimal request-size
or at least 1/10sed can exceed the max image size supported by cairo.
e.g. @192kSPS;  100ms = 19200 samples.
 * 1 sample/pixel, * 2 (left/right) = 38400px > 2^15px.
2017-05-14 20:37:58 +02:00
Tim Mayberry
926a064744 Use PBD::to_string from pbd/string_convert.h in WaveView debug code 2017-04-19 09:37:01 +10:00
Paul Davis
4fa4b9a135 remove use of boost::optional to define "undefined" Canvas::Rect, and use Rect::empty instead.
This commit includes Rect::operator bool() which might be a candidate for removal in a future commit, in an attempt
to make the meaning clearer
2017-01-19 20:54:54 +01:00
Robin Gareus
f1f47664ff fix compilation with newer version of *mm and gcc-6.2 (RefPtr<> cast) 2016-11-30 16:00:05 +01:00
Robin Gareus
208dec7231 remove debug output 2016-03-01 18:37:19 +01:00
Robin Gareus
79d9973fa0 fix waveform flickering during recording 2016-03-01 18:06:29 +01:00
Robin Gareus
a27fed772b NO OP, whitespace 2016-03-01 14:43:44 +01:00
Robin Gareus
4384aff43f protect current_request with request_queue_lock 2016-03-01 14:43:28 +01:00
Robin Gareus
36d30f8c89 use glib mutex API 2016-03-01 12:53:54 +01:00
Robin Gareus
49148b627c force waveform images to be least 1px wide 2016-02-28 18:07:46 +01:00
Robin Gareus
4cd77f0544 try to narrow down #6478 2016-02-27 23:16:05 +01:00
Paul Davis
2d18283379 make threaded waveview rendering a configure time option (enabled by default) 2016-02-21 12:34:10 -05:00
Robin Gareus
b0518fa2be Revert "disable threaded waveform rendering for 4.7"
This reverts commit b0032adb44.
2016-02-19 21:13:29 +01:00
Paul Davis
b0032adb44 disable threaded waveform rendering for 4.7 2016-02-18 18:56:05 -05:00
Robin Gareus
d61cf81997 The return of threaded waveform rendering and related crashes. 2016-01-16 14:18:59 +01:00
Paul Davis
2992506652 disable threaded waveview rendering.
This will be re-enabled once 4.5 has been released
2015-12-16 10:28:17 -05:00
Robin Gareus
5bdc869e49 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.
2015-10-22 12:20:42 +02:00
Robin Gareus
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Paul Davis
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
Paul Davis
2f69ee8ec8 a couple of debug output statements to help diagnose a crash, part 2 2015-09-02 12:58:07 -04:00
Paul Davis
e91a0f7e11 a couple of debug output statements to help diagnose a crash 2015-09-02 12:24:37 -04:00
Robin Gareus
93aa8d3734 waveform, mutex for _current_image
may be used in render-thread while invalidate_image_cache() is called.
possible fix for #6478
2015-09-02 14:28:26 +02:00
Robin Gareus
c6d6f038b4 handle waveform drawing thread shutdown 2015-09-02 01:46:31 +02:00
Robin Gareus
e69368cc8f clear out some SessionHandleRef's on close. 2015-08-20 22:27:35 +02:00
Robin Gareus
63e3f326e9 clear waveform cache when shape changes - fixes #6525 2015-08-20 03:01:51 +02:00
Paul Davis
bbece8f8d9 try using threaded waveviews in tracks also 2015-06-29 14:18:15 -04:00
Paul Davis
a38e67d55b never use threaded waveview rendering for Tracks 2015-06-29 14:18:15 -04:00
Paul Davis
329753241f clip level is adjusted only by region amplitude (which is audible), not by _amplitude_above_axis 2015-06-29 14:18:15 -04:00
Paul Davis
bace0e85dc attempt to correctly respond to changes in _amplitude_above_axis in ArdourCanvas::WaveView 2015-06-29 14:18:15 -04:00
Robin Gareus
5aa834e1d8 fix windows debug builds:
undefined reference to `std::basic_ostream >& boost::operator<< , ArdourCanvas::Rect>(std::basic_ostream >&, boost::optional const&)'
2015-06-25 14:33:45 +02:00
Paul Davis
fe672c827c show zero line when a DC offset moves waveform so that it doesn't intersect with the zero line (from Nimal Ratnayake <nimalr@pdn.ac.lk>) 2015-06-24 14:12:13 -04:00
Paul Davis
2b81d4d0fe do not draw waveform outline at x-positions where the waveform "spread" would not leave at least 1 pixel between the two outline pixels.
Plus a better comment.
2015-06-23 17:12:52 -04:00
Paul Davis
e9224a58d1 several changes, major and minor, to improve threaded waveview rendering 2015-06-23 14:26:26 -04:00
Paul Davis
dece3c20ca create sortable, linear list for cache clearing on demand, rather than trying to maintain it in parallel with the cache map 2015-06-23 08:42:55 -04:00
Paul Davis
424f6539b4 change location for initialization of static WaveView image cache, and provide a visible method to set the cache flush threshold 2015-06-23 08:17:48 -04:00
Paul Davis
239052759f stop endless loop in WaveViewCache::cache_flush()
Still need to figure out how this could ever happen. It requires an image (shared pointer) to
be in the linear cache image list but not in the map
2015-06-22 22:00:45 -04:00
Paul Davis
10203b5517 two more corrections to waveform zooming changes 2015-06-19 08:32:05 -04:00
Paul Davis
3cf8cb3c3e fix call to consolidate image cache to use the information held in the request 2015-06-19 08:29:05 -04:00
Paul Davis
8491a015e3 stop pixel jitter when changing waveview height.
To avoid pixel jitter, the top and bottom of each line in the waveview must be computed together in a single computation,
rather than independently.

Also, remove various height corrections and cairo translations that are not necessary or relevant anymore. A subsequent
commit for the GUI will pick up on this work to get the appearance completely correct
2015-06-19 08:14:02 -04:00
Paul Davis
1043357cc9 attempt to correctly respond to changes in _amplitude_above_axis in ArdourCanvas::WaveView 2015-06-19 08:10:45 -04:00
John Emmas
a1932c7feb Correctly re-start an iteration (if we delete one of the items being iterated) 2015-06-19 12:55:38 +01:00
Paul Davis
10643779b6 more refactoring of WaveView threaded code to try to get to heart of crash bug 2015-06-11 17:04:08 -04:00
Paul Davis
077e625734 don't queue a callback with the idle event for waveview image generation if one is already queued.
Also, hold relevant lock when waking image rendering thread.
2015-06-11 13:35:01 -04:00
Paul Davis
753d1ac392 possible fix for crashes related to vanishing waveviews (and if it doesn't fix anything, it is still more correct than it was) 2015-06-10 22:26:58 -04:00
Paul Davis
ac2b0a327c fix basic error with computation of partial image width; add use of DEBUG_TRACE (DEBUG::WaveView,...) 2015-06-10 18:48:12 -04:00
Paul Davis
bc945bb3d3 use existing partial existing waveview images (if they exist) while waiting for the full ones 2015-06-04 17:46:53 -04:00
Paul Davis
25797d8618 don't use the return value from AudioRegion::read_peaks() because it is either zero or n_peaks 2015-06-02 12:17:50 -04:00
John Emmas
9706125526 Amend WaveView::send_request() such that it'll compile with MSVC
Hopefully, this was the original intention (I've simply amended a function call to match similar usages elsewhere in the code).
2015-06-02 11:17:31 +01:00
Paul Davis
95c991ba35 reinstate absent image.
Then go back to bed and be ill some more.
2015-06-01 21:08:56 -04:00
Paul Davis
0288454387 remove debug output and get logic correct to cause first render to always use the render thread 2015-06-01 14:55:17 -04:00