mirror of
https://github.com/mamedev/mame.git
synced 2024-05-15 18:54:57 -04:00
-osd: Update slider list on demand rather than on frame updated (fixes MT08857).
-konami/konamigq.cpp: No need to cancel a newly allocated timer.
This commit is contained in:
parent
f91b896cda
commit
64834145ae
|
@ -62,7 +62,7 @@ SDL Keyboard Mapping
|
|||
|
||||
|
||||
SDL Input Options
|
||||
--------------------
|
||||
-----------------
|
||||
|
||||
.. _mame-scommandline-enabletouch:
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -68,10 +68,6 @@ public:
|
|||
|
||||
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;
|
||||
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
}
|
||||
|
@ -106,6 +82,7 @@ bool mac_osd_interface::has_focus() const
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
//============================================================
|
||||
// macwindow_exit
|
||||
// (main thread)
|
||||
|
|
|
@ -463,9 +463,6 @@ void osd_common_t::update(bool skip_redraw)
|
|||
//
|
||||
if (m_watchdog != nullptr)
|
||||
m_watchdog->reset();
|
||||
|
||||
update_slider_list();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -277,9 +277,6 @@ public:
|
|||
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;
|
||||
|
|
|
@ -168,10 +168,6 @@ public:
|
|||
|
||||
virtual void process_events() override;
|
||||
|
||||
protected:
|
||||
virtual void build_slider_list() override;
|
||||
virtual void update_slider_list() override;
|
||||
|
||||
private:
|
||||
enum
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -146,39 +146,12 @@ 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
|
||||
|
@ -186,6 +159,7 @@ void windows_osd_interface::add_audio_to_recording(const int16_t *buffer, int sa
|
|||
window->renderer().add_audio_to_recording(buffer, samples_this_frame);
|
||||
}
|
||||
|
||||
|
||||
//============================================================
|
||||
// winwindow_exit
|
||||
// (main thread)
|
||||
|
|
|
@ -92,10 +92,6 @@ public:
|
|||
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue