fix(instrument_drop_win): UTF-8 temp path, PID collision guard, embed-strip excluded from drop hotspot
This commit is contained in:
@@ -92,10 +92,16 @@ std::vector<std::uint8_t> buildInstrumentDropPreset(const std::string& sampleId)
|
||||
bool infoNamesFxHotspot(const std::string& info) {
|
||||
// See the header contract. Prefix rule (S-GA-DropFX): "fx_" names the FX-chain /
|
||||
// floating-FX windows; "tcp.fx" / "mcp.fx" prefixes name the TCP/MCP FX button and its
|
||||
// sibling FX sub-elements (fxbyp/fxparm/fxembed/fxlist...), tolerant of the
|
||||
// SDK-documented "may append additional information". Bare "tcp"/"mcp" and non-FX
|
||||
// sub-elements ("tcp.mute", "tcp.vol") must NOT trigger an instrument drop.
|
||||
// sibling FX sub-elements (fxbyp/fxparm/fxlist...), tolerant of the SDK-documented "may
|
||||
// append additional information". Bare "tcp"/"mcp" and non-FX sub-elements ("tcp.mute",
|
||||
// "tcp.vol") must NOT trigger an instrument drop.
|
||||
//
|
||||
// EXCLUDE the embed-strip sub-element ("tcp.fxembed" / "mcp.fxembed"): that is the
|
||||
// surface where a ReaSampler 9000 embed strip draws inside the TCP/MCP. Dropping a card
|
||||
// there must NOT add a SECOND instance — the surface is the existing instance's own UI,
|
||||
// not an FX-chain drop target. It starts with "tcp.fx" so it must be explicitly excluded.
|
||||
auto startsWith = [&info](const char* p) { return info.rfind(p, 0) == 0; };
|
||||
if (startsWith("tcp.fxembed") || startsWith("mcp.fxembed")) return false;
|
||||
return startsWith("fx_") || startsWith("tcp.fx") || startsWith("mcp.fx");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user