[Scummvm-git-logs] scummvm master -> 45f1fd0e8e4fac90a76ec18c891933eba803922a

bgK bastien.bouclet at gmail.com
Sat Jan 13 17:22:22 CET 2018


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

Summary:
2c8afb2bd2 COMMON: Add a reset method to DisposablePtr
8fe7d520be VKEYBD: Fallback to SearchMan when loading keyboard packs
3b8ffa0812 BACKENDS: Remove vkeybdpath override from some ports
45f1fd0e8e Merge pull request #1097 from bgK/vkeybd-data-path


Commit: 2c8afb2bd25ed9992663f0fba0aeb2e43136c64f
    https://github.com/scummvm/scummvm/commit/2c8afb2bd25ed9992663f0fba0aeb2e43136c64f
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-12-28T21:18:51+01:00

Commit Message:
COMMON: Add a reset method to DisposablePtr

Changed paths:
    common/ptr.h


diff --git a/common/ptr.h b/common/ptr.h
index f592beb..f3b2f3c 100644
--- a/common/ptr.h
+++ b/common/ptr.h
@@ -302,6 +302,22 @@ public:
 	bool operator_bool() const { return _pointer != nullptr; }
 
 	/**
+	 * Resets the pointer with the new value. Old object will be destroyed
+	 */
+	void reset(PointerType o, DisposeAfterUse::Flag dispose) {
+		if (_dispose) D()(_pointer);
+		_pointer = o;
+		_dispose = dispose;
+	}
+
+	/**
+	 * Clears the pointer. Old object will be destroyed
+	 */
+	void reset() {
+		reset(nullptr, DisposeAfterUse::NO);
+	}
+
+	/**
 	 * Returns the plain pointer value.
 	 *
 	 * @return the pointer the DisposablePtr manages


Commit: 8fe7d520beb49d09db41b07a4047aac7d7d6623e
    https://github.com/scummvm/scummvm/commit/8fe7d520beb49d09db41b07a4047aac7d7d6623e
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-12-28T21:24:57+01:00

Commit Message:
VKEYBD: Fallback to SearchMan when loading keyboard packs

Changed paths:
    backends/vkeybd/virtual-keyboard.cpp
    backends/vkeybd/virtual-keyboard.h


diff --git a/backends/vkeybd/virtual-keyboard.cpp b/backends/vkeybd/virtual-keyboard.cpp
index 80d7313..267448c 100644
--- a/backends/vkeybd/virtual-keyboard.cpp
+++ b/backends/vkeybd/virtual-keyboard.cpp
@@ -38,21 +38,21 @@
 
 namespace Common {
 
-VirtualKeyboard::VirtualKeyboard() : _currentMode(0) {
+VirtualKeyboard::VirtualKeyboard() :
+		_currentMode(nullptr),
+		_fileArchive(nullptr, DisposeAfterUse::NO) {
 	assert(g_system);
 	_system = g_system;
 
 	_parser = new VirtualKeyboardParser(this);
 	_kbdGUI = new VirtualKeyboardGUI(this);
 	_submitKeys = _loaded = false;
-	_fileArchive = 0;
 }
 
 VirtualKeyboard::~VirtualKeyboard() {
 	deleteEvents();
 	delete _kbdGUI;
 	delete _parser;
-	delete _fileArchive;
 }
 
 void VirtualKeyboard::deleteEvents() {
@@ -74,33 +74,31 @@ void VirtualKeyboard::reset() {
 	_kbdGUI->reset();
 }
 
-bool VirtualKeyboard::openPack(const String &packName, const FSNode &node) {
-	if (node.getChild(packName + ".xml").exists()) {
-		_fileArchive = new FSDirectory(node, 1);
+bool VirtualKeyboard::openPack(const String &packName, Archive *searchPath, DisposeAfterUse::Flag disposeSearchPath) {
+	if (searchPath->hasFile(packName + ".xml")) {
+		_fileArchive.reset(searchPath, disposeSearchPath);
 
 		// uncompressed keyboard pack
-		if (!_parser->loadFile(node.getChild(packName + ".xml"))) {
-			delete _fileArchive;
-			_fileArchive = 0;
+		if (!_parser->loadStream(searchPath->createReadStreamForMember(packName + ".xml"))) {
+			_fileArchive.reset();
 			return false;
 		}
 
 		return true;
 	}
 
-	if (node.getChild(packName + ".zip").exists()) {
+	if (searchPath->hasFile(packName + ".zip")) {
 		// compressed keyboard pack
-		_fileArchive = makeZipArchive(node.getChild(packName + ".zip"));
+		Archive *zip = makeZipArchive(searchPath->createReadStreamForMember(packName + ".zip"));
+		_fileArchive.reset(zip, DisposeAfterUse::YES);
 		if (_fileArchive && _fileArchive->hasFile(packName + ".xml")) {
 			if (!_parser->loadStream(_fileArchive->createReadStreamForMember(packName + ".xml"))) {
-				delete _fileArchive;
-				_fileArchive = 0;
+				_fileArchive.reset();
 				return false;
 			}
 		} else {
 			warning("Could not find %s.xml file in %s.zip virtual keyboard pack", packName.c_str(), packName.c_str());
-			delete _fileArchive;
-			_fileArchive = 0;
+			_fileArchive.reset();
 			return false;
 		}
 
@@ -113,19 +111,18 @@ bool VirtualKeyboard::openPack(const String &packName, const FSNode &node) {
 bool VirtualKeyboard::loadKeyboardPack(const String &packName) {
 	_kbdGUI->initSize(_system->getOverlayWidth(), _system->getOverlayHeight());
 
-	delete _fileArchive;
-	_fileArchive = 0;
+	_fileArchive.reset();
 	_loaded = false;
 
 	bool opened = false;
 	if (ConfMan.hasKey("vkeybdpath"))
-		opened = openPack(packName, FSNode(ConfMan.get("vkeybdpath")));
+		opened = openPack(packName, new FSDirectory(ConfMan.get("vkeybdpath")), DisposeAfterUse::YES);
 	else if (ConfMan.hasKey("extrapath"))
-		opened = openPack(packName, FSNode(ConfMan.get("extrapath")));
+		opened = openPack(packName, new FSDirectory(ConfMan.get("extrapath")), DisposeAfterUse::YES);
 
-	// fallback to the current dir
+	// fallback to SearchMan
 	if (!opened)
-		opened = openPack(packName, FSNode("."));
+		opened = openPack(packName, &SearchMan, DisposeAfterUse::NO);
 
 	if (opened) {
 		_parser->setParseMode(VirtualKeyboardParser::kParseFull);
@@ -136,8 +133,7 @@ bool VirtualKeyboard::loadKeyboardPack(const String &packName) {
 		} else {
 			warning("Error parsing the virtual keyboard pack '%s'", packName.c_str());
 
-			delete _fileArchive;
-			_fileArchive = 0;
+			_fileArchive.reset();
 		}
 	} else {
 		warning("Virtual keyboard disabled due to missing pack file");
diff --git a/backends/vkeybd/virtual-keyboard.h b/backends/vkeybd/virtual-keyboard.h
index 3b2b219..38139e2 100644
--- a/backends/vkeybd/virtual-keyboard.h
+++ b/backends/vkeybd/virtual-keyboard.h
@@ -226,7 +226,7 @@ public:
 protected:
 
 	OSystem *_system;
-	Archive *_fileArchive;
+	DisposablePtr<Archive> _fileArchive;
 
 	friend class VirtualKeyboardGUI;
 	VirtualKeyboardGUI *_kbdGUI;
@@ -237,7 +237,7 @@ protected:
 	VirtualKeyboardParser *_parser;
 
 	void reset();
-	bool openPack(const String &packName, const FSNode &node);
+	bool openPack(const String &packName, Archive *searchPath, DisposeAfterUse::Flag disposeSearchPath);
 	void deleteEvents();
 	bool checkModeResolutions();
 	void switchMode(Mode *newMode);


Commit: 3b8ffa0812184fda821ba3eeeec1bdc2b9d353bc
    https://github.com/scummvm/scummvm/commit/3b8ffa0812184fda821ba3eeeec1bdc2b9d353bc
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2017-12-28T21:27:37+01:00

Commit Message:
BACKENDS: Remove vkeybdpath override from some ports

DATA_PATH is now search when loading virtual keyboard files, the
overrides are no longer required.

Changed paths:
    backends/platform/maemo/maemo.cpp
    backends/platform/sdl/ps3/ps3.cpp
    backends/platform/sdl/psp2/psp2.cpp


diff --git a/backends/platform/maemo/maemo.cpp b/backends/platform/maemo/maemo.cpp
index dc10549..326c35a 100644
--- a/backends/platform/maemo/maemo.cpp
+++ b/backends/platform/maemo/maemo.cpp
@@ -108,8 +108,6 @@ void OSystem_SDL_Maemo::initBackend() {
 		_keymapperDefaultBindings = new Common::KeymapperDefaultBindings();
 #endif
 
-	ConfMan.set("vkeybdpath", DATA_PATH);
-
 	_model = detectModel();
 
 #ifdef ENABLE_KEYMAPPER
diff --git a/backends/platform/sdl/ps3/ps3.cpp b/backends/platform/sdl/ps3/ps3.cpp
index 0bb8300..b13088a 100644
--- a/backends/platform/sdl/ps3/ps3.cpp
+++ b/backends/platform/sdl/ps3/ps3.cpp
@@ -59,7 +59,6 @@ void OSystem_PS3::init() {
 
 void OSystem_PS3::initBackend() {
 	ConfMan.set("joystick_num", 0);
-	ConfMan.set("vkeybdpath", PREFIX "/data");
 	ConfMan.registerDefault("fullscreen", true);
 	ConfMan.registerDefault("aspect_ratio", true);
 
diff --git a/backends/platform/sdl/psp2/psp2.cpp b/backends/platform/sdl/psp2/psp2.cpp
index 12154ba..f959bba 100644
--- a/backends/platform/sdl/psp2/psp2.cpp
+++ b/backends/platform/sdl/psp2/psp2.cpp
@@ -73,7 +73,6 @@ void OSystem_PSP2::init() {
 void OSystem_PSP2::initBackend() {
 	
 	ConfMan.set("joystick_num", 0);
-	ConfMan.set("vkeybdpath", PREFIX "/data");
 	ConfMan.registerDefault("fullscreen", true);
 	ConfMan.registerDefault("aspect_ratio", false);
 	ConfMan.registerDefault("gfx_mode", "2x");


Commit: 45f1fd0e8e4fac90a76ec18c891933eba803922a
    https://github.com/scummvm/scummvm/commit/45f1fd0e8e4fac90a76ec18c891933eba803922a
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2018-01-13T17:22:17+01:00

Commit Message:
Merge pull request #1097 from bgK/vkeybd-data-path

 VKEYBD: Fallback to SearchMan when loading keyboard packs

Changed paths:
    backends/platform/maemo/maemo.cpp
    backends/platform/sdl/ps3/ps3.cpp
    backends/platform/sdl/psp2/psp2.cpp
    backends/vkeybd/virtual-keyboard.cpp
    backends/vkeybd/virtual-keyboard.h
    common/ptr.h







More information about the Scummvm-git-logs mailing list