diff options
author | Vas Crabb <vas@vastheman.com> | 2021-11-13 02:49:51 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2021-11-13 02:49:51 +1100 |
commit | 839192e7694158e8e35c039313b167d219f08de2 (patch) | |
tree | d65cb47c42bed17d7a846a6e5105b301767b698e /src/osd | |
parent | 1364bd571e7a2f27a6f49b0d1cd37c03fa795539 (diff) |
-osd/windows: Fixed stupid potential deadlock on exit.
-frontend: Some changes to menu item class that will make it possbile to
reduce the number of menu rebuilds.
Diffstat (limited to 'src/osd')
-rw-r--r-- | src/osd/modules/render/bgfx/chainmanager.cpp | 38 | ||||
-rw-r--r-- | src/osd/modules/render/bgfx/inputpair.cpp | 8 | ||||
-rw-r--r-- | src/osd/modules/render/d3d/d3dhlsl.cpp | 12 | ||||
-rw-r--r-- | src/osd/windows/winmain.cpp | 1 |
4 files changed, 19 insertions, 40 deletions
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp index 2de2870fdd2..73128c12a0b 100644 --- a/src/osd/modules/render/bgfx/chainmanager.cpp +++ b/src/osd/modules/render/bgfx/chainmanager.cpp @@ -417,14 +417,10 @@ void chain_manager::create_selection_slider(uint32_t screen_index) auto state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval, std::bind(&chain_manager::slider_changed, this, screen_index, _1, _2)); - ui::menu_item item; - item.text = state->description; - item.subtext = ""; - item.flags = 0; - item.ref = state.get(); - item.type = ui::menu_item_type::SLIDER; - m_selection_sliders.push_back(item); - m_core_sliders.push_back(std::move(state)); + ui::menu_item item(ui::menu_item_type::SLIDER, state.get()); + item.set_text(state->description); + m_selection_sliders.emplace_back(item); + m_core_sliders.emplace_back(std::move(state)); } uint32_t chain_manager::update_screen_textures(uint32_t view, render_primitive *starting_prim, osd_window& window) @@ -685,7 +681,7 @@ std::vector<ui::menu_item> chain_manager::get_slider_list() std::vector<ui::menu_item> input_sliders = input->get_slider_list(); for (ui::menu_item slider : input_sliders) { - sliders.push_back(slider); + sliders.emplace_back(slider); } } } @@ -695,27 +691,19 @@ std::vector<ui::menu_item> chain_manager::get_slider_list() { slider_state* core_slider = slider->core_slider(); - ui::menu_item item; - item.text = core_slider->description; - item.subtext = ""; - item.flags = 0; - item.ref = core_slider; - item.type = ui::menu_item_type::SLIDER; - m_selection_sliders.push_back(item); + ui::menu_item item(ui::menu_item_type::SLIDER, core_slider); + item.set_text(core_slider->description); + m_selection_sliders.emplace_back(item); - sliders.push_back(item); + sliders.emplace_back(std::move(item)); } if (chain_sliders.size() > 0) { - ui::menu_item item; - item.text = MENU_SEPARATOR_ITEM; - item.subtext = ""; - item.flags = 0; - item.ref = nullptr; - item.type = ui::menu_item_type::SEPARATOR; - - sliders.push_back(item); + ui::menu_item item(ui::menu_item_type::SEPARATOR); + item.set_text(MENU_SEPARATOR_ITEM); + + sliders.emplace_back(std::move(item)); } } diff --git a/src/osd/modules/render/bgfx/inputpair.cpp b/src/osd/modules/render/bgfx/inputpair.cpp index 4f185db86ab..ea82ac5f814 100644 --- a/src/osd/modules/render/bgfx/inputpair.cpp +++ b/src/osd/modules/render/bgfx/inputpair.cpp @@ -118,12 +118,8 @@ void bgfx_input_pair::create_selection_slider(uint32_t screen_index) m_slider_state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval, std::bind(&bgfx_input_pair::texture_changed, this, screen_index, _1, _2)); - ui::menu_item item; - item.text = m_slider_state->description; - item.subtext = ""; - item.flags = 0; - item.ref = m_slider_state.get(); - item.type = ui::menu_item_type::SLIDER; + ui::menu_item item(ui::menu_item_type::SLIDER, m_slider_state.get()); + item.set_text(m_slider_state->description); m_selection_slider = item; } diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp index 5e760de0e58..eabcd5bcb81 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.cpp +++ b/src/osd/modules/render/d3d/d3dhlsl.cpp @@ -2371,14 +2371,10 @@ void shaders::init_slider_list() std::unique_ptr<slider_state> core_slider = slider_alloc(std::move(name), desc->minval, desc->defval, desc->maxval, desc->step, slider_arg); - ui::menu_item item; - item.text = core_slider->description; - item.subtext = ""; - item.flags = 0; - item.ref = core_slider.get(); - item.type = ui::menu_item_type::SLIDER; - m_sliders.push_back(item); - m_core_sliders.push_back(std::move(core_slider)); + ui::menu_item item(ui::menu_item_type::SLIDER, core_slider.get()); + item.set_text(core_slider->description); + m_sliders.emplace_back(item); + m_core_sliders.emplace_back(std::move(core_slider)); } } } diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index b24d2980c19..48b594b4d89 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -64,7 +64,6 @@ private: { ~ui_state() { - std::lock_guard guard(mutex); if (thread) thread->join(); } |