mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
Fixed infinite loop
- fixed infinite loop while building slider list, when more than one
screen was created (reverted from commit 546f7a2487
)
This commit is contained in:
parent
546f7a2487
commit
dbdf21ee46
@ -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)
|
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())
|
if (window->m_renderer && window->m_renderer->sliders_dirty())
|
||||||
{
|
{
|
||||||
m_sliders = window->m_renderer->get_slider_list();
|
build_slider_list();
|
||||||
return;
|
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
|
// winwindow_exit
|
||||||
// (main thread)
|
// (main thread)
|
||||||
|
@ -271,6 +271,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void osd_exit() override;
|
virtual void osd_exit() override;
|
||||||
|
void build_slider_list();
|
||||||
void update_slider_list();
|
void update_slider_list();
|
||||||
|
|
||||||
windows_options & m_options;
|
windows_options & m_options;
|
||||||
|
Loading…
Reference in New Issue
Block a user