summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd
diff options
context:
space:
mode:
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
commit839192e7694158e8e35c039313b167d219f08de2 (patch)
treed65cb47c42bed17d7a846a6e5105b301767b698e /src/osd
parent1364bd571e7a2f27a6f49b0d1cd37c03fa795539 (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.cpp38
-rw-r--r--src/osd/modules/render/bgfx/inputpair.cpp8
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp12
-rw-r--r--src/osd/windows/winmain.cpp1
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();
}