Skip to content

Commit 6483414

Browse files
committed
-osd: Update slider list on demand rather than on frame updated (fixes MT08857).
-konami/konamigq.cpp: No need to cancel a newly allocated timer.
1 parent f91b896 commit 6483414

File tree

10 files changed

+28
-95
lines changed

10 files changed

+28
-95
lines changed

docs/source/commandline/sdlconfig.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ SDL Keyboard Mapping
6262

6363

6464
SDL Input Options
65-
--------------------
65+
-----------------
6666

6767
.. _mame-scommandline-enabletouch:
6868

src/mame/konami/konamigq.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,6 @@ void konamigq_state::machine_start()
330330
save_item(NAME(m_sound_intck));
331331

332332
m_dma_timer = timer_alloc(FUNC(konamigq_state::scsi_dma_transfer), this);
333-
m_dma_timer->adjust(attotime::never);
334333
}
335334

336335
void konamigq_state::machine_reset()

src/osd/mac/osdmac.h

-4
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,6 @@ class mac_osd_interface : public osd_common_t
6868

6969
virtual mac_options &options() override { return m_options; }
7070

71-
protected:
72-
virtual void build_slider_list() override;
73-
virtual void update_slider_list() override;
74-
7571
private:
7672
virtual void osd_exit() override;
7773

src/osd/mac/window.cpp

+1-24
Original file line numberDiff line numberDiff line change
@@ -73,30 +73,6 @@ bool mac_osd_interface::window_init()
7373
}
7474

7575

76-
void mac_osd_interface::update_slider_list()
77-
{
78-
for (auto const &window : osd_common_t::window_list())
79-
{
80-
// check if any window has dirty sliders
81-
if (window->renderer().sliders_dirty())
82-
{
83-
build_slider_list();
84-
return;
85-
}
86-
}
87-
}
88-
89-
void mac_osd_interface::build_slider_list()
90-
{
91-
m_sliders.clear();
92-
93-
for (auto const &window : osd_common_t::window_list())
94-
{
95-
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
96-
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
97-
}
98-
}
99-
10076
void mac_osd_interface::process_events()
10177
{
10278
}
@@ -106,6 +82,7 @@ bool mac_osd_interface::has_focus() const
10682
return true;
10783
}
10884

85+
10986
//============================================================
11087
// macwindow_exit
11188
// (main thread)

src/osd/modules/lib/osdobj_common.cpp

+25-3
Original file line numberDiff line numberDiff line change
@@ -463,9 +463,6 @@ void osd_common_t::update(bool skip_redraw)
463463
//
464464
if (m_watchdog != nullptr)
465465
m_watchdog->reset();
466-
467-
update_slider_list();
468-
469466
}
470467

471468

@@ -568,6 +565,31 @@ void osd_common_t::customize_input_type_list(std::vector<input_type_entry> &type
568565

569566
std::vector<ui::menu_item> osd_common_t::get_slider_list()
570567
{
568+
// check if any window has dirty sliders
569+
bool dirty = false;
570+
for (const auto &window : window_list())
571+
{
572+
if (window->has_renderer() && window->renderer().sliders_dirty())
573+
{
574+
dirty = true;
575+
break;
576+
}
577+
}
578+
579+
if (dirty)
580+
{
581+
m_sliders.clear();
582+
583+
for (const auto &window : osd_common_t::window_list())
584+
{
585+
if (window->has_renderer())
586+
{
587+
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
588+
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
589+
}
590+
}
591+
}
592+
571593
return m_sliders;
572594
}
573595

src/osd/modules/lib/osdobj_common.h

-3
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,6 @@ class osd_common_t : public osd_interface, osd_output
277277
protected:
278278
virtual bool input_init();
279279

280-
virtual void build_slider_list() { }
281-
virtual void update_slider_list() { }
282-
283280
void poll_input_modules(bool relative_reset);
284281

285282
static std::list<std::unique_ptr<osd_window> > s_window_list;

src/osd/sdl/osdsdl.h

-4
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,6 @@ class sdl_osd_interface : public osd_common_t, public sdl_event_manager
168168

169169
virtual void process_events() override;
170170

171-
protected:
172-
virtual void build_slider_list() override;
173-
virtual void update_slider_list() override;
174-
175171
private:
176172
enum
177173
{

src/osd/sdl/window.cpp

-24
Original file line numberDiff line numberDiff line change
@@ -111,30 +111,6 @@ bool sdl_osd_interface::window_init()
111111
}
112112

113113

114-
void sdl_osd_interface::update_slider_list()
115-
{
116-
for (auto const &window : osd_common_t::window_list())
117-
{
118-
// check if any window has dirty sliders
119-
if (window->renderer().sliders_dirty())
120-
{
121-
build_slider_list();
122-
return;
123-
}
124-
}
125-
}
126-
127-
void sdl_osd_interface::build_slider_list()
128-
{
129-
m_sliders.clear();
130-
131-
for (auto const &window : osd_common_t::window_list())
132-
{
133-
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
134-
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
135-
}
136-
}
137-
138114
//============================================================
139115
// sdlwindow_exit
140116
// (main thread)

src/osd/windows/window.cpp

+1-27
Original file line numberDiff line numberDiff line change
@@ -146,46 +146,20 @@ bool windows_osd_interface::window_init()
146146
return true;
147147
}
148148

149-
void windows_osd_interface::update_slider_list()
150-
{
151-
for (const auto &window : osd_common_t::window_list())
152-
{
153-
// check if any window has dirty sliders
154-
if (window->has_renderer() && window->renderer().sliders_dirty())
155-
{
156-
build_slider_list();
157-
return;
158-
}
159-
}
160-
}
161149

162150
int windows_osd_interface::window_count()
163151
{
164152
return osd_common_t::window_list().size();
165153
}
166154

167-
void windows_osd_interface::build_slider_list()
168-
{
169-
m_sliders.clear();
170-
171-
for (const auto &window : osd_common_t::window_list())
172-
{
173-
if (window->has_renderer())
174-
{
175-
// take the sliders of the first window
176-
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
177-
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
178-
}
179-
}
180-
}
181-
182155
void windows_osd_interface::add_audio_to_recording(const int16_t *buffer, int samples_this_frame)
183156
{
184157
auto const &window = osd_common_t::window_list().front(); // We only record on the first window
185158
if (window)
186159
window->renderer().add_audio_to_recording(buffer, samples_this_frame);
187160
}
188161

162+
189163
//============================================================
190164
// winwindow_exit
191165
// (main thread)

src/osd/windows/winmain.h

-4
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,6 @@ class windows_osd_interface : public osd_common_t
9292

9393
using osd_common_t::poll_input_modules; // Win32 debugger calls this directly, which it shouldn't
9494

95-
protected:
96-
virtual void build_slider_list() override;
97-
virtual void update_slider_list() override;
98-
9995
private:
10096
void process_events(bool ingame, bool nodispatch);
10197
virtual void osd_exit() override;

0 commit comments

Comments
 (0)