Render in place: a track's output to a new sibling, source to the bench
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
// Compiled into the reaper_reasampler MODULE, without REAPERAPI_IMPLEMENT (main.cpp
|
||||
// owns the API pointers). DAW-verified, not unit-tested.
|
||||
|
||||
#include <algorithm>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <string>
|
||||
@@ -163,11 +164,19 @@ bool detectNewContent() {
|
||||
std::map<std::string, std::vector<std::string>> trackItemGuids;
|
||||
enumerateLiveGuids(proj, live, itemOnManualLane, trackItemGuids);
|
||||
|
||||
const std::vector<std::string> added = g_panel.contentBaseline.observe(live);
|
||||
std::vector<std::string> added = g_panel.contentBaseline.observe(live);
|
||||
if (added.empty()) return false; // first poll after open, or nothing new this tick
|
||||
|
||||
ViewModeModel& model = g_panel.session->view();
|
||||
|
||||
// An explicit tag wins: this detector classifies content the USER made, not
|
||||
// content the tool made and already classified.
|
||||
added.erase(std::remove_if(added.begin(), added.end(),
|
||||
[&](const std::string& g) {
|
||||
return model.membership().query(g) != nullptr;
|
||||
}),
|
||||
added.end());
|
||||
|
||||
// Which of `added` are items (the manual-lane map keys every item; track GUIDs never
|
||||
// appear there). Used below to exclude sibling new items from a track's PRE-EXISTING
|
||||
// mode set — a drop plus its own new siblings must not count each other as prior.
|
||||
|
||||
Reference in New Issue
Block a user