From ae701a3bd8b163f4d02a5d5658831d451e0010ff Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Wed, 17 Jan 2024 23:59:53 +0000 Subject: [PATCH] Add scoped helper to temporarily override current blitter --- src/blitter/factory.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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;