feat: Enhance audio management by implementing shutdown procedures on exit
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -21,6 +21,7 @@ class NativeSubprocessAudio implements EngineAudio, DebugMusicPlayer {
|
||||
|
||||
bool _initialized = false;
|
||||
bool _isSupported = false;
|
||||
bool _disposed = false;
|
||||
_AudioBackend _backend = _AudioBackend.none;
|
||||
String _windowsShellCommand = 'powershell';
|
||||
|
||||
@@ -32,7 +33,7 @@ class NativeSubprocessAudio implements EngineAudio, DebugMusicPlayer {
|
||||
|
||||
@override
|
||||
Future<void> init() async {
|
||||
if (_initialized) {
|
||||
if (_initialized || _disposed) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -49,7 +50,25 @@ class NativeSubprocessAudio implements EngineAudio, DebugMusicPlayer {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
unawaited(stopAllAudio());
|
||||
if (_disposed) {
|
||||
return;
|
||||
}
|
||||
_disposed = true;
|
||||
|
||||
_musicLoopToken++;
|
||||
_musicProcess?.kill();
|
||||
_musicProcess = null;
|
||||
|
||||
for (final process in List<Process>.from(_sfxProcesses)) {
|
||||
process.kill();
|
||||
}
|
||||
_sfxProcesses.clear();
|
||||
|
||||
final path = _musicTempFilePath;
|
||||
_musicTempFilePath = null;
|
||||
if (path != null) {
|
||||
unawaited(_cleanupTempWav(path));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user