[Scummvm-git-logs] scummvm master -> 817ddb19c9ea13bea9c0199b587362a29ab56872

criezy noreply at scummvm.org
Sat Jun 25 22:33:46 UTC 2022


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:
26d135d298 AGS: Make IAGSFontRenderer destructor virtual
7bd21cac8d AGS: Improve font deletion on ags_sprite_font_plugin
57fb47275b AGS: Restored "Button::Animate^7" in API and fixed volume default
817ddb19c9 AGS: Tidied Library class


Commit: 26d135d2981bc0f57e184b0b19b7ede5e70b3376
    https://github.com/scummvm/scummvm/commit/26d135d2981bc0f57e184b0b19b7ede5e70b3376
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-25T23:33:30+01:00

Commit Message:
AGS: Make IAGSFontRenderer destructor virtual

This fixes issues with the font renderers deletion in the ags_sprite_font
plugin since we do deletion using pointers that may not be of the final
class.

Changed paths:
    engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
    engines/ags/plugins/ags_sprite_font/sprite_font_renderer_clifftop.h
    engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
    engines/ags/plugins/ags_sprite_font/variable_width_sprite_font_clifftop.h
    engines/ags/shared/font/ags_font_renderer.h


diff --git a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
index 34524bafad6..375dced5f72 100644
--- a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
+++ b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
@@ -39,7 +39,7 @@ protected:
 
 public:
 	SpriteFontRenderer(IAGSEngine *engine);
-	virtual ~SpriteFontRenderer();
+	~SpriteFontRenderer() override;
 
 	bool LoadFromDisk(int fontNumber, int fontSize) override {
 		return true;
diff --git a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer_clifftop.h b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer_clifftop.h
index eecca44cf02..b663ad511bb 100644
--- a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer_clifftop.h
+++ b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer_clifftop.h
@@ -30,15 +30,14 @@ namespace AGSSpriteFont {
 
 class SpriteFontRendererClifftop : public SpriteFontRenderer {
 public:
-SpriteFontRendererClifftop(IAGSEngine *engine);
-virtual ~SpriteFontRendererClifftop(void);
+	SpriteFontRendererClifftop(IAGSEngine *engine);
+	~SpriteFontRendererClifftop(void) override;
 
-bool SupportsExtendedCharacters(int fontNumber) override;
-void RenderText(const char *text, int fontNumber, BITMAP *destination, int x, int y, int colour) override;
+	bool SupportsExtendedCharacters(int fontNumber) override;
+	void RenderText(const char *text, int fontNumber, BITMAP *destination, int x, int y, int colour) override;
 
 private:
-void Draw(BITMAP *src, BITMAP *dest, int destx, int desty, int srcx, int srcy, int width, int height, int colour);
-
+	void Draw(BITMAP *src, BITMAP *dest, int destx, int desty, int srcx, int srcy, int width, int height, int colour);
 };
 
 } // namespace AGSSpriteFont
diff --git a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
index c2ac78059fb..d92284033c5 100644
--- a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
+++ b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
@@ -39,7 +39,7 @@ protected:
 	void Draw(BITMAP *src, BITMAP *dest, int destx, int desty, int srcx, int srcy, int width, int height);
 public:
 	VariableWidthSpriteFontRenderer(IAGSEngine *engine);
-	virtual ~VariableWidthSpriteFontRenderer();
+	~VariableWidthSpriteFontRenderer() override;
 
 	bool LoadFromDisk(int fontNumber, int fontSize) override {
 		return true;
diff --git a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font_clifftop.h b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font_clifftop.h
index 1100c85c04a..88136c84ad5 100644
--- a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font_clifftop.h
+++ b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font_clifftop.h
@@ -35,7 +35,7 @@ private:
 
 public:
 	VariableWidthSpriteFontRendererClifftop(IAGSEngine *engine);
-	virtual ~VariableWidthSpriteFontRendererClifftop(void);
+	~VariableWidthSpriteFontRendererClifftop(void) override;
 
 	int GetTextHeight(const char *text, int fontNumber) override;
 	void RenderText(const char *text, int fontNumber, BITMAP *destination, int x, int y, int colour) override;
diff --git a/engines/ags/shared/font/ags_font_renderer.h b/engines/ags/shared/font/ags_font_renderer.h
index 42de9c296f4..e5d8bf533f3 100644
--- a/engines/ags/shared/font/ags_font_renderer.h
+++ b/engines/ags/shared/font/ags_font_renderer.h
@@ -39,7 +39,7 @@ public:
 	virtual void EnsureTextValidForFont(char *text, int fontNumber) = 0;
 protected:
 	IAGSFontRenderer() {}
-	~IAGSFontRenderer() {}
+	virtual ~IAGSFontRenderer() {}
 };
 
 // Font render params, mainly for dealing with various compatibility issues.
@@ -70,7 +70,7 @@ public:
 	virtual void AdjustFontForAntiAlias(int fontNumber, bool aa_mode) = 0;
 protected:
 	IAGSFontRenderer2() {}
-	~IAGSFontRenderer2() {}
+	virtual ~IAGSFontRenderer2() {}
 };
 
 } // namespace AGS3


Commit: 7bd21cac8d6238537a838ba59b4d0f86808e1d69
    https://github.com/scummvm/scummvm/commit/7bd21cac8d6238537a838ba59b4d0f86808e1d69
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-25T23:33:30+01:00

Commit Message:
AGS: Improve font deletion on ags_sprite_font_plugin

Changed paths:
    engines/ags/plugins/ags_sprite_font/sprite_font_renderer.cpp
    engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
    engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.cpp
    engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h


diff --git a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.cpp b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.cpp
index 63fa75e8a68..2fe72110a37 100644
--- a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.cpp
+++ b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.cpp
@@ -31,9 +31,17 @@ SpriteFontRenderer::SpriteFontRenderer(IAGSEngine *engine) {
 }
 
 SpriteFontRenderer::~SpriteFontRenderer(void) {
-	for (int i = 0; i < (int)_fonts.size(); i++)
-		delete _fonts[i];
-	_fonts.clear();
+}
+
+void SpriteFontRenderer::FreeMemory(int fontNum) {
+	for(auto it = _fonts.begin(); it != _fonts.end() ; ++it) {
+		SpriteFont *font = *it;
+		if (font->FontReplaced == fontNum) {
+			_fonts.erase(it);
+			delete font;
+			return;
+		}
+	}
 }
 
 void SpriteFontRenderer::SetSpriteFont(int fontNum, int sprite, int rows, int columns, int charWidth, int charHeight, int charMin, int charMax, bool use32bit) {
diff --git a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
index 375dced5f72..0695dcd9eea 100644
--- a/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
+++ b/engines/ags/plugins/ags_sprite_font/sprite_font_renderer.h
@@ -44,7 +44,7 @@ public:
 	bool LoadFromDisk(int fontNumber, int fontSize) override {
 		return true;
 	}
-	void FreeMemory(int fontNumber) override { }
+	void FreeMemory(int fontNumber) override;
 	bool SupportsExtendedCharacters(int fontNumber) override;
 	int GetTextWidth(const char *text, int fontNumber) override;
 	int GetTextHeight(const char *text, int fontNumber) override;
diff --git a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.cpp b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.cpp
index c4d7772ee45..26ad15d335a 100644
--- a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.cpp
+++ b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.cpp
@@ -31,9 +31,17 @@ VariableWidthSpriteFontRenderer::VariableWidthSpriteFontRenderer(IAGSEngine *eng
 }
 
 VariableWidthSpriteFontRenderer::~VariableWidthSpriteFontRenderer(void) {
-	for (int i = 0; i < (int)_fonts.size(); i++)
-		delete _fonts[i];
-	_fonts.clear();
+}
+
+void VariableWidthSpriteFontRenderer::FreeMemory(int fontNum) {
+	for(auto it = _fonts.begin(); it != _fonts.end() ; ++it) {
+		VariableWidthFont *font = *it;
+		if (font->FontReplaced == fontNum) {
+			_fonts.erase(it);
+			delete font;
+			return;
+		}
+	}
 }
 
 bool VariableWidthSpriteFontRenderer::SupportsExtendedCharacters(int fontNumber) {
diff --git a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
index d92284033c5..76003a8cdf3 100644
--- a/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
+++ b/engines/ags/plugins/ags_sprite_font/variable_width_sprite_font.h
@@ -45,7 +45,7 @@ public:
 		return true;
 	}
 
-	void FreeMemory(int fontNumber) override { }
+	void FreeMemory(int fontNumber) override;
 	bool SupportsExtendedCharacters(int fontNumber) override;
 	int GetTextWidth(const char *text, int fontNumber) override;
 	int GetTextHeight(const char *text, int fontNumber) override;


Commit: 57fb47275b1c0039cbc1fc149e90d6eeaf9ead86
    https://github.com/scummvm/scummvm/commit/57fb47275b1c0039cbc1fc149e90d6eeaf9ead86
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-25T23:33:30+01:00

Commit Message:
AGS: Restored "Button::Animate^7" in API and fixed volume default

"Animate^7" was an intermediate API function during 3.6.0 alpha
development, and apparently there are games which used it.

>From upstream eb4c0aec426c1501c84e93851e9aa31eaf8e2f27

Changed paths:
    engines/ags/engine/ac/button.cpp


diff --git a/engines/ags/engine/ac/button.cpp b/engines/ags/engine/ac/button.cpp
index 438b38025e2..9ca362f2d18 100644
--- a/engines/ags/engine/ac/button.cpp
+++ b/engines/ags/engine/ac/button.cpp
@@ -119,9 +119,13 @@ void Button_AnimateEx(GUIButton *butt, int view, int loop, int speed,
 }
 
 void Button_Animate(GUIButton *butt, int view, int loop, int speed, int repeat) {
-	Button_AnimateEx(butt, view, loop, speed, repeat, IN_BACKGROUND, FORWARDS, 0, -1);
+	Button_AnimateEx(butt, view, loop, speed, repeat, IN_BACKGROUND, FORWARDS, 0, 100);
 }
 
+void Button_Animate7(GUIButton *butt, int view, int loop, int speed, int repeat, int blocking, int direction, int sframe) {
+	 Button_AnimateEx(butt, view, loop, speed, repeat, blocking, direction, sframe, 100);
+ }
+
 const char *Button_GetText_New(GUIButton *butt) {
 	return CreateNewScriptString(butt->GetText().GetCStr());
 }
@@ -344,7 +348,11 @@ RuntimeScriptValue Sc_Button_Animate(void *self, const RuntimeScriptValue *param
 	API_OBJCALL_VOID_PINT4(GUIButton, Button_Animate);
 }
 
-RuntimeScriptValue Sc_Button_AnimateEx(void *self, const RuntimeScriptValue *params, int32_t param_count) {
+RuntimeScriptValue Sc_Button_Animate7(void *self, const RuntimeScriptValue *params, int32_t param_count) {
+	API_OBJCALL_VOID_PINT7(GUIButton, Button_Animate7);
+}
+
+RuntimeScriptValue Sc_Button_Animate8(void *self, const RuntimeScriptValue *params, int32_t param_count) {
 	API_OBJCALL_VOID_PINT8(GUIButton, Button_AnimateEx);
 }
 
@@ -458,7 +466,8 @@ RuntimeScriptValue Sc_Button_GetView(void *self, const RuntimeScriptValue *param
 
 void RegisterButtonAPI() {
 	ccAddExternalObjectFunction("Button::Animate^4", Sc_Button_Animate);
-	ccAddExternalObjectFunction("Button::Animate^8", Sc_Button_AnimateEx);
+	ccAddExternalObjectFunction("Button::Animate^7", Sc_Button_Animate7);
+	ccAddExternalObjectFunction("Button::Animate^8", Sc_Button_Animate8);
 	ccAddExternalObjectFunction("Button::Click^1", Sc_Button_Click);
 	ccAddExternalObjectFunction("Button::GetText^1", Sc_Button_GetText);
 	ccAddExternalObjectFunction("Button::SetText^1", Sc_Button_SetText);


Commit: 817ddb19c9ea13bea9c0199b587362a29ab56872
    https://github.com/scummvm/scummvm/commit/817ddb19c9ea13bea9c0199b587362a29ab56872
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-25T23:33:30+01:00

Commit Message:
AGS: Tidied Library class

>From upstream 58a6f421e3b97f6e2db49b88a6434686c62f5142

Changed paths:
    engines/ags/engine/util/library.h
    engines/ags/engine/util/library_scummvm.h
    engines/ags/plugins/ags_plugin.cpp


diff --git a/engines/ags/engine/util/library.h b/engines/ags/engine/util/library.h
index 5dcd2b10677..e36147e217c 100644
--- a/engines/ags/engine/util/library.h
+++ b/engines/ags/engine/util/library.h
@@ -29,17 +29,25 @@ namespace AGS3 {
 namespace AGS {
 namespace Engine {
 
+using AGS::Shared::String;
+
 class BaseLibrary {
 public:
 	BaseLibrary() {}
 
 	virtual ~BaseLibrary() {}
 
-	virtual AGS::Shared::String GetFilenameForLib(const AGS::Shared::String &libraryName) = 0;
+	String GetName() const { return _name; }
+	String GetFilePath() const { return _path; }
 
-	virtual bool Load(const AGS::Shared::String &libraryName) = 0;
+	virtual String GetFilenameForLib(const String &libname) = 0;
+	virtual bool Load(const String &libname) = 0;
+	virtual void Unload() = 0;
+	virtual bool IsLoaded() const = 0;
 
-	virtual bool Unload() = 0;
+protected:
+	String _name;
+	String _path;
 };
 
 } // namespace Engine
diff --git a/engines/ags/engine/util/library_scummvm.h b/engines/ags/engine/util/library_scummvm.h
index e74632496bf..7c0f37665df 100644
--- a/engines/ags/engine/util/library_scummvm.h
+++ b/engines/ags/engine/util/library_scummvm.h
@@ -55,20 +55,26 @@ public:
 		if (error)
 			AGS::Shared::Debug::Printf("pluginOpen returned: %s", error);
 
-		return (_library != nullptr);
+		if (_library == nullptr)
+			return false;
+		_name = libraryName;
+		_path = GetFilenameForLib(libraryName);;
+		return true;
 	}
 
-	bool Unload() override {
+	void Unload() override {
 		if (_library) {
-			Plugins::PluginBase *lib = _library;
+			Plugins::pluginClose(_library);
 			_library = nullptr;
-
-			return (Plugins::pluginClose(lib) == 0);
-		} else {
-			return true;
+			_name = "";
+			_path = "";
 		}
 	}
 
+	bool IsLoaded() const override {
+		return _library != nullptr;
+	}
+
 	Plugins::PluginBase *getPlugin() const {
 		return _library;
 	}
diff --git a/engines/ags/plugins/ags_plugin.cpp b/engines/ags/plugins/ags_plugin.cpp
index 1230daa470d..eb7d5b06327 100644
--- a/engines/ags/plugins/ags_plugin.cpp
+++ b/engines/ags/plugins/ags_plugin.cpp
@@ -858,12 +858,11 @@ Engine::GameInitError pl_register_plugins(const std::vector<Shared::PluginInfo>
 			apl->filename = "ags_snowrain";
 		}
 
-		String expect_filename = apl->library.GetFilenameForLib(apl->filename);
 		if (apl->library.Load(apl->filename)) {
 			apl->_plugin = apl->library.getPlugin();
-			AGS::Shared::Debug::Printf(kDbgMsg_Info, "Plugin '%s' loaded as '%s', resolving imports...", apl->filename.GetCStr(), expect_filename.GetCStr());
-
+			AGS::Shared::Debug::Printf(kDbgMsg_Info, "Plugin '%s' loaded from '%s', resolving imports...", apl->filename.GetCStr(), apl->library.GetFilePath().GetCStr());
 		} else {
+			String expect_filename = apl->library.GetFilenameForLib(apl->filename);
 			AGS::Shared::Debug::Printf(kDbgMsg_Info, "Plugin '%s' could not be loaded (expected '%s')",
 			                           apl->filename.GetCStr(), expect_filename.GetCStr());
 			_GP(plugins).pop_back();




More information about the Scummvm-git-logs mailing list