add ProcessedRanges element to Session and update its contents appropriately
This commit is contained in:
parent
af37406ed8
commit
33047987a7
@ -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);
|
||||||
|
@ -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.
|
||||||
|
@ -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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user