From 63dfbd59d66224f3992502fff68560fffcf959f4 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Sat, 7 Jun 2014 03:24:33 +0300 Subject: [PATCH] Make render queue scratch variables instance variables --- include/lua/lua.hpp | 3 +++ src/lua/gui-rqueue.cpp | 22 +++++++++------------- src/lua/lua.cpp | 4 ++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/include/lua/lua.hpp b/include/lua/lua.hpp index d0fcf4ea..130481c8 100644 --- a/include/lua/lua.hpp +++ b/include/lua/lua.hpp @@ -99,6 +99,9 @@ struct lua_state std::set hooked_keys; uint64_t idle_hook_time; uint64_t timer_hook_time; + lua::render_context* renderq_saved; + lua::render_context* renderq_last; + bool renderq_redirect; std::list startup_scripts; std::map watch_vars; diff --git a/src/lua/gui-rqueue.cpp b/src/lua/gui-rqueue.cpp index cce2c041..ca0735b6 100644 --- a/src/lua/gui-rqueue.cpp +++ b/src/lua/gui-rqueue.cpp @@ -5,10 +5,6 @@ namespace { - lua::render_context* saved = NULL; - lua::render_context* last = NULL; - bool redirect = false; - struct lua_renderqueue { lua_renderqueue(lua::state& L, uint32_t width, uint32_t height) throw(); @@ -69,10 +65,10 @@ namespace P(q); lua::render_context* ptr = q->get(); - if(!redirect || last != core.lua2->render_ctx) - saved = core.lua2->render_ctx; - core.lua2->render_ctx = last = ptr; - redirect = true; + if(!core.lua2->renderq_redirect || core.lua2->renderq_last != core.lua2->render_ctx) + core.lua2->renderq_saved = core.lua2->render_ctx; + core.lua2->render_ctx = core.lua2->renderq_last = ptr; + core.lua2->renderq_redirect = true; return 0; } int render(lua::state& L, lua::parameters& P) @@ -132,12 +128,12 @@ namespace int lua_renderqueue::setnull(lua::state& L, lua::parameters& P) { auto& core = CORE(); - if(redirect && last == core.lua2->render_ctx) + if(core.lua2->renderq_redirect && core.lua2->renderq_last == core.lua2->render_ctx) //If there is valid redirect, undo it. - core.lua2->render_ctx = saved; - redirect = false; - last = NULL; - saved = NULL; + core.lua2->render_ctx = core.lua2->renderq_saved; + core.lua2->renderq_redirect = false; + core.lua2->renderq_last = NULL; + core.lua2->renderq_saved = NULL; return 0; } diff --git a/src/lua/lua.cpp b/src/lua/lua.cpp index cce9eb2a..9d9b9a92 100644 --- a/src/lua/lua.cpp +++ b/src/lua/lua.cpp @@ -167,6 +167,10 @@ lua_state::lua_state(lua::state& _L, command::group& _command) recursive_flag = false; luareader_fragment = NULL; + renderq_saved = NULL; + renderq_last = NULL; + renderq_redirect = false; + on_paint = new lua::state::callback_list(L, "paint", "on_paint"); on_video = new lua::state::callback_list(L, "video", "on_video"); on_reset = new lua::state::callback_list(L, "reset", "on_reset");