[Scummvm-git-logs] scummvm master -> 4e67a5ef82a9e711076dddfd28c6b24d5c4fe41d

OMGPizzaGuy 48367439+OMGPizzaGuy at users.noreply.github.com
Mon Jun 15 23:53:18 UTC 2020


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

Summary:
4e67a5ef82 ULTIMA8: Cleanup singletons to fix shutdown and implement return to launcher event


Commit: 4e67a5ef82a9e711076dddfd28c6b24d5c4fe41d
    https://github.com/scummvm/scummvm/commit/4e67a5ef82a9e711076dddfd28c6b24d5c4fe41d
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2020-06-15T18:52:53-05:00

Commit Message:
ULTIMA8: Cleanup singletons to fix shutdown and implement return to launcher event

Changed paths:
    engines/ultima/ultima8/audio/audio_mixer.cpp
    engines/ultima/ultima8/audio/music_process.cpp
    engines/ultima/ultima8/audio/music_process.h
    engines/ultima/ultima8/games/remorse_game.h
    engines/ultima/ultima8/kernel/mouse.cpp
    engines/ultima/ultima8/kernel/mouse.h
    engines/ultima/ultima8/ultima8.cpp


diff --git a/engines/ultima/ultima8/audio/audio_mixer.cpp b/engines/ultima/ultima8/audio/audio_mixer.cpp
index 1add430ecb..f660fb5874 100644
--- a/engines/ultima/ultima8/audio/audio_mixer.cpp
+++ b/engines/ultima/ultima8/audio/audio_mixer.cpp
@@ -61,6 +61,8 @@ void AudioMixer::createProcesses() {
 }
 
 AudioMixer::~AudioMixer(void) {
+	_audioMixer = nullptr;
+
 	debugN(MM_INFO, "Destroying AudioMixer...\n");
 
 	closeMidiOutput();
diff --git a/engines/ultima/ultima8/audio/music_process.cpp b/engines/ultima/ultima8/audio/music_process.cpp
index 07c04a096e..243fdfca58 100644
--- a/engines/ultima/ultima8/audio/music_process.cpp
+++ b/engines/ultima/ultima8/audio/music_process.cpp
@@ -41,6 +41,10 @@ MusicProcess::MusicProcess() {
 	setRunPaused();
 }
 
+MusicProcess::~MusicProcess() {
+	_theMusicProcess = nullptr;
+}
+
 uint32 MusicProcess::I_musicStop(const uint8 * /*args*/,
                                  unsigned int /*argsize*/) {
 	if (_theMusicProcess) _theMusicProcess->playMusic_internal(0);
diff --git a/engines/ultima/ultima8/audio/music_process.h b/engines/ultima/ultima8/audio/music_process.h
index 51318d8ba1..9b2b4d503e 100644
--- a/engines/ultima/ultima8/audio/music_process.h
+++ b/engines/ultima/ultima8/audio/music_process.h
@@ -46,6 +46,7 @@ protected:
 
 public:
 	MusicProcess();
+	~MusicProcess() override;
 
 	// p_dynamic_cast stuff
 	ENABLE_RUNTIME_CLASSTYPE()
diff --git a/engines/ultima/ultima8/games/remorse_game.h b/engines/ultima/ultima8/games/remorse_game.h
index 30012acedc..478b4add6c 100644
--- a/engines/ultima/ultima8/games/remorse_game.h
+++ b/engines/ultima/ultima8/games/remorse_game.h
@@ -50,9 +50,6 @@ public:
 	ProcId playEndgameMovie(bool fade) override;
 	void playCredits() override;
 	void playQuotes() override { };
-
-protected:
-	static Game *_game;
 };
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/kernel/mouse.cpp b/engines/ultima/ultima8/kernel/mouse.cpp
index a281397304..d2a1933305 100644
--- a/engines/ultima/ultima8/kernel/mouse.cpp
+++ b/engines/ultima/ultima8/kernel/mouse.cpp
@@ -37,7 +37,7 @@
 namespace Ultima {
 namespace Ultima8 {
 
-Mouse *Mouse::_instance;
+Mouse *Mouse::_instance = nullptr;
 
 Mouse::Mouse() : _flashingCursorTime(0), _mouseOverGump(0), _defaultMouse(nullptr),
 		_dragging(DRAG_NOT), _dragging_objId(0), _draggingItem_startGump(0),
@@ -45,6 +45,10 @@ Mouse::Mouse() : _flashingCursorTime(0), _mouseOverGump(0), _defaultMouse(nullpt
 	_instance = this;
 }
 
+Mouse::~Mouse() {
+	_instance = nullptr;
+}
+
 void Mouse::setup() {
 	FileSystem *filesys = FileSystem::get_instance();
 	Common::SeekableReadStream *dm = filesys->ReadFile("@data/mouse.tga");
diff --git a/engines/ultima/ultima8/kernel/mouse.h b/engines/ultima/ultima8/kernel/mouse.h
index 1e58c03645..c92fa158a8 100644
--- a/engines/ultima/ultima8/kernel/mouse.h
+++ b/engines/ultima/ultima8/kernel/mouse.h
@@ -129,6 +129,7 @@ public:
 	static Mouse *get_instance() { return _instance; }
 public:
 	Mouse();
+	~Mouse();
 
 	/**
 	 * Setup the mouse cursors
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index b1ca9b3719..e397085083 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -378,6 +378,7 @@ void Ultima8Engine::shutdownGame(bool reloading) {
 	if (_audioMixer) {
 		_audioMixer->closeMidiOutput();
 		_audioMixer->reset();
+		FORGET_OBJECT(_audioMixer);
 	}
 
 	_desktopGump = nullptr;
@@ -730,6 +731,7 @@ void Ultima8Engine::handleEvent(const Common::Event &event) {
 		return;
 
 	case Common::EVENT_QUIT:
+	case Common::EVENT_RETURN_TO_LAUNCHER:
 		_isRunning = false;
 		break;
 




More information about the Scummvm-git-logs mailing list