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