[Scummvm-git-logs] scummvm master -> 926d5fd0b709152ebab7d8de19dc89b38d74042f

bluegr noreply at scummvm.org
Sun Mar 17 11:58:14 UTC 2024


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

Summary:
198e346bf8 Revert "AMIGAOS: Cleanup and free signals via atexit()"
926d5fd0b7 AMIGAOS: Cleanup and free signals via atexit(), 2nd attempt


Commit: 198e346bf8f28a83fdbe1604a9d19f848ceda7cb
    https://github.com/scummvm/scummvm/commit/198e346bf8f28a83fdbe1604a9d19f848ceda7cb
Author: Hubert Maier (raziel- at users.noreply.github.com)
Date: 2024-03-17T13:58:10+02:00

Commit Message:
Revert "AMIGAOS: Cleanup and free signals via atexit()"

This reverts commit e7fa1613861556bdae2195351a1189f0df6c1e8f.

The change sometimes caused ISI crashes on "normal" quits of ScummVM.

Changed paths:
    backends/platform/sdl/amigaos/amigaos-main.cpp


diff --git a/backends/platform/sdl/amigaos/amigaos-main.cpp b/backends/platform/sdl/amigaos/amigaos-main.cpp
index 71a63177113..7a5dddf6772 100644
--- a/backends/platform/sdl/amigaos/amigaos-main.cpp
+++ b/backends/platform/sdl/amigaos/amigaos-main.cpp
@@ -28,10 +28,6 @@
 #include "backends/plugins/sdl/sdl-provider.h"
 #include "base/main.h"
 
-static void cleanup() {
-	g_system->destroy();
-}
-
 int main(int argc, char *argv[]) {
 
 	// Update support (AmiUpdate):
@@ -67,9 +63,6 @@ int main(int argc, char *argv[]) {
 	g_system = new OSystem_AmigaOS();
 	assert(g_system);
 
-	// Register cleanup function to avoid unfreed signals
-	atexit(cleanup);
-
 	// Pre-initialize the backend.
 	g_system->init();
 
@@ -81,8 +74,7 @@ int main(int argc, char *argv[]) {
 	int res = scummvm_main(argc, argv);
 
 	// Free OSystem.
-	// This is now handled by cleanup() via atexit()
-	//g_system->destroy();
+	g_system->destroy();
 
 	return res;
 }


Commit: 926d5fd0b709152ebab7d8de19dc89b38d74042f
    https://github.com/scummvm/scummvm/commit/926d5fd0b709152ebab7d8de19dc89b38d74042f
Author: PushmePullyu (127053144+PushmePullyu at users.noreply.github.com)
Date: 2024-03-17T13:58:10+02:00

Commit Message:
AMIGAOS: Cleanup and free signals via atexit(), 2nd attempt

Second attempt at fixing #6956
"ScummVM returned with unfreed signals (AmigaOS4)"

This only runs the cleanup code if the OSystem_AmigaOS
instance has not been destroyed already.

Changed paths:
    backends/platform/sdl/amigaos/amigaos.cpp
    backends/platform/sdl/amigaos/amigaos.h


diff --git a/backends/platform/sdl/amigaos/amigaos.cpp b/backends/platform/sdl/amigaos/amigaos.cpp
index 2fd1d7f02aa..ca3e99af216 100644
--- a/backends/platform/sdl/amigaos/amigaos.cpp
+++ b/backends/platform/sdl/amigaos/amigaos.cpp
@@ -27,7 +27,22 @@
 #include "backends/fs/amigaos/amigaos-fs-factory.h"
 #include "backends/dialogs/amigaos/amigaos-dialogs.h"
 
+static bool cleanupDone = false;
+
+static void cleanup() {
+	if (!cleanupDone)
+		g_system->destroy();
+}
+
+OSystem_AmigaOS::~OSystem_AmigaOS() {
+	cleanupDone = true;
+}
+
 void OSystem_AmigaOS::init() {
+	// Register cleanup function to avoid unfreed signals
+	if (atexit(cleanup))
+		warning("Failed to register cleanup function via atexit()");
+
 	// Initialize File System Factory
 	_fsFactory = new AmigaOSFilesystemFactory();
 
diff --git a/backends/platform/sdl/amigaos/amigaos.h b/backends/platform/sdl/amigaos/amigaos.h
index 32cb85f8d30..616aee02cd3 100644
--- a/backends/platform/sdl/amigaos/amigaos.h
+++ b/backends/platform/sdl/amigaos/amigaos.h
@@ -27,7 +27,7 @@
 class OSystem_AmigaOS : public OSystem_SDL {
 public:
 	OSystem_AmigaOS() {}
-	virtual ~OSystem_AmigaOS() {}
+	virtual ~OSystem_AmigaOS();
 
 	bool hasFeature(Feature f) override;
 




More information about the Scummvm-git-logs mailing list