fix(master-fx): loại double-processing khi load VST FX vào master fx chain
- Bỏ push setFxChain xuống native bridge (T2.4) — SHM fxRt loop (fx_vst_bridge --realtime-fx) là nơi xử lý live master mix duy nhất; trước đây MIDI/VSTi instrument bị xử lý 2 lần (native bridge + SHM loop) → over-process, âm bể/crackle. setFxChain vẫn dùng khi Export/Offline render. - closeMasterGui/closeFxGui: POST /close (kill process) thay vì /hide — không còn cửa sổ floating always-on-top lơ lửng, tắt được dứt điểm. - openFxGui already_running kèm embed_url → mở lại embed panel thay vì chỉ toast. - open_fx_gui (plugins.py): spawn fx-gui với SF_PARENT_PID=<engine pid>. - RenderFxJob.cpp: watchdog thread trong run_open_fx_gui/run_fx_gui_server — engine chết → WM_CLOSE, GUI process tự thoát, không để lại cửa sổ mồ côi.
This commit is contained in:
@@ -845,6 +845,7 @@ async def open_fx_gui(req: FxGuiRequest, current_user: dict = Depends(get_curren
|
||||
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT, text=True,
|
||||
close_fds=os.name != "nt",
|
||||
env=dict(os.environ, SF_PARENT_PID=str(os.getpid())),
|
||||
creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0)
|
||||
# Bridge prints SF_FXGUI_PORT=<port> after binding its HTTP server.
|
||||
embed_url = None
|
||||
@@ -870,6 +871,7 @@ async def open_fx_gui(req: FxGuiRequest, current_user: dict = Depends(get_curren
|
||||
return {"success": True, "started": True, "already_running": False,
|
||||
"embed_url": embed_url, "cmd": cmd}
|
||||
proc = subprocess.Popen(cmd, close_fds=os.name != "nt",
|
||||
env=dict(os.environ, SF_PARENT_PID=str(os.getpid())),
|
||||
creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0)
|
||||
proc._sf_plugin_path = plugin_path
|
||||
_register_fx_gui_process(proc)
|
||||
|
||||
Reference in New Issue
Block a user