From 42622cfe8effd40c0bf63030738e43feaa6999d6 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 30 Jan 2016 20:43:50 +0100 Subject: replace osd_lock with std::mutex [Miodrag Milanovic] --- src/emu/luaengine.cpp | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'src/emu/luaengine.cpp') diff --git a/src/emu/luaengine.cpp b/src/emu/luaengine.cpp index f8ec7023bc6..f487c02bed6 100644 --- a/src/emu/luaengine.cpp +++ b/src/emu/luaengine.cpp @@ -17,6 +17,7 @@ #include "drivenum.h" #include "ui/ui.h" #include "luaengine.h" +#include //************************************************************************** // LUA ENGINE @@ -808,7 +809,7 @@ struct msg { int done; } msg; -osd_lock *lock; +static std::mutex g_mutex; void lua_engine::serve_lua() { @@ -826,37 +827,39 @@ void lua_engine::serve_lua() fgets(buff, LUA_MAXINPUT, stdin); // Create message - osd_lock_acquire(lock); - if (msg.ready == 0) { - msg.text = oldbuff; - if (oldbuff.length()!=0) msg.text.append("\n"); - msg.text.append(buff); - msg.ready = 1; - msg.done = 0; + { + std::lock_guard lock(g_mutex); + if (msg.ready == 0) { + msg.text = oldbuff; + if (oldbuff.length() != 0) msg.text.append("\n"); + msg.text.append(buff); + msg.ready = 1; + msg.done = 0; + } } - osd_lock_release(lock); // Wait for response int done; do { osd_sleep(osd_ticks_per_second() / 1000); - osd_lock_acquire(lock); + std::lock_guard lock(g_mutex); done = msg.done; - osd_lock_release(lock); } while (done==0); // Do action on client side - osd_lock_acquire(lock); - if (msg.status == -1){ - b = LUA_PROMPT2; - oldbuff = msg.response; - } - else { - b = LUA_PROMPT; - oldbuff = ""; + { + osd_sleep(osd_ticks_per_second() / 1000); + + if (msg.status == -1) { + b = LUA_PROMPT2; + oldbuff = msg.response; + } + else { + b = LUA_PROMPT; + oldbuff = ""; + } + msg.done = 0; } - msg.done = 0; - osd_lock_release(lock); } while (1); } @@ -891,7 +894,6 @@ lua_engine::lua_engine() msg.ready = 0; msg.status = 0; msg.done = 0; - lock = osd_lock_alloc(); } //------------------------------------------------- @@ -1046,7 +1048,7 @@ bool lua_engine::frame_hook() void lua_engine::periodic_check() { - osd_lock_acquire(lock); + std::lock_guard lock(g_mutex); if (msg.ready == 1) { lua_settop(m_lua_state, 0); int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), msg.text.length(), "=stdin"); @@ -1075,7 +1077,6 @@ void lua_engine::periodic_check() msg.ready = 0; msg.done = 1; } - osd_lock_release(lock); } //------------------------------------------------- -- cgit v1.2.3