[Scummvm-git-logs] scummvm master -> 04b2637d3414682951a42077913aa279c48067f0

sev- noreply at scummvm.org
Fri May 30 17:53:14 UTC 2025


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

Summary:
d81e70801d QDENGINE: Fix condition in qdInterfaceScreen::mouse_handler()
1b946a696b QDENGINE: Cache Inifiles when loading minigame config
04b2637d34 QDENGINE: Fix memory leak when loading tiled animations


Commit: d81e70801d5f6d5d81bf5c9c662c9973bf5901eb
    https://github.com/scummvm/scummvm/commit/d81e70801d5f6d5d81bf5c9c662c9973bf5901eb
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-30T19:53:09+02:00

Commit Message:
QDENGINE: Fix condition in qdInterfaceScreen::mouse_handler()

Changed paths:
    engines/qdengine/qdcore/qd_interface_screen.cpp


diff --git a/engines/qdengine/qdcore/qd_interface_screen.cpp b/engines/qdengine/qdcore/qd_interface_screen.cpp
index 6a178e9e21b..5968eb74337 100644
--- a/engines/qdengine/qdcore/qd_interface_screen.cpp
+++ b/engines/qdengine/qdcore/qd_interface_screen.cpp
@@ -242,7 +242,7 @@ bool qdInterfaceScreen::mouse_handler(int x, int y, mouseDispatcher::mouseEvent
 				if (it->get_element_type() != qdInterfaceElement::EL_TEXT_WINDOW)
 					dp->disable_autohide();
 
-				if (it->mouse_handler(x, y, ev) && !it->is_locked())
+				if (!it->is_locked() && it->mouse_handler(x, y, ev))
 					return true;
 			} else
 				it->hover_clear();


Commit: 1b946a696b9d74680d390096c816a49b7dc50f7a
    https://github.com/scummvm/scummvm/commit/1b946a696b9d74680d390096c816a49b7dc50f7a
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-30T19:53:09+02:00

Commit Message:
QDENGINE: Cache Inifiles when loading minigame config

Changed paths:
    engines/qdengine/qdcore/qd_minigame.cpp
    engines/qdengine/qdcore/qd_minigame_config.cpp
    engines/qdengine/qdcore/qd_minigame_config.h
    engines/qdengine/qdcore/qd_setup.cpp
    engines/qdengine/qdcore/qd_setup.h


diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 04c544970ca..98d61c116c7 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -271,14 +271,15 @@ bool qdMiniGame::load_config() {
 		return false;
 
 	_config.clear();
+	Common::INIFile ini;
 	Common::INIFile::SectionList section_list;
-	enumerateIniSections(config_file_name(), section_list);
+	enumerateIniSections(ini, config_file_name(), section_list);
 
 	_config.reserve(section_list.size());
 
 	for (auto &it : section_list) {
 		qdMinigameConfigParameter prm;
-		prm.load_ini(config_file_name(), it.name.c_str());
+		prm.load_ini(ini, config_file_name(), it.name.c_str());
 		_config.push_back(prm);
 	}
 
diff --git a/engines/qdengine/qdcore/qd_minigame_config.cpp b/engines/qdengine/qdcore/qd_minigame_config.cpp
index 148666f1823..4e2a83b5928 100644
--- a/engines/qdengine/qdcore/qd_minigame_config.cpp
+++ b/engines/qdengine/qdcore/qd_minigame_config.cpp
@@ -92,9 +92,9 @@ bool qdMinigameConfigParameter::validate_data() {
 	return true;
 }
 
-bool qdMinigameConfigParameter::load_ini(const Common::Path &ini_file, const char *ini_section) {
+bool qdMinigameConfigParameter::load_ini(Common::INIFile& ini, const Common::Path &ini_file, const char *ini_section) {
 	set_name(ini_section);
-	Common::String str = getIniKey(ini_file, ini_section, "type");
+	Common::String str = getIniKey(ini, ini_file, ini_section, "type");
 	if (!str.empty()) {
 		if (str.equalsIgnoreCase("string"))
 			set_data_type(PRM_DATA_STRING);
@@ -104,16 +104,16 @@ bool qdMinigameConfigParameter::load_ini(const Common::Path &ini_file, const cha
 			set_data_type(PRM_DATA_OBJECT);
 	}
 
-	str = getIniKey(ini_file, ini_section, "count");
+	str = getIniKey(ini, ini_file, ini_section, "count");
 	if (!str.empty())
 		set_data_count(atoi(str.c_str()));
 
-	str = getIniKey(ini_file, ini_section, "value");
+	str = getIniKey(ini, ini_file, ini_section, "value");
 	if (!str.empty()) {
 		set_data_string(str.c_str());
 	}
 
-	str = getIniKey(ini_file, ini_section, "comment");
+	str = getIniKey(ini, ini_file, ini_section, "comment");
 	if (!str.empty())
 		set_comment(str.c_str());
 
diff --git a/engines/qdengine/qdcore/qd_minigame_config.h b/engines/qdengine/qdcore/qd_minigame_config.h
index cff803ee3f0..f14869897fc 100644
--- a/engines/qdengine/qdcore/qd_minigame_config.h
+++ b/engines/qdengine/qdcore/qd_minigame_config.h
@@ -22,6 +22,7 @@
 #ifndef QDENGINE_QDCORE_QD_MINIGAME_CONFIG_H
 #define QDENGINE_QDCORE_QD_MINIGAME_CONFIG_H
 
+#include "common/formats/ini-file.h"
 #include "common/path.h"
 
 namespace QDEngine {
@@ -119,7 +120,7 @@ public:
 	bool save_script(Common::WriteStream &fh, int indent = 0) const;
 
 	//! Загрузка данных из .ini файла.
-	bool load_ini(const Common::Path &ini_file, const char *ini_section);
+	bool load_ini(Common::INIFile& ini, const Common::Path &ini_file, const char *ini_section);
 
 private:
 
diff --git a/engines/qdengine/qdcore/qd_setup.cpp b/engines/qdengine/qdcore/qd_setup.cpp
index fc6fb5f1437..41d9d3eeb44 100644
--- a/engines/qdengine/qdcore/qd_setup.cpp
+++ b/engines/qdengine/qdcore/qd_setup.cpp
@@ -26,9 +26,8 @@
 
 namespace QDEngine {
 
-bool enumerateIniSections(const Common::Path &fname, Common::INIFile::SectionList &sectionList) {
+bool enumerateIniSections(Common::INIFile& ini, const Common::Path &fname, Common::INIFile::SectionList &sectionList) {
 
-	Common::INIFile ini;
 	Common::Path iniFilePath(fname);
 	ini.allowNonEnglishCharacters();
 	ini.loadFromFile(iniFilePath);
@@ -42,12 +41,9 @@ bool enumerateIniSections(const Common::Path &fname, Common::INIFile::SectionLis
 	return true;
 }
 
-const Common::String getIniKey(const Common::Path &fname, const char *section, const char *key) {
-	Common::INIFile ini;
+const Common::String getIniKey(Common::INIFile ini, const Common::Path &fname, const char *section, const char *key) {
 	Common::String buf;
 
-	ini.allowNonEnglishCharacters();
-	ini.loadFromFile(fname);
 	bool hasValue = ini.getKey(key, section, buf);
 
 	if (!hasValue) {
diff --git a/engines/qdengine/qdcore/qd_setup.h b/engines/qdengine/qdcore/qd_setup.h
index 87d050e297d..303fdfdc6bc 100644
--- a/engines/qdengine/qdcore/qd_setup.h
+++ b/engines/qdengine/qdcore/qd_setup.h
@@ -26,8 +26,8 @@
 
 namespace QDEngine {
 
-const Common::String getIniKey(const Common::Path &fname, const char *section, const char *key);
-bool enumerateIniSections(const Common::Path &fname, Common::INIFile::SectionList &section_list);
+const Common::String getIniKey(Common::INIFile ini, const Common::Path &fname, const char *section, const char *key);
+bool enumerateIniSections(Common::INIFile& ini, const Common::Path &fname, Common::INIFile::SectionList &section_list);
 
 } // namespace QDEngine
 


Commit: 04b2637d3414682951a42077913aa279c48067f0
    https://github.com/scummvm/scummvm/commit/04b2637d3414682951a42077913aa279c48067f0
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-30T19:53:09+02:00

Commit Message:
QDENGINE: Fix memory leak when loading tiled animations

Changed paths:
    engines/qdengine/qdcore/qd_animation.cpp


diff --git a/engines/qdengine/qdcore/qd_animation.cpp b/engines/qdengine/qdcore/qd_animation.cpp
index 3e9b59eeb92..a0e74e00041 100644
--- a/engines/qdengine/qdcore/qd_animation.cpp
+++ b/engines/qdengine/qdcore/qd_animation.cpp
@@ -698,6 +698,8 @@ bool qdAnimation::qda_load(const Common::Path &fpath) {
 		}
 
 		debugC(1, kDebugLoad, "qdAnimation::qda_load() tileAnimation %s", transCyrillic(fpath.toString()));
+		if (_tileAnimation)
+			_tileAnimation->clear();
 		_tileAnimation = new grTileAnimation;
 		_tileAnimation->load(fh, version);
 




More information about the Scummvm-git-logs mailing list