[Scummvm-git-logs] scummvm master -> 6fe801e3cd5826195c2f8731e7e78bdf04074bfc

dreammaster dreammaster at scummvm.org
Tue Nov 21 13:25:27 CET 2017


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b20670e564 TSAGE: Remove member access of null pointer
7fc9e381b8 TSAGE: Fix invalid C-style casts to unrelated classes
fe45300891 TSAGE: Fix deadlocks in audio code
2e034c0550 TSAGE: Fix crash on RTL
6fe801e3cd Merge pull request #1065 from csnover/tsage-fixes


Commit: b20670e5645c06c695ad06d6da9dcf7d9e5b0324
    https://github.com/scummvm/scummvm/commit/b20670e5645c06c695ad06d6da9dcf7d9e5b0324
Author: Colin Snover (github.com at zetafleet.com)
Date: 2017-11-20T18:43:17-06:00

Commit Message:
TSAGE: Remove member access of null pointer

Changed paths:
    engines/tsage/sound.cpp
    engines/tsage/sound.h


diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index 0d3fb55..5787bac 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -147,10 +147,6 @@ void SoundManager::syncSounds() {
 	}
 }
 
-void SoundManager::update() {
-	sfSoundServer();
-}
-
 Common::List<SoundDriverEntry> &SoundManager::buildDriverList(bool detectFlag) {
 	assert(_sndmgrReady);
 	_availableDrivers.clear();
@@ -544,10 +540,6 @@ void SoundManager::sfUpdateVoiceStructs2() {
 	}
 }
 
-void SoundManager::sfUpdateCallback(void *ref) {
-	((SoundManager *)ref)->update();
-}
-
 /*--------------------------------------------------------------------------*/
 
 void SoundManager::saveNotifier(bool postFlag) {
@@ -3016,7 +3008,7 @@ void AdlibSoundDriver::onTimer() {
 	Common::StackLock slock1(SoundManager::sfManager()._serverDisabledMutex);
 	Common::StackLock slock2(SoundManager::sfManager()._serverSuspendedMutex);
 
-	SoundManager::sfUpdateCallback(NULL);
+	SoundManager::sfSoundServer();
 	flush();
 }
 
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index da56c8b..8215d6e 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -196,7 +196,6 @@ public:
 	virtual void listenerSynchronize(Serializer &s);
 	virtual void postInit();
 	void syncSounds();
-	void update();
 
 	static void saveNotifier(bool postFlag);
 	void saveNotifierProc(bool postFlag);
@@ -256,7 +255,6 @@ public:
 	static void sfProcessFading();
 	static void sfUpdateVoiceStructs();
 	static void sfUpdateVoiceStructs2();
-	static void sfUpdateCallback(void *ref);
 };
 
 class Sound: public EventHandler {


Commit: 7fc9e381b8069335ec85de481fa843d57f951218
    https://github.com/scummvm/scummvm/commit/7fc9e381b8069335ec85de481fa843d57f951218
Author: Colin Snover (github.com at zetafleet.com)
Date: 2017-11-20T18:43:18-06:00

Commit Message:
TSAGE: Fix invalid C-style casts to unrelated classes

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/user_interface.cpp


diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index a3ed3ab..247070d 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -93,7 +93,7 @@ InvObject::InvObject(int strip, int frame) {
 void InvObject::setCursor() {
 	if (g_vm->getGameID() != GType_Ringworld) {
 		// All other games
-		_cursorId = (CursorType)BF_GLOBALS._inventory->indexOf(this);
+		_cursorId = (CursorType)g_globals->_inventory->indexOf(this);
 		g_globals->_events.setCursor(_cursorId);
 	} else {
 		// Ringworld cursor handling
diff --git a/engines/tsage/user_interface.cpp b/engines/tsage/user_interface.cpp
index fffc0dc..d5e40cb 100644
--- a/engines/tsage/user_interface.cpp
+++ b/engines/tsage/user_interface.cpp
@@ -205,7 +205,7 @@ void UIInventoryScroll::process(Event &event) {
 		toggle(true);
 
 		// Wait for the mouse to be released
-		BF_GLOBALS._events.waitForPress(EVENT_BUTTON_UP);
+		g_globals->_events.waitForPress(EVENT_BUTTON_UP);
 
 		// Restore unselected version
 		toggle(false);


Commit: fe45300891fea90f7ad72d66af7f060c3ec6b753
    https://github.com/scummvm/scummvm/commit/fe45300891fea90f7ad72d66af7f060c3ec6b753
Author: Colin Snover (github.com at zetafleet.com)
Date: 2017-11-20T18:43:18-06:00

Commit Message:
TSAGE: Fix deadlocks in audio code

Fixes Trac#6618, Trac#6638, Trac#7011.

Changed paths:
    engines/tsage/sound.cpp
    engines/tsage/sound.h


diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index 5787bac..a910bd1 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -23,6 +23,7 @@
 #include "audio/fmopl.h"
 #include "audio/decoders/raw.h"
 #include "common/config-manager.h"
+#include "common/timer.h"
 #include "audio/audiostream.h"
 #include "tsage/core.h"
 #include "tsage/globals.h"
@@ -70,7 +71,7 @@ SoundManager::~SoundManager() {
 		}
 		sfTerminate();
 
-//		g_system->getTimerManager()->removeTimerProc(_sfUpdateCallback);
+		g_system->getTimerManager()->removeTimerProc(&sfSoundServer);
 	}
 
 	// Free any allocated voice type structures
@@ -90,12 +91,7 @@ void SoundManager::postInit() {
 		g_saver->addLoadNotifier(&SoundManager::loadNotifier);
 		g_saver->addListener(this);
 
-
-//	I originally separated the sound manager update method into a separate thread, since
-//  it handles updates for both music and Fx. However, since Adlib updates also get done in a
-//	thread, and doesn't get too far ahead, I've left it to the AdlibSoundDriver class to
-//	call the update method, rather than having it be called separately
-//		g_system->getTimerManager()->installTimerProc(_sfUpdateCallback, 1000000 / SOUND_FREQUENCY, NULL, "tsageSoundUpdate");
+		g_system->getTimerManager()->installTimerProc(&sfSoundServer, 1000000 / CALLBACKS_PER_SECOND, NULL, "tsageSoundUpdate");
 		_sndmgrReady = true;
 	}
 }
@@ -378,7 +374,10 @@ void SoundManager::rethinkVoiceTypes() {
 	sfRethinkVoiceTypes();
 }
 
-void SoundManager::sfSoundServer() {
+void SoundManager::sfSoundServer(void *) {
+	Common::StackLock slock1(SoundManager::sfManager()._serverDisabledMutex);
+	Common::StackLock slock2(SoundManager::sfManager()._serverSuspendedMutex);
+
 	if (sfManager()._needToRethink) {
 		sfRethinkVoiceTypes();
 		sfManager()._needToRethink = false;
@@ -2871,13 +2870,13 @@ void AdlibSoundDriver::setPitch(int channel, int pitchBlend) {
 }
 
 void AdlibSoundDriver::write(byte reg, byte value) {
+	Common::StackLock lock(_queueMutex);
 	_portContents[reg] = value;
 	_queue.push(RegisterValue(reg, value));
 }
 
 void AdlibSoundDriver::flush() {
-	Common::StackLock slock(SoundManager::sfManager()._serverDisabledMutex);
-
+	Common::StackLock lock(_queueMutex);
 	while (!_queue.empty()) {
 		RegisterValue v = _queue.pop();
 		_opl->writeReg(v._regNum, v._value);
@@ -3005,10 +3004,6 @@ void AdlibSoundDriver::setFrequency(int channel) {
 }
 
 void AdlibSoundDriver::onTimer() {
-	Common::StackLock slock1(SoundManager::sfManager()._serverDisabledMutex);
-	Common::StackLock slock2(SoundManager::sfManager()._serverSuspendedMutex);
-
-	SoundManager::sfSoundServer();
 	flush();
 }
 
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index 8215d6e..6d6b480 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -251,7 +251,7 @@ public:
 	static void sfDoAddToPlayList(Sound *sound);
 	static bool sfDoRemoveFromPlayList(Sound *sound);
 	static void sfDoUpdateVolume(Sound *sound);
-	static void sfSoundServer();
+	static void sfSoundServer(void *);
 	static void sfProcessFading();
 	static void sfUpdateVoiceStructs();
 	static void sfUpdateVoiceStructs2();
@@ -458,6 +458,7 @@ private:
 	byte _portContents[256];
 	const byte *_patchData;
 	int _masterVolume;
+	Common::Mutex _queueMutex;
 	Common::Queue<RegisterValue> _queue;
 
 	bool _channelVoiced[ADLIB_CHANNEL_COUNT];


Commit: 2e034c0550db4dd443f4cb5464513a87ce0f404b
    https://github.com/scummvm/scummvm/commit/2e034c0550db4dd443f4cb5464513a87ce0f404b
Author: Colin Snover (github.com at zetafleet.com)
Date: 2017-11-20T18:43:18-06:00

Commit Message:
TSAGE: Fix crash on RTL

Changed paths:
    engines/tsage/sound.cpp


diff --git a/engines/tsage/sound.cpp b/engines/tsage/sound.cpp
index a910bd1..044bd56 100644
--- a/engines/tsage/sound.cpp
+++ b/engines/tsage/sound.cpp
@@ -1553,7 +1553,9 @@ void Sound::play(int soundNum) {
 }
 
 void Sound::stop() {
-	g_globals->_soundManager.removeFromPlayList(this);
+	if (g_globals) {
+		g_globals->_soundManager.removeFromPlayList(this);
+	}
 	_unPrime();
 }
 


Commit: 6fe801e3cd5826195c2f8731e7e78bdf04074bfc
    https://github.com/scummvm/scummvm/commit/6fe801e3cd5826195c2f8731e7e78bdf04074bfc
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-11-21T07:25:21-05:00

Commit Message:
Merge pull request #1065 from csnover/tsage-fixes

TSAGE: Various fixes

Changed paths:
    engines/tsage/core.cpp
    engines/tsage/sound.cpp
    engines/tsage/sound.h
    engines/tsage/user_interface.cpp







More information about the Scummvm-git-logs mailing list