diff --git a/src/blitter/factory.hpp b/src/blitter/factory.hpp index e03d5f2934..fcf83d7f99 100644 --- a/src/blitter/factory.hpp +++ b/src/blitter/factory.hpp @@ -179,6 +179,21 @@ public: * Create an instance of this Blitter-class. */ virtual Blitter *CreateInstance() = 0; + + /* Scoped temporary current blitter override */ + struct TemporaryCurrentBlitterOverride { + Blitter *old_blitter; + + TemporaryCurrentBlitterOverride(Blitter *new_blitter) : old_blitter(*GetActiveBlitter()) + { + *GetActiveBlitter() = new_blitter; + } + + ~TemporaryCurrentBlitterOverride() + { + *GetActiveBlitter() = this->old_blitter; + } + }; }; extern std::string _ini_blitter;