[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