Skip to content

Commit

Permalink
-osd: Update slider list on demand rather than on frame updated (fixe…
Browse files Browse the repository at this point in the history
…s MT08857).

-konami/konamigq.cpp: No need to cancel a newly allocated timer.
  • Loading branch information
cuavas committed Apr 26, 2024
1 parent f91b896 commit 6483414
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 95 deletions.
2 changes: 1 addition & 1 deletion docs/source/commandline/sdlconfig.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ SDL Keyboard Mapping


SDL Input Options
--------------------
-----------------

.. _mame-scommandline-enabletouch:

Expand Down
1 change: 0 additions & 1 deletion src/mame/konami/konamigq.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,6 @@ void konamigq_state::machine_start()
save_item(NAME(m_sound_intck));

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

void konamigq_state::machine_reset()
Expand Down
4 changes: 0 additions & 4 deletions src/osd/mac/osdmac.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,6 @@ class mac_osd_interface : public osd_common_t

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

protected:
virtual void build_slider_list() override;
virtual void update_slider_list() override;

private:
virtual void osd_exit() override;

Expand Down
25 changes: 1 addition & 24 deletions src/osd/mac/window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,30 +73,6 @@ bool mac_osd_interface::window_init()
}


void mac_osd_interface::update_slider_list()
{
for (auto const &window : osd_common_t::window_list())
{
// check if any window has dirty sliders
if (window->renderer().sliders_dirty())
{
build_slider_list();
return;
}
}
}

void mac_osd_interface::build_slider_list()
{
m_sliders.clear();

for (auto const &window : osd_common_t::window_list())
{
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
}
}

void mac_osd_interface::process_events()
{
}
Expand All @@ -106,6 +82,7 @@ bool mac_osd_interface::has_focus() const
return true;
}


//============================================================
// macwindow_exit
// (main thread)
Expand Down
28 changes: 25 additions & 3 deletions src/osd/modules/lib/osdobj_common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -463,9 +463,6 @@ void osd_common_t::update(bool skip_redraw)
//
if (m_watchdog != nullptr)
m_watchdog->reset();

update_slider_list();

}


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

std::vector<ui::menu_item> osd_common_t::get_slider_list()
{
// check if any window has dirty sliders
bool dirty = false;
for (const auto &window : window_list())
{
if (window->has_renderer() && window->renderer().sliders_dirty())
{
dirty = true;
break;
}
}

if (dirty)
{
m_sliders.clear();

for (const auto &window : osd_common_t::window_list())
{
if (window->has_renderer())
{
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
}
}
}

return m_sliders;
}

Expand Down
3 changes: 0 additions & 3 deletions src/osd/modules/lib/osdobj_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,6 @@ class osd_common_t : public osd_interface, osd_output
protected:
virtual bool input_init();

virtual void build_slider_list() { }
virtual void update_slider_list() { }

void poll_input_modules(bool relative_reset);

static std::list<std::unique_ptr<osd_window> > s_window_list;
Expand Down
4 changes: 0 additions & 4 deletions src/osd/sdl/osdsdl.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,10 +168,6 @@ class sdl_osd_interface : public osd_common_t, public sdl_event_manager

virtual void process_events() override;

protected:
virtual void build_slider_list() override;
virtual void update_slider_list() override;

private:
enum
{
Expand Down
24 changes: 0 additions & 24 deletions src/osd/sdl/window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,30 +111,6 @@ bool sdl_osd_interface::window_init()
}


void sdl_osd_interface::update_slider_list()
{
for (auto const &window : osd_common_t::window_list())
{
// check if any window has dirty sliders
if (window->renderer().sliders_dirty())
{
build_slider_list();
return;
}
}
}

void sdl_osd_interface::build_slider_list()
{
m_sliders.clear();

for (auto const &window : osd_common_t::window_list())
{
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
}
}

//============================================================
// sdlwindow_exit
// (main thread)
Expand Down
28 changes: 1 addition & 27 deletions src/osd/windows/window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,46 +146,20 @@ bool windows_osd_interface::window_init()
return true;
}

void windows_osd_interface::update_slider_list()
{
for (const auto &window : osd_common_t::window_list())
{
// check if any window has dirty sliders
if (window->has_renderer() && window->renderer().sliders_dirty())
{
build_slider_list();
return;
}
}
}

int windows_osd_interface::window_count()
{
return osd_common_t::window_list().size();
}

void windows_osd_interface::build_slider_list()
{
m_sliders.clear();

for (const auto &window : osd_common_t::window_list())
{
if (window->has_renderer())
{
// take the sliders of the first window
std::vector<ui::menu_item> window_sliders = window->renderer().get_slider_list();
m_sliders.insert(m_sliders.end(), window_sliders.begin(), window_sliders.end());
}
}
}

void windows_osd_interface::add_audio_to_recording(const int16_t *buffer, int samples_this_frame)
{
auto const &window = osd_common_t::window_list().front(); // We only record on the first window
if (window)
window->renderer().add_audio_to_recording(buffer, samples_this_frame);
}


//============================================================
// winwindow_exit
// (main thread)
Expand Down
4 changes: 0 additions & 4 deletions src/osd/windows/winmain.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ class windows_osd_interface : public osd_common_t

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

protected:
virtual void build_slider_list() override;
virtual void update_slider_list() override;

private:
void process_events(bool ingame, bool nodispatch);
virtual void osd_exit() override;
Expand Down

0 comments on commit 6483414

Please sign in to comment.