From 2d1fa6c3f8bdc635d49978ad48f72619707d6893 Mon Sep 17 00:00:00 2001 From: athrxx Date: Fri, 20 May 2011 16:06:14 +0200 Subject: FM-TOWNS AUDIO: fix thread lockups and cleanup - fixed lockup situation in imuse destructor (only concerning the fm-towns driver) - fixed lockup situation when AudioCDManager functions get called (in both cases both the main thread and the mixer thread would get locked in different mutex belonging to the other thread) --- engines/scumm/player_towns.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/player_towns.cpp b/engines/scumm/player_towns.cpp index 5d49478cb0..15b2f65797 100644 --- a/engines/scumm/player_towns.cpp +++ b/engines/scumm/player_towns.cpp @@ -581,11 +581,14 @@ Player_Towns_v2::Player_Towns_v2(ScummEngine *vm, Audio::Mixer *mixer, IMuse *im } Player_Towns_v2::~Player_Towns_v2() { - delete _intf; - _intf = 0; - + // Avoid lockup in imuse.cpp, line 78 + _intf->lockInternal(); if (_imuseDispose) delete _imuse; + _intf->unlockInternal(); + + delete _intf; + _intf = 0; delete[] _sblData; delete[] _soundOverride; -- cgit v1.2.3