summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/windows/window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/windows/window.cpp')
-rw-r--r--src/osd/windows/window.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index 96810127c8b..bb81f0b9de5 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -274,15 +274,39 @@ void windows_osd_interface::update_slider_list()
{
for (win_window_info *window = win_window_list; window != nullptr; window = window->m_next)
{
- // every created window uses the same renderer
if (window->m_renderer && window->m_renderer->sliders_dirty())
{
- m_sliders = window->m_renderer->get_slider_list();
+ build_slider_list();
return;
}
}
}
+void windows_osd_interface::build_slider_list()
+{
+ m_sliders = nullptr;
+ slider_state *curr = m_sliders;
+ for (win_window_info *info = win_window_list; info != nullptr; info = info->m_next)
+ {
+ slider_state *window_sliders = info->m_renderer->get_slider_list();
+ if (window_sliders != nullptr)
+ {
+ if (m_sliders == nullptr)
+ {
+ m_sliders = curr = window_sliders;
+ }
+ else
+ {
+ while (curr->next != nullptr)
+ {
+ curr = curr->next;
+ }
+ curr->next = window_sliders;
+ }
+ }
+ }
+}
+
//============================================================
// winwindow_exit
// (main thread)