summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2026-05-01 04:09:54 +1000
committer Vas Crabb <vas@vastheman.com>2026-05-01 04:09:54 +1000
commit91faf17b0d95d0cfab2f7d6aabf451900afee69b (patch)
tree31919691cea8ec141b001d92b06288080d019441 /src/frontend
parent1e5263494af307699e72b463ce8ee180684c1c5c (diff)
-dynax/ddenlovr.cpp: Added proper inputs for Royal Selection.
-frontend/mame/luaengine.cpp: Removed some deprecated stuff. -itech/itech32.cpp: BloodStorm doesn't have a space in most uses. -shared/mahjong.cpp: Exposed base mahjong matrix panel class to simplify creating devices that are essentially mahjong panels with weird labels. -ui.ui.cpp, ui/menu.cpp: Started untangling some stuff.
Diffstat (limited to 'src/frontend')
-rw-r--r--src/frontend/mame/luaengine.cpp10
-rw-r--r--src/frontend/mame/ui/menu.cpp12
-rw-r--r--src/frontend/mame/ui/menu.h7
-rw-r--r--src/frontend/mame/ui/ui.cpp17
-rw-r--r--src/frontend/mame/ui/ui.h4
5 files changed, 20 insertions, 30 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 3e3e848ecc2..dd54a3f56b7 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -811,11 +811,6 @@ void lua_engine::initialize()
* emu.keypost(keys) - post keys to natural keyboard
*
* emu.register_prestart(callback) - register callback before reset
- * emu.register_start(callback) - register callback after reset
- * emu.register_stop(callback) - register callback after stopping
- * emu.register_pause(callback) - register callback at pause
- * emu.register_resume(callback) - register callback at resume
- * emu.register_frame(callback) - register callback at end of frame
* emu.register_frame_done(callback) - register callback after frame is drawn to screen (for overlays)
* emu.register_sound_update(callback) - register callback after sound update has generated new samples
* emu.register_periodic(callback) - register periodic callback while program is running
@@ -933,11 +928,6 @@ void lua_engine::initialize()
machine().resume();
};
emu["register_prestart"] = [this] (sol::function func) { register_function(func, "LUA_ON_PRESTART"); };
- emu["register_start"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_start is deprecated - please use emu.add_machine_reset_notifier\n"); register_function(func, "LUA_ON_START"); };
- emu["register_stop"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_stop is deprecated - please use emu.add_machine_stop_notifier\n"); register_function(func, "LUA_ON_STOP"); };
- emu["register_pause"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_pause is deprecated - please use emu.add_machine_pause_notifier\n"); register_function(func, "LUA_ON_PAUSE"); };
- emu["register_resume"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_resume is deprecated - please use emu.add_machine_resume_notifier\n"); register_function(func, "LUA_ON_RESUME"); };
- emu["register_frame"] = [this] (sol::function func) { osd_printf_warning("[LUA] emu.register_frame is deprecated - please use emu.add_machine_frame_notifier\n"); register_function(func, "LUA_ON_FRAME"); };
emu["register_frame_done"] = [this] (sol::function func) { register_function(func, "LUA_ON_FRAME_DONE"); };
emu["register_sound_update"] = [this] (sol::function func) { register_function(func, "LUA_ON_SOUND_UPDATE"); };
emu["register_periodic"] = [this] (sol::function func) { register_function(func, "LUA_ON_PERIODIC"); };
diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp
index 241b0ab52d1..3037e9a4872 100644
--- a/src/frontend/mame/ui/menu.cpp
+++ b/src/frontend/mame/ui/menu.cpp
@@ -12,8 +12,6 @@
#include "ui/menu.h"
#include "ui/ui.h"
-#include "ui/mainmenu.h"
-#include "ui/miscmenu.h"
#include "cheat.h"
#include "mame.h"
@@ -217,12 +215,8 @@ bool menu::global_state::stack_has_special_main_menu() const
}
-uint32_t menu::global_state::ui_handler(render_container &container)
+uint32_t menu::global_state::ui_handler()
{
- // if we have no menus stacked up, start with the main menu
- if (!m_stack)
- stack_push(std::make_unique<menu_main>(m_ui, container));
-
while (true)
{
// ensure topmost menu is active - need a loop because it could push another menu
@@ -2097,10 +2091,10 @@ bool menu::do_handle()
// and calls the menu handler
//-------------------------------------------------
-delegate<uint32_t (render_container &)> menu::get_ui_handler(mame_ui_manager &mui)
+delegate<uint32_t ()> menu::get_ui_handler(mame_ui_manager &mui)
{
global_state &state(get_global_state(mui));
- return delegate<uint32_t (render_container &)>(&global_state::ui_handler, &state);
+ return delegate<uint32_t ()>(&global_state::ui_handler, &state);
}
/***************************************************************************
diff --git a/src/frontend/mame/ui/menu.h b/src/frontend/mame/ui/menu.h
index 56340280237..4a975098354 100644
--- a/src/frontend/mame/ui/menu.h
+++ b/src/frontend/mame/ui/menu.h
@@ -106,11 +106,14 @@ public:
// pop a menu from the stack
static void stack_pop(mame_ui_manager &ui) { get_global_state(ui).stack_pop(); }
+ // test whether there are any menus in the stack
+ static bool stack_empty(mame_ui_manager &ui) { return !get_global_state(ui).topmost_menu<menu>(); }
+
// test if one of the menus in the stack requires hide disable
static bool stack_has_special_main_menu(mame_ui_manager &ui) { return get_global_state(ui).stack_has_special_main_menu(); }
// master handler
- static delegate<uint32_t (render_container &)> get_ui_handler(mame_ui_manager &mui);
+ static delegate<uint32_t ()> get_ui_handler(mame_ui_manager &mui);
// Used by sliders
void validate_selection(int scandir);
@@ -440,7 +443,7 @@ private:
void hide_menu() { m_hide = true; }
- uint32_t ui_handler(render_container &container);
+ uint32_t ui_handler();
bool have_pointer() const noexcept
{
diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp
index 892e4501315..bfcc5e465e9 100644
--- a/src/frontend/mame/ui/ui.cpp
+++ b/src/frontend/mame/ui/ui.cpp
@@ -302,7 +302,7 @@ void mame_ui_manager::init()
set_handler(
ui_callback_type::NOINPUT,
handler_callback_func(
- [this] (render_container &container) -> uint32_t
+ [this, &container = machine().render().ui_container()] () -> uint32_t
{
draw_text_box(container, messagebox_text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, colors().background_color());
return 0;
@@ -652,7 +652,7 @@ void mame_ui_manager::display_startup_screens(bool first_time)
rgb_t warning_color;
bool config_menu = false;
auto handler_messagebox_anykey =
- [this, &poller, &warning_text, &warning_color, &config_menu] (render_container &container) -> uint32_t
+ [this, &poller, &warning_text, &warning_color, &config_menu, &container = machine().render().ui_container()] () -> uint32_t
{
// draw a standard message window
draw_text_box(container, warning_text, ui::text_layout::text_justify::LEFT, 0.5f, 0.5f, warning_color);
@@ -862,6 +862,7 @@ void mame_ui_manager::display_startup_screens(bool first_time)
}
else if (config_menu)
{
+ ui::menu::stack_push<ui::menu_main>(*this, machine().render().ui_container());
show_menu();
// loop while we have a handler
@@ -929,7 +930,7 @@ bool mame_ui_manager::update_and_render(render_container &container)
// call the current UI handler
machine().ui_input().check_ui_inputs();
- uint32_t const handler_result = m_handler_callback(container);
+ uint32_t const handler_result = m_handler_callback();
// display any popup messages
if (osd_ticks() < m_popup_text_end)
@@ -1538,7 +1539,7 @@ void mame_ui_manager::image_handler_ingame()
// of the standard keypresses
//-------------------------------------------------
-uint32_t mame_ui_manager::handler_ingame(render_container &container)
+uint32_t mame_ui_manager::handler_ingame()
{
// let the OSD do its thing first
machine().osd().check_osd_inputs();
@@ -1547,7 +1548,7 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container)
// draw the profiler if visible
if (show_profiler())
- draw_profiler(container);
+ draw_profiler(machine().render().ui_container());
// if we're single-stepping, pause now
if (single_step())
@@ -1625,6 +1626,8 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container)
// turn on menus if requested
if (machine().ui_input().pressed(IPT_UI_MENU))
{
+ if (ui::menu::stack_empty(*this))
+ ui::menu::stack_push<ui::menu_main>(*this, machine().render().ui_container());
show_menu();
return 0;
}
@@ -1658,7 +1661,7 @@ uint32_t mame_ui_manager::handler_ingame(render_container &container)
set_handler(
ui_callback_type::MENU,
handler_callback_func(
- [this, is_paused] (render_container &container) -> uint32_t
+ [this, is_paused, &container = machine().render().ui_container()] () -> uint32_t
{
return ui_gfx_ui_handler(container, *this, is_paused);
}));
@@ -2704,7 +2707,7 @@ bool mame_ui_manager::set_ui_event_handler(std::function<bool ()> &&handler)
set_handler(
ui_callback_type::CUSTOM,
handler_callback_func(
- [cb = std::move(handler)] (render_container &container) -> uint32_t
+ [cb = std::move(handler)] () -> uint32_t
{
return !cb() ? HANDLER_CANCEL : 0;
}));
diff --git a/src/frontend/mame/ui/ui.h b/src/frontend/mame/ui/ui.h
index cb856f9139c..fd877437558 100644
--- a/src/frontend/mame/ui/ui.h
+++ b/src/frontend/mame/ui/ui.h
@@ -284,7 +284,7 @@ private:
struct active_pointer;
class pointer_options;
- using handler_callback_func = delegate<uint32_t (render_container &)>;
+ using handler_callback_func = delegate<uint32_t ()>;
using device_feature_set = std::set<std::pair<std::string, std::string> >;
using session_data_map = std::unordered_map<std::type_index, std::any>;
using active_pointer_vector = std::vector<active_pointer>;
@@ -332,7 +332,7 @@ private:
static std::vector<ui::menu_item> slider_list;
// UI handlers
- uint32_t handler_ingame(render_container &container);
+ uint32_t handler_ingame();
// private methods
void set_handler(ui_callback_type callback_type, handler_callback_func &&callback);