[Scummvm-cvs-logs] scummvm master -> 14d328facab9867f61e9b7c3e26eb62d7ccdb2e3

lordhoto lordhoto at gmail.com
Wed Nov 27 19:48:09 CET 2013


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

Summary:
f4cb2d35d4 SCUMM: Remove unsued method loadThumbnailFromSlot(int slot).
d8d6faff01 SCUMM: Slight cleanup in savegame code.
3318c4e4ac SCUMM: Slight cleanup in detection.cpp.
fdcb6a6b1a SCUMM: Cleanup querySaveMetaInfos implementation.
10def6a435 SCUMM: Small formatting fix.
14d328faca GRAPHICS: Fix SharedPtrSurfaceDeleter for nullptr inputs.


Commit: f4cb2d35d403fb160bcbf846762a36e8be5c7115
    https://github.com/scummvm/scummvm/commit/f4cb2d35d403fb160bcbf846762a36e8be5c7115
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T09:26:16-08:00

Commit Message:
SCUMM: Remove unsued method loadThumbnailFromSlot(int slot).

Changed paths:
    engines/scumm/scumm.h



diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index ca05c90..0b0c14a 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -620,9 +620,6 @@ public:
 
 // thumbnail + info stuff
 public:
-	Graphics::Surface *loadThumbnailFromSlot(int slot) {
-		return loadThumbnailFromSlot(_targetName.c_str(), slot);
-	}
 	static Graphics::Surface *loadThumbnailFromSlot(const char *target, int slot);
 
 	static bool loadInfosFromSlot(const char *target, int slot, SaveStateMetaInfos *stuff);


Commit: d8d6faff019b681c80f5e22a0e4266ecfa78f55c
    https://github.com/scummvm/scummvm/commit/d8d6faff019b681c80f5e22a0e4266ecfa78f55c
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T10:01:30-08:00

Commit Message:
SCUMM: Slight cleanup in savegame code.

Changed paths:
    engines/scumm/saveload.cpp



diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 8170a03..f9d4456 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -634,28 +634,46 @@ bool ScummEngine::getSavegameName(int slot, Common::String &desc) {
 	return result;
 }
 
-bool getSavegameName(Common::InSaveFile *in, Common::String &desc, int heversion) {
-	SaveGameHeader hdr;
-
+namespace {
+bool loadAndCheckSaveGameHeader(Common::InSaveFile *in, int heversion, SaveGameHeader &hdr, Common::String *error = nullptr) {
 	if (!loadSaveGameHeader(in, hdr)) {
-		desc = "Invalid savegame";
+		if (error) {
+			*error = "Invalid savegame";
+		}
 		return false;
 	}
 
-	if (hdr.ver > CURRENT_VER)
+	if (hdr.ver > CURRENT_VER) {
 		hdr.ver = TO_LE_32(hdr.ver);
+	}
+
 	if (hdr.ver < VER(7) || hdr.ver > CURRENT_VER) {
-		desc = "Invalid version";
+		if (error) {
+			*error = "Invalid version";
+		}
 		return false;
 	}
 
 	// We (deliberately) broke HE savegame compatibility at some point.
 	if (hdr.ver < VER(57) && heversion >= 60) {
-		desc = "Unsupported version";
+		if (error) {
+			*error = "Unsupported version";
+		}
 		return false;
 	}
 
 	hdr.name[sizeof(hdr.name) - 1] = 0;
+	return true;
+}
+} // End of anonymous namespace
+
+bool getSavegameName(Common::InSaveFile *in, Common::String &desc, int heversion) {
+	SaveGameHeader hdr;
+
+	if (!loadAndCheckSaveGameHeader(in, heversion, hdr, &desc)) {
+		return false;
+	}
+
 	desc = hdr.name;
 	return true;
 }
@@ -672,13 +690,12 @@ Graphics::Surface *ScummEngine::loadThumbnailFromSlot(const char *target, int sl
 		return 0;
 	}
 
-	if (!loadSaveGameHeader(in, hdr)) {
+	// FIXME: HE version?
+	if (!loadAndCheckSaveGameHeader(in, 0, hdr)) {
 		delete in;
 		return 0;
 	}
 
-	if (hdr.ver > CURRENT_VER)
-		hdr.ver = TO_LE_32(hdr.ver);
 	if (hdr.ver < VER(52)) {
 		delete in;
 		return 0;
@@ -705,13 +722,12 @@ bool ScummEngine::loadInfosFromSlot(const char *target, int slot, SaveStateMetaI
 		return false;
 	}
 
-	if (!loadSaveGameHeader(in, hdr)) {
+	// FIXME: HE version?
+	if (!loadAndCheckSaveGameHeader(in, 0, hdr)) {
 		delete in;
 		return false;
 	}
 
-	if (hdr.ver > CURRENT_VER)
-		hdr.ver = TO_LE_32(hdr.ver);
 	if (hdr.ver < VER(56)) {
 		delete in;
 		return false;


Commit: 3318c4e4ac04055a2d5aaf3683fd66f50b0fc5a2
    https://github.com/scummvm/scummvm/commit/3318c4e4ac04055a2d5aaf3683fd66f50b0fc5a2
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T10:03:23-08:00

Commit Message:
SCUMM: Slight cleanup in detection.cpp.

Changed paths:
    engines/scumm/detection.cpp



diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index 170ca09..d2fd007 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -1223,8 +1223,8 @@ const char *ScummMetaEngine::getOriginalCopyright() const {
 }
 
 namespace Scumm {
-	extern bool getSavegameName(Common::InSaveFile *in, Common::String &desc, int heversion);
-}
+bool getSavegameName(Common::InSaveFile *in, Common::String &desc, int heversion);
+} // End of namespace Scumm
 
 int ScummMetaEngine::getMaximumSaveSlot() const { return 99; }
 


Commit: fdcb6a6b1ae524b106a7da3bda9e0afcdf7313da
    https://github.com/scummvm/scummvm/commit/fdcb6a6b1ae524b106a7da3bda9e0afcdf7313da
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T10:29:21-08:00

Commit Message:
SCUMM: Cleanup querySaveMetaInfos implementation.

This results in less code and also less I/O operations (including seeking).

Changed paths:
    engines/scumm/detection.cpp
    engines/scumm/saveload.cpp
    engines/scumm/scumm.h



diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index d2fd007..aa7e609 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -1262,25 +1262,21 @@ void ScummMetaEngine::removeSaveState(const char *target, int slot) const {
 }
 
 SaveStateDescriptor ScummMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
-	Common::String filename = ScummEngine::makeSavegameName(target, slot, false);
-	Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(filename);
-
-	if (!in)
-		return SaveStateDescriptor();
-
 	Common::String saveDesc;
-	Scumm::getSavegameName(in, saveDesc, 0);	// FIXME: heversion?!?
-	delete in;
+	Graphics::Surface *thumbnail = nullptr;
+	SaveStateMetaInfos infos;
+	memset(&infos, 0, sizeof(infos));
+	SaveStateMetaInfos *infoPtr = &infos;
 
-	// TODO: Cleanup
-	Graphics::Surface *thumbnail = ScummEngine::loadThumbnailFromSlot(target, slot);
+	// FIXME: heversion?!?
+	if (!ScummEngine::querySaveMetaInfos(target, slot, 0, saveDesc, thumbnail, infoPtr)) {
+		return SaveStateDescriptor();
+	}
 
 	SaveStateDescriptor desc(slot, saveDesc);
 	desc.setThumbnail(thumbnail);
 
-	SaveStateMetaInfos infos;
-	memset(&infos, 0, sizeof(infos));
-	if (ScummEngine::loadInfosFromSlot(target, slot, &infos)) {
+	if (infoPtr) {
 		int day = (infos.date >> 24) & 0xFF;
 		int month = (infos.date >> 16) & 0xFF;
 		int year = infos.date & 0xFFFF;
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index f9d4456..3feab2e 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -678,72 +678,39 @@ bool getSavegameName(Common::InSaveFile *in, Common::String &desc, int heversion
 	return true;
 }
 
-Graphics::Surface *ScummEngine::loadThumbnailFromSlot(const char *target, int slot) {
-	Common::SeekableReadStream *in;
-	SaveGameHeader hdr;
-
-	if (slot < 0)
-		return 0;
-
-	Common::String filename = ScummEngine::makeSavegameName(target, slot, false);
-	if (!(in = g_system->getSavefileManager()->openForLoading(filename))) {
-		return 0;
-	}
-
-	// FIXME: HE version?
-	if (!loadAndCheckSaveGameHeader(in, 0, hdr)) {
-		delete in;
-		return 0;
-	}
-
-	if (hdr.ver < VER(52)) {
-		delete in;
-		return 0;
-	}
-
-	Graphics::Surface *thumb = 0;
-	if (Graphics::checkThumbnailHeader(*in)) {
-		thumb = Graphics::loadThumbnail(*in);
+bool ScummEngine::querySaveMetaInfos(const char *target, int slot, int heversion, Common::String &desc, Graphics::Surface *&thumbnail, SaveStateMetaInfos *&timeInfos) {
+	if (slot < 0) {
+		return false;
 	}
 
-	delete in;
-	return thumb;
-}
-
-bool ScummEngine::loadInfosFromSlot(const char *target, int slot, SaveStateMetaInfos *stuff) {
-	Common::SeekableReadStream *in;
 	SaveGameHeader hdr;
+	const Common::String filename = ScummEngine::makeSavegameName(target, slot, false);
+	Common::ScopedPtr<Common::SeekableReadStream> in(g_system->getSavefileManager()->openForLoading(filename));
 
-	if (slot < 0)
-		return 0;
-
-	Common::String filename = makeSavegameName(target, slot, false);
-	if (!(in = g_system->getSavefileManager()->openForLoading(filename))) {
+	if (!in) {
 		return false;
 	}
 
-	// FIXME: HE version?
-	if (!loadAndCheckSaveGameHeader(in, 0, hdr)) {
-		delete in;
+	if (!loadAndCheckSaveGameHeader(in.get(), heversion, hdr)) {
 		return false;
 	}
 
-	if (hdr.ver < VER(56)) {
-		delete in;
-		return false;
-	}
+	desc = hdr.name;
 
-	if (!Graphics::skipThumbnail(*in)) {
-		delete in;
-		return false;
-	}
+	if (hdr.ver > VER(52)) {
+		if (Graphics::checkThumbnailHeader(*in)) {
+			thumbnail = Graphics::loadThumbnail(*in);
+		}
 
-	if (!loadInfos(in, stuff)) {
-		delete in;
-		return false;
+		if (hdr.ver > VER(57)) {
+			if (!loadInfos(in.get(), timeInfos)) {
+				return false;
+			}
+		} else {
+			timeInfos = nullptr;
+		}
 	}
 
-	delete in;
 	return true;
 }
 
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index 0b0c14a..942e8a6 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -620,9 +620,7 @@ public:
 
 // thumbnail + info stuff
 public:
-	static Graphics::Surface *loadThumbnailFromSlot(const char *target, int slot);
-
-	static bool loadInfosFromSlot(const char *target, int slot, SaveStateMetaInfos *stuff);
+	static bool querySaveMetaInfos(const char *target, int slot, int heversion, Common::String &desc, Graphics::Surface *&thumbnail, SaveStateMetaInfos *&timeInfos);
 
 protected:
 	void saveInfos(Common::WriteStream* file);


Commit: 10def6a4353a081871065ed5622023e6f4f865bb
    https://github.com/scummvm/scummvm/commit/10def6a4353a081871065ed5622023e6f4f865bb
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T10:32:08-08:00

Commit Message:
SCUMM: Small formatting fix.

Changed paths:
    engines/scumm/saveload.cpp
    engines/scumm/scumm.h



diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 3feab2e..5197e07 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -764,7 +764,7 @@ bool ScummEngine::loadInfos(Common::SeekableReadStream *file, SaveStateMetaInfos
 	return true;
 }
 
-void ScummEngine::saveInfos(Common::WriteStream* file) {
+void ScummEngine::saveInfos(Common::WriteStream *file) {
 	SaveInfoSection section;
 	section.type = MKTAG('I','N','F','O');
 	section.version = INFOSECTION_VERSION;
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index 942e8a6..f192a1e 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -623,7 +623,7 @@ public:
 	static bool querySaveMetaInfos(const char *target, int slot, int heversion, Common::String &desc, Graphics::Surface *&thumbnail, SaveStateMetaInfos *&timeInfos);
 
 protected:
-	void saveInfos(Common::WriteStream* file);
+	void saveInfos(Common::WriteStream *file);
 	static bool loadInfos(Common::SeekableReadStream *file, SaveStateMetaInfos *stuff);
 
 protected:


Commit: 14d328facab9867f61e9b7c3e26eb62d7ccdb2e3
    https://github.com/scummvm/scummvm/commit/14d328facab9867f61e9b7c3e26eb62d7ccdb2e3
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2013-11-27T10:44:54-08:00

Commit Message:
GRAPHICS: Fix SharedPtrSurfaceDeleter for nullptr inputs.

Changed paths:
    graphics/surface.h



diff --git a/graphics/surface.h b/graphics/surface.h
index 07e289b..f1b2aa6 100644
--- a/graphics/surface.h
+++ b/graphics/surface.h
@@ -334,7 +334,9 @@ public:
  */
 struct SharedPtrSurfaceDeleter {
 	void operator()(Surface *ptr) {
-		ptr->free();
+		if (ptr) {
+			ptr->free();
+		}
 		delete ptr;
 	}
 };






More information about the Scummvm-git-logs mailing list