summaryrefslogtreecommitdiff
path: root/libs/ardour/audioregion.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2018-02-11 09:39:36 -0600
committerBen Loftis <ben@harrisonconsoles.com>2018-02-11 09:39:36 -0600
commite6da4c4846cd3097e2393f0e43016b870e7cf592 (patch)
treef54b4f56ab2b39a4c91bb5e6e0141031b8731566 /libs/ardour/audioregion.cc
parent11e50fe0c5f441f8d017529a62ac4c8eeb6403c2 (diff)
SoloSelection: libardour part.
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r--libs/ardour/audioregion.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 94b931982a..1f8bbafcbc 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -509,7 +509,11 @@ AudioRegion::read_at (Sample *buf, Sample *mixdown_buffer, float *gain_buffer,
return 0; /* read nothing */
}
-
+ boost::shared_ptr<Playlist> pl (playlist());
+ if (!pl){
+ return 0;
+ }
+
/* COMPUTE DETAILS OF ANY FADES INVOLVED IN THIS READ */
/* Amount (length) of fade in that we are dealing with in this read */
@@ -605,10 +609,12 @@ AudioRegion::read_at (Sample *buf, Sample *mixdown_buffer, float *gain_buffer,
* "buf" contains data from lower regions already. So this operation
* fades out the existing material.
*/
+
+ bool is_opaque = opaque();
if (fade_in_limit != 0) {
- if (opaque()) {
+ if (is_opaque) {
if (_inverse_fade_in) {
/* explicit inverse fade in curve (e.g. for constant
@@ -652,7 +658,7 @@ AudioRegion::read_at (Sample *buf, Sample *mixdown_buffer, float *gain_buffer,
samplecnt_t const curve_offset = fade_interval_start - (_length - _fade_out->back()->when);
- if (opaque()) {
+ if (is_opaque) {
if (_inverse_fade_out) {
_inverse_fade_out->curve().get_vector (curve_offset, curve_offset + fade_out_limit, gain_buffer, fade_out_limit);
@@ -695,7 +701,7 @@ AudioRegion::read_at (Sample *buf, Sample *mixdown_buffer, float *gain_buffer,
samplecnt_t const N = to_read - fade_in_limit - fade_out_limit;
if (N > 0) {
- if (opaque ()) {
+ if (is_opaque) {
DEBUG_TRACE (DEBUG::AudioPlayback, string_compose ("Region %1 memcpy into buf @ %2 + %3, from mixdown buffer @ %4 + %5, len = %6 cnt was %7\n",
name(), buf, fade_in_limit, mixdown_buffer, fade_in_limit, N, cnt));
memcpy (buf + fade_in_limit, mixdown_buffer + fade_in_limit, N * sizeof (Sample));