13
0

add ProcessedRanges element to Session and update its contents appropriately

This commit is contained in:
Paul Davis 2023-03-23 18:37:34 -06:00
parent af37406ed8
commit 33047987a7
3 changed files with 28 additions and 0 deletions

View File

@ -1388,6 +1388,12 @@ public:
void globally_change_time_domain (Temporal::TimeDomain from, Temporal::TimeDomain to); void globally_change_time_domain (Temporal::TimeDomain from, Temporal::TimeDomain to);
/* Can be accessed only in process() context, and only after
* Session::process() has returned.
*/
ProcessedRanges processed_ranges;
protected: protected:
friend class AudioEngine; friend class AudioEngine;
void set_block_size (pframes_t nframes); void set_block_size (pframes_t nframes);

View File

@ -117,6 +117,16 @@ Session::process (pframes_t nframes)
io_graph_chain.reset (); /* drop reference */ io_graph_chain.reset (); /* drop reference */
} }
/* set up processed_ranges with the default values.
This will be updated by ::process_without_events(),
::process_with_events() and ::locate()
*/
processed_ranges.start[0] = _transport_sample;
processed_ranges.end[0] = _transport_sample;
processed_ranges.cnt = 1;
(this->*process_function) (nframes); (this->*process_function) (nframes);
io_graph_chain = _io_graph_chain[1]; io_graph_chain = _io_graph_chain[1];
@ -188,6 +198,8 @@ Session::process (pframes_t nframes)
/* don't bother with a message */ /* don't bother with a message */
} }
processed_ranges.end[processed_ranges.cnt - 1] = _transport_sample;
SendFeedback (); /* EMIT SIGNAL */ SendFeedback (); /* EMIT SIGNAL */
} }
@ -657,6 +669,8 @@ Session::process_with_events (pframes_t nframes)
} /* implicit release of route lock */ } /* implicit release of route lock */
processed_ranges.end[processed_ranges.cnt - 1] = _transport_sample;
clear_active_cue (); clear_active_cue ();
if (session_needs_butler) { if (session_needs_butler) {
@ -750,6 +764,8 @@ Session::process_without_events (pframes_t nframes)
DEBUG_TRACE (DEBUG::Butler, "p-without-events: session needs butler, call it\n"); DEBUG_TRACE (DEBUG::Butler, "p-without-events: session needs butler, call it\n");
_butler->summon (); _butler->summon ();
} }
processed_ranges.end[processed_ranges.cnt - 1] = _transport_sample;
} }
/** Process callback used when the auditioner is active. /** Process callback used when the auditioner is active.

View File

@ -296,6 +296,12 @@ Session::locate (samplepos_t target_sample, bool for_loop_end, bool force, bool
send_mmc_locate (_transport_sample); send_mmc_locate (_transport_sample);
} }
if (for_loop_end) {
processed_ranges.end[0] = existing;
processed_ranges.start[1] = _transport_sample;
processed_ranges.cnt = 2;
}
_last_roll_location = _last_roll_or_reversal_location = _transport_sample; _last_roll_location = _last_roll_or_reversal_location = _transport_sample;
Located (); /* EMIT SIGNAL */ Located (); /* EMIT SIGNAL */