Fix audio playback not stopping when Stop button clicked
Some checks are pending
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run

Use spawn context for clean subprocess isolation and add kill() fallback
after terminate() to ensure the audio process is reliably stopped.
This commit is contained in:
Kelsi 2026-02-23 22:26:17 -08:00
parent 55faacef96
commit 60c26a17aa

View file

@ -1800,7 +1800,8 @@ class AssetPipelineGUI:
self._browser_stop_audio() self._browser_stop_audio()
try: try:
import multiprocessing import multiprocessing
self._audio_proc = multiprocessing.Process( ctx = multiprocessing.get_context("spawn")
self._audio_proc = ctx.Process(
target=_audio_subprocess, args=(str(file_path),), daemon=True) target=_audio_subprocess, args=(str(file_path),), daemon=True)
self._audio_proc.start() self._audio_proc.start()
self._audio_status_var.set("Playing...") self._audio_status_var.set("Playing...")
@ -1818,7 +1819,10 @@ class AssetPipelineGUI:
proc = getattr(self, "_audio_proc", None) proc = getattr(self, "_audio_proc", None)
if proc and proc.is_alive(): if proc and proc.is_alive():
proc.terminate() proc.terminate()
proc.join(timeout=1) proc.join(timeout=0.5)
if proc.is_alive():
proc.kill()
proc.join(timeout=0.5)
self._audio_proc = None self._audio_proc = None
# ── Hex Dump Preview ── # ── Hex Dump Preview ──