wip walkthrough 2 bridge: jobEvent_/MsgWaitForMultipleObjects pump, SetThreadPriority + PowerThrottling, isBypassed silence quanh assign/unload, closeGUI view->removed(), reloadForGUI reuse instance, bo mute khi GUI mo, CoInitializeEx MTA — CHƯA verified: driver test 1/3 PASS (AV c0000005 Nexus!GetPluginFactory luc attachView ch5, nghi MTA/bo mute), exe deploy giu ban 0cec3d3 (28104a47)

This commit is contained in:
2026-08-15 17:11:47 +07:00
parent 0cec3d3cce
commit f94b2fa757
6 changed files with 220 additions and 152 deletions
@@ -12,6 +12,7 @@
#include <memory>
#include <string>
#include <vector>
#include <atomic>
// FluidSynth (.sf2 / .sf3)
class FluidSynthInstrument : public INativeInstrument {
@@ -119,6 +120,9 @@ public:
size_t count() const { std::lock_guard<std::mutex> lock(mu_); return channels_.size(); }
void setBypassed(bool on) { isBypassed_.store(on); }
bool isBypassed() const { return isBypassed_.load(); }
private:
static std::unique_ptr<INativeInstrument> create_instrument(InstrumentType type);
@@ -134,6 +138,7 @@ private:
// compare inside -- Windows plugin paths are case-insensitive.
bool channelQuiet(uint32_t ch) const;
std::function<bool(const std::string&)> editorOpenFn_;
std::atomic<bool> isBypassed_{false};
};
#endif // NATIVE_INSTRUMENT_ENGINE_H