mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
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
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:
parent
55faacef96
commit
60c26a17aa
1 changed files with 6 additions and 2 deletions
|
|
@ -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 ──
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue