From e8782a7b06e57531ffcba19664ff079ef700f220 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Mon, 6 Jun 2016 21:32:04 -0400 Subject: [PATCH 1/2] Fixed issue with volume slider likely introduced with ui handler lambda changes --- src/frontend/mame/ui/sliders.cpp | 10 +++++----- src/frontend/mame/ui/sliders.h | 2 +- src/frontend/mame/ui/ui.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/frontend/mame/ui/sliders.cpp b/src/frontend/mame/ui/sliders.cpp index 867c396fc79..bbdedbee737 100644 --- a/src/frontend/mame/ui/sliders.cpp +++ b/src/frontend/mame/ui/sliders.cpp @@ -264,18 +264,18 @@ void menu_sliders::custom_render(void *selectedref, float top, float bottom, flo standard menu handler -------------------------------------------------*/ -UINT32 menu_sliders::ui_handler(render_container *container, mame_ui_manager &mui, bool state) +UINT32 menu_sliders::ui_handler(render_container *container, mame_ui_manager &mui) { UINT32 result; - /* if this is the first call, push the sliders menu */ - if (state) + // if this is the first call, push the sliders menu + if (topmost_menu() == nullptr) menu::stack_push(mui, container, true); - /* handle standard menus */ + // handle standard menus result = menu::ui_handler(container, mui); - /* if we are cancelled, pop the sliders menu */ + // if we are cancelled, pop the sliders menu if (result == UI_HANDLER_CANCEL) menu::stack_pop(mui.machine()); diff --git a/src/frontend/mame/ui/sliders.h b/src/frontend/mame/ui/sliders.h index 726c5c0b81d..bfb5bc26f4e 100644 --- a/src/frontend/mame/ui/sliders.h +++ b/src/frontend/mame/ui/sliders.h @@ -27,7 +27,7 @@ public: virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2) override; - static UINT32 ui_handler(render_container *container, mame_ui_manager &mui, bool state); + static UINT32 ui_handler(render_container *container, mame_ui_manager &mui); private: enum { diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp index d1999a1ce16..ed5b3c9be7d 100644 --- a/src/frontend/mame/ui/ui.cpp +++ b/src/frontend/mame/ui/ui.cpp @@ -1572,7 +1572,7 @@ UINT32 mame_ui_manager::handler_ingame(render_container *container) // if the on-screen display isn't up and the user has toggled it, turn it on if ((machine().debug_flags & DEBUG_FLAG_ENABLED) == 0 && machine().ui_input().pressed(IPT_UI_ON_SCREEN_DISPLAY)) { - set_handler(UI_CALLBACK_TYPE_GENERAL, ui::menu_sliders::ui_handler, *this, true); + set_handler(UI_CALLBACK_TYPE_MENU, ui::menu_sliders::ui_handler, *this); return 1; } From bd5f07afc50da160da36a09d4820ef2ca346f7b4 Mon Sep 17 00:00:00 2001 From: Nathan Woods Date: Mon, 6 Jun 2016 21:35:54 -0400 Subject: [PATCH 2/2] Changed to C++ comments --- src/frontend/mame/ui/sliders.cpp | 84 ++++++++++++++++---------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/frontend/mame/ui/sliders.cpp b/src/frontend/mame/ui/sliders.cpp index bbdedbee737..55227f28854 100644 --- a/src/frontend/mame/ui/sliders.cpp +++ b/src/frontend/mame/ui/sliders.cpp @@ -27,19 +27,19 @@ menu_sliders::~menu_sliders() { } -/*------------------------------------------------- - menu_sliders - handle the sliders menu --------------------------------------------------*/ +//------------------------------------------------- +// menu_sliders - handle the sliders menu +//------------------------------------------------- void menu_sliders::handle() { const event *menu_event; - /* process the menu */ + // process the menu menu_event = process(PROCESS_LR_REPEAT | (m_hidden ? PROCESS_CUSTOM_ONLY : 0)); if (menu_event != nullptr) { - /* handle keys if there is a valid item selected */ + // handle keys if there is a valid item selected if (menu_event->itemref != nullptr && menu_event->type == menu_item_type::SLIDER) { const slider_state *slider = (const slider_state *)menu_event->itemref; @@ -51,7 +51,7 @@ void menu_sliders::handle() switch (menu_event->iptkey) { - /* toggle visibility */ + // toggle visibility case IPT_UI_ON_SCREEN_DISPLAY: if (m_menuless_mode) menu::stack_pop(machine()); @@ -59,7 +59,7 @@ void menu_sliders::handle() m_hidden = !m_hidden; break; - /* decrease value */ + // decrease value case IPT_UI_LEFT: if (alt_pressed && shift_pressed) increment = -1; @@ -73,7 +73,7 @@ void menu_sliders::handle() increment = -slider->incval; break; - /* increase value */ + // increase value case IPT_UI_RIGHT: if (alt_pressed && shift_pressed) increment = 1; @@ -87,40 +87,40 @@ void menu_sliders::handle() increment = slider->incval; break; - /* restore default */ + // restore default case IPT_UI_SELECT: increment = slider->defval - curvalue; break; } - /* handle any changes */ + // handle any changes if (increment != 0) { INT32 newvalue = curvalue + increment; - /* clamp within bounds */ + // clamp within bounds if (newvalue < slider->minval) newvalue = slider->minval; if (newvalue > slider->maxval) newvalue = slider->maxval; - /* update the slider and recompute the menu */ + // update the slider and recompute the menu slider->update(machine(), slider->arg, slider->id, nullptr, newvalue); reset(reset_options::REMEMBER_REF); } } - /* if we are selecting an invalid item and we are hidden, skip to the next one */ + // if we are selecting an invalid item and we are hidden, skip to the next one else if (m_hidden) { - /* if we got here via up or page up, select the previous item */ + // if we got here via up or page up, select the previous item if (menu_event->iptkey == IPT_UI_UP || menu_event->iptkey == IPT_UI_PAGE_UP) { selected = (selected + item.size() - 1) % item.size(); validate_selection(-1); } - /* otherwise select the next item */ + // otherwise select the next item else if (menu_event->iptkey == IPT_UI_DOWN || menu_event->iptkey == IPT_UI_PAGE_DOWN) { selected = (selected + 1) % item.size(); @@ -131,16 +131,16 @@ void menu_sliders::handle() } -/*------------------------------------------------- - menu_sliders_populate - populate the sliders - menu --------------------------------------------------*/ +//------------------------------------------------- +// menu_sliders_populate - populate the sliders +// menu +//------------------------------------------------- void menu_sliders::populate() { std::string tempstring; - /* add UI sliders */ + // add UI sliders std::vector ui_sliders = ui().get_slider_list(); for (menu_item item : ui_sliders) { @@ -163,7 +163,7 @@ void menu_sliders::populate() item_append(menu_item_type::SEPARATOR); - /* add OSD options */ + // add OSD options std::vector osd_sliders = machine().osd().get_slider_list(); for (menu_item item : osd_sliders) { @@ -187,10 +187,10 @@ void menu_sliders::populate() custombottom = 2.0f * ui().get_line_height() + 2.0f * UI_BOX_TB_BORDER; } -/*------------------------------------------------- - menu_sliders_custom_render - perform our special - rendering --------------------------------------------------*/ +//------------------------------------------------- +// menu_sliders_custom_render - perform our special +// rendering +//------------------------------------------------- void menu_sliders::custom_render(void *selectedref, float top, float bottom, float x1, float y1, float x2, float y2) { @@ -204,65 +204,65 @@ void menu_sliders::custom_render(void *selectedref, float top, float bottom, flo float text_height; INT32 curval; - /* determine the current value and text */ + // determine the current value and text curval = curslider->update(machine(), curslider->arg, curslider->id, &tempstring, SLIDER_NOCHANGE); - /* compute the current and default percentages */ + // compute the current and default percentages percentage = (float)(curval - curslider->minval) / (float)(curslider->maxval - curslider->minval); default_percentage = (float)(curslider->defval - curslider->minval) / (float)(curslider->maxval - curslider->minval); - /* assemble the text */ + // assemble the text tempstring.insert(0, " ").insert(0, curslider->description); - /* move us to the bottom of the screen, and expand to full width */ + // move us to the bottom of the screen, and expand to full width y2 = 1.0f - UI_BOX_TB_BORDER; y1 = y2 - bottom; x1 = UI_BOX_LR_BORDER; x2 = 1.0f - UI_BOX_LR_BORDER; - /* draw extra menu area */ + // draw extra menu area ui().draw_outlined_box(container, x1, y1, x2, y2, UI_BACKGROUND_COLOR); y1 += UI_BOX_TB_BORDER; - /* determine the text height */ + // determine the text height ui().draw_text_full(container, tempstring.c_str(), 0, 0, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, JUSTIFY_CENTER, WRAP_TRUNCATE, DRAW_NONE, rgb_t::white, rgb_t::black, nullptr, &text_height); - /* draw the thermometer */ + // draw the thermometer bar_left = x1 + UI_BOX_LR_BORDER; bar_area_top = y1; bar_width = x2 - x1 - 2.0f * UI_BOX_LR_BORDER; bar_area_height = line_height; - /* compute positions */ + // compute positions bar_top = bar_area_top + 0.125f * bar_area_height; bar_bottom = bar_area_top + 0.875f * bar_area_height; default_x = bar_left + bar_width * default_percentage; current_x = bar_left + bar_width * percentage; - /* fill in the percentage */ + // fill in the percentage container->add_rect(bar_left, bar_top, current_x, bar_bottom, UI_SLIDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); - /* draw the top and bottom lines */ + // draw the top and bottom lines container->add_line(bar_left, bar_top, bar_left + bar_width, bar_top, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); container->add_line(bar_left, bar_bottom, bar_left + bar_width, bar_bottom, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); - /* draw default marker */ + // draw default marker container->add_line(default_x, bar_area_top, default_x, bar_top, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); container->add_line(default_x, bar_bottom, default_x, bar_area_top + bar_area_height, UI_LINE_WIDTH, UI_BORDER_COLOR, PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); - /* draw the actual text */ + // draw the actual text ui().draw_text_full(container, tempstring.c_str(), x1 + UI_BOX_LR_BORDER, y1 + line_height, x2 - x1 - 2.0f * UI_BOX_LR_BORDER, JUSTIFY_CENTER, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, UI_TEXT_BG_COLOR, nullptr, &text_height); } } -/*------------------------------------------------- - slider_ui_handler - pushes the slider - menu on the stack and hands off to the - standard menu handler - -------------------------------------------------*/ +//------------------------------------------------- +// slider_ui_handler - pushes the slider +// menu on the stack and hands off to the +// standard menu handler +//------------------------------------------------- UINT32 menu_sliders::ui_handler(render_container *container, mame_ui_manager &mui) {