# HG changeset patch # User phoku@33b003aa-7bff-0310-803a-e67f0ece8222 # Date 1237973890 0 # Node ID 7887f385486210af0a3ed98771fb0c5f6fea7f71 # Parent a822b1a6e3cd3e66df6c7c98e1cf0c0cb5dc4a54 'Fixed' segfault in rio de hola. Font system in FIFE is odd. Also don't call onActionFinished in ~Instance. diff -r a822b1a6e3cd -r 7887f3854862 engine/core/gui/base/gui_font.h --- a/engine/core/gui/base/gui_font.h Wed Mar 25 08:48:31 2009 +0000 +++ b/engine/core/gui/base/gui_font.h Wed Mar 25 09:38:10 2009 +0000 @@ -36,7 +36,7 @@ namespace FIFE { - class GuiFont : public gcn::Font { + class GuiFont : public gcn::Font, public AbstractFont { public: /** Constructor * Takes the ownership of given font diff -r a822b1a6e3cd -r 7887f3854862 engine/core/model/structures/instance.cpp --- a/engine/core/model/structures/instance.cpp Wed Mar 25 08:48:31 2009 +0000 +++ b/engine/core/model/structures/instance.cpp Wed Mar 25 09:38:10 2009 +0000 @@ -178,6 +178,9 @@ } if(m_activity && m_activity->m_actioninfo) { + // Don't ditribute onActionFinished in case we're already + // deleting. + m_activity->m_actionlisteners.clear(); finalizeAction(); } diff -r a822b1a6e3cd -r 7887f3854862 engine/core/video/fonts/abstractfont.h --- a/engine/core/video/fonts/abstractfont.h Wed Mar 25 08:48:31 2009 +0000 +++ b/engine/core/video/fonts/abstractfont.h Wed Mar 25 09:38:10 2009 +0000 @@ -88,7 +88,7 @@ */ virtual bool isAntiAlias() = 0; - virtual int getStringIndexAt(const std::string &text, int x) = 0; + virtual int getStringIndexAt(const std::string &text, int x) const = 0; /** Gets given text as Image * The rsulting image is pooled, so it's not that time critical diff -r a822b1a6e3cd -r 7887f3854862 engine/core/video/fonts/fontbase.cpp --- a/engine/core/video/fonts/fontbase.cpp Wed Mar 25 08:48:31 2009 +0000 +++ b/engine/core/video/fonts/fontbase.cpp Wed Mar 25 09:38:10 2009 +0000 @@ -78,7 +78,7 @@ return mColor; } - int FontBase::getStringIndexAt(const std::string &text, int x) { + int FontBase::getStringIndexAt(const std::string &text, int x) const { assert( utf8::is_valid(text.begin(), text.end()) ); std::string::const_iterator cur; if (text.size() == 0) return 0; diff -r a822b1a6e3cd -r 7887f3854862 engine/core/video/fonts/fontbase.h --- a/engine/core/video/fonts/fontbase.h Wed Mar 25 08:48:31 2009 +0000 +++ b/engine/core/video/fonts/fontbase.h Wed Mar 25 09:38:10 2009 +0000 @@ -55,7 +55,7 @@ int getGlyphSpacing() const; void setAntiAlias(bool antiAlias); bool isAntiAlias(); - virtual int getStringIndexAt(const std::string &text, int x); + virtual int getStringIndexAt(const std::string &text, int x) const; Image* getAsImage(const std::string& text); Image* getAsImageMultiline(const std::string& text);