summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render')
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.cpp18
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.h5
-rw-r--r--src/osd/modules/render/bgfx/inputpair.cpp21
-rw-r--r--src/osd/modules/render/bgfx/inputpair.h4
-rw-r--r--src/osd/modules/render/bgfx/slider.cpp29
-rw-r--r--src/osd/modules/render/bgfx/slider.h5
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp28
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.h5
8 files changed, 30 insertions, 85 deletions
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp
index f0394d3b0a3..43bc463a5e1 100644
--- a/src/osd/modules/render/bgfx/chainmanager.cpp
+++ b/src/osd/modules/render/bgfx/chainmanager.cpp
@@ -377,7 +377,7 @@ void chain_manager::update_screen_count(uint32_t screen_count)
}
}
-int32_t chain_manager::slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval)
+int32_t chain_manager::slider_changed(int id, std::string *str, int32_t newval)
{
if (newval != SLIDER_NOCHANGE)
{
@@ -405,18 +405,16 @@ void chain_manager::create_selection_slider(uint32_t screen_index)
return;
}
- std::unique_ptr<slider_state> state = std::make_unique<slider_state>();
+ int32_t minval = 0;
+ int32_t defval = m_current_chain[screen_index];
+ int32_t maxval = m_available_chains.size() - 1;
+ int32_t incval = 1;
- state->minval = 0;
- state->defval = m_current_chain[screen_index];
- state->maxval = m_available_chains.size() - 1;
- state->incval = 1;
+ std::string description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:";
using namespace std::placeholders;
- state->update = std::bind(&chain_manager::slider_changed, this, _1, _2, _3, _4, _5);
- state->arg = this;
- state->id = screen_index;
- state->description = "Window " + std::to_string(m_window_index) + ", Screen " + std::to_string(screen_index) + " Effect:";
+ auto state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval,
+ std::bind(&chain_manager::slider_changed, this, screen_index, _1, _2));
ui::menu_item item;
item.text = state->description;
diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h
index f4daf9a25a9..2c130354dc1 100644
--- a/src/osd/modules/render/bgfx/chainmanager.h
+++ b/src/osd/modules/render/bgfx/chainmanager.h
@@ -22,7 +22,6 @@
#include "targetmanager.h"
#include "effectmanager.h"
#include "../frontend/mame/ui/menuitem.h"
-#include "../frontend/mame/ui/sliderchangednotifier.h"
#include "render.h"
class running_machine;
@@ -47,7 +46,7 @@ public:
const std::string m_path;
};
-class chain_manager : public slider_changed_notifier
+class chain_manager
{
public:
chain_manager(running_machine& machine, osd_options& options, texture_manager& textures, target_manager& targets, effect_manager& effects, uint32_t window_index, slider_dirty_notifier& slider_notifier);
@@ -123,7 +122,7 @@ private:
void update_screen_count(uint32_t screen_count);
- virtual int32_t slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval) override;
+ int32_t slider_changed(int id, std::string *str, int32_t newval);
void create_selection_slider(uint32_t screen_index);
bool needs_sliders();
diff --git a/src/osd/modules/render/bgfx/inputpair.cpp b/src/osd/modules/render/bgfx/inputpair.cpp
index 09b77fc6891..9b430607cb8 100644
--- a/src/osd/modules/render/bgfx/inputpair.cpp
+++ b/src/osd/modules/render/bgfx/inputpair.cpp
@@ -72,11 +72,6 @@ void bgfx_input_pair::bind(bgfx_effect *effect, const int32_t screen) const
bgfx::setTexture(m_index, effect->uniform(m_sampler)->handle(), chains().textures().handle(name));
}
-int32_t bgfx_input_pair::slider_changed(running_machine &machine, void *arg, int id, std::string *str, int32_t newval)
-{
- return texture_changed(id, str, newval);
-}
-
int32_t bgfx_input_pair::texture_changed(int32_t id, std::string *str, int32_t newval)
{
if (newval != SLIDER_NOCHANGE)
@@ -111,18 +106,16 @@ int32_t bgfx_input_pair::texture_changed(int32_t id, std::string *str, int32_t n
void bgfx_input_pair::create_selection_slider(uint32_t screen_index)
{
- m_slider_state = std::make_unique<slider_state>();
+ int32_t minval = 0;
+ int32_t defval = m_current_texture;
+ int32_t maxval = m_available_textures.size() - 1;
+ int32_t incval = 1;
- m_slider_state->minval = 0;
- m_slider_state->defval = m_current_texture;
- m_slider_state->maxval = m_available_textures.size() - 1;
- m_slider_state->incval = 1;
+ std::string description = "Window " + std::to_string(chains().window_index()) + ", Screen " + std::to_string(screen_index) + " " + m_selection + ":";
using namespace std::placeholders;
- m_slider_state->update = std::bind(&bgfx_input_pair::slider_changed, this, _1, _2, _3, _4, _5);
- m_slider_state->arg = this;
- m_slider_state->id = screen_index;
- m_slider_state->description = "Window " + std::to_string(chains().window_index()) + ", Screen " + std::to_string(screen_index) + " " + m_selection + ":";
+ m_slider_state = std::make_unique<slider_state>(std::move(description), minval, defval, maxval, incval,
+ std::bind(&bgfx_input_pair::texture_changed, this, screen_index, _1, _2));
ui::menu_item item;
item.text = m_slider_state->description;
diff --git a/src/osd/modules/render/bgfx/inputpair.h b/src/osd/modules/render/bgfx/inputpair.h
index fb3fc58e1f7..6102d7eba70 100644
--- a/src/osd/modules/render/bgfx/inputpair.h
+++ b/src/osd/modules/render/bgfx/inputpair.h
@@ -17,13 +17,12 @@
#include <string>
#include "../frontend/mame/ui/menuitem.h"
-#include "../frontend/mame/ui/sliderchangednotifier.h"
struct slider_state;
class bgfx_effect;
class chain_manager;
-class bgfx_input_pair : public slider_changed_notifier
+class bgfx_input_pair
{
public:
bgfx_input_pair(int index, std::string sampler, std::string texture, std::vector<std::string> available_textures, std::string selection, chain_manager& chains, uint32_t screen_index);
@@ -39,7 +38,6 @@ public:
std::vector<ui::menu_item> get_slider_list();
private:
- virtual int32_t slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, int32_t newval) override;
void create_selection_slider(uint32_t screen_index);
bool needs_sliders();
diff --git a/src/osd/modules/render/bgfx/slider.cpp b/src/osd/modules/render/bgfx/slider.cpp
index 927898be5a5..bfd472f7a8a 100644
--- a/src/osd/modules/render/bgfx/slider.cpp
+++ b/src/osd/modules/render/bgfx/slider.cpp
@@ -37,38 +37,21 @@ bgfx_slider::~bgfx_slider()
{
}
-int32_t bgfx_slider::slider_changed(running_machine& /*machine*/, void *arg, int /*id*/, std::string *str, int32_t newval)
-{
- if (arg != nullptr)
- {
- return reinterpret_cast<bgfx_slider*>(arg)->update(str, newval);
- }
- return 0;
-}
-
void bgfx_slider::import(float val)
{
m_value = val;
- slider_changed(m_machine, this, m_slider_state->id, nullptr, int32_t(floor(m_value / m_step + 0.5f)));
+ update(nullptr, int32_t(floor(m_value / m_step + 0.5f)));
}
std::unique_ptr<slider_state> bgfx_slider::create_core_slider()
{
- auto state = std::make_unique<slider_state>();
-
- state->minval = int32_t(floor(m_min / m_step + 0.5f));
- state->defval = int32_t(floor(m_default / m_step + 0.5f));
- state->maxval = int32_t(floor(m_max / m_step + 0.5f));
- state->incval = int32_t(floor(m_step / m_step + 0.5f));
+ int32_t minval = int32_t(floor(m_min / m_step + 0.5f));
+ int32_t defval = int32_t(floor(m_default / m_step + 0.5f));
+ int32_t maxval = int32_t(floor(m_max / m_step + 0.5f));
+ int32_t incval = int32_t(floor(m_step / m_step + 0.5f));
using namespace std::placeholders;
- state->update = std::bind(&bgfx_slider::slider_changed, this, _1, _2, _3, _4, _5);
-
- state->arg = this;
- state->id = 0;
- state->description = m_description;
-
- return state;
+ return std::make_unique<slider_state>(m_description, minval, defval, maxval, incval, std::bind(&bgfx_slider::update, this, _1, _2));
}
int32_t bgfx_slider::update(std::string *str, int32_t newval)
diff --git a/src/osd/modules/render/bgfx/slider.h b/src/osd/modules/render/bgfx/slider.h
index d59f8587bd3..21fb93cbe0d 100644
--- a/src/osd/modules/render/bgfx/slider.h
+++ b/src/osd/modules/render/bgfx/slider.h
@@ -16,11 +16,9 @@
#include <string>
#include <vector>
-#include "../frontend/mame/ui/sliderchangednotifier.h"
-
struct slider_state;
-class bgfx_slider : public slider_changed_notifier
+class bgfx_slider
{
public:
enum slider_type
@@ -62,7 +60,6 @@ public:
void import(float val);
protected:
- virtual int32_t slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, int32_t newval) override;
std::unique_ptr<slider_state> create_core_slider();
int32_t as_int() const { return int32_t(floor(m_value / m_step + 0.5f)); }
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index c082bddb5bf..4b1087826b5 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -1987,23 +1987,10 @@ static void get_vector(const char *data, int count, float *out, bool report_erro
// be done in a more ideal way.
//============================================================
-std::unique_ptr<slider_state> shaders::slider_alloc(int id, const char *title, int32_t minval, int32_t defval, int32_t maxval, int32_t incval, void *arg)
+std::unique_ptr<slider_state> shaders::slider_alloc(std::string &&title, int32_t minval, int32_t defval, int32_t maxval, int32_t incval, slider *arg)
{
- auto state = std::make_unique<slider_state>();
-
- state->minval = minval;
- state->defval = defval;
- state->maxval = maxval;
- state->incval = incval;
-
using namespace std::placeholders;
- state->update = std::bind(&shaders::slider_changed, this, _1, _2, _3, _4, _5);
-
- state->arg = arg;
- state->id = id;
- state->description = title;
-
- return state;
+ return std::make_unique<slider_state>(std::move(title), minval, defval, maxval, incval, std::bind(&slider::update, arg, _1, _2));
}
@@ -2069,15 +2056,6 @@ int32_t slider::update(std::string *str, int32_t newval)
return 0;
}
-int32_t shaders::slider_changed(running_machine& /*machine*/, void *arg, int /*id*/, std::string *str, int32_t newval)
-{
- if (arg != nullptr)
- {
- return reinterpret_cast<slider *>(arg)->update(str, newval);
- }
- return 0;
-}
-
char shaders::last_system_name[16];
hlsl_options shaders::last_options = { false };
@@ -2388,7 +2366,7 @@ void shaders::init_slider_list()
break;
}
- std::unique_ptr<slider_state> core_slider = slider_alloc(desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_arg);
+ std::unique_ptr<slider_state> core_slider = slider_alloc(std::move(name), desc->minval, desc->defval, desc->maxval, desc->step, slider_arg);
ui::menu_item item;
item.text = core_slider->description;
diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h
index 7f7dacc4538..5a34d9830df 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.h
+++ b/src/osd/modules/render/d3d/d3dhlsl.h
@@ -290,7 +290,7 @@ private:
void * m_value;
};
-class shaders : public slider_changed_notifier
+class shaders
{
friend class effect;
friend class uniform;
@@ -330,8 +330,7 @@ public:
void delete_resources();
// slider-related functions
- virtual int32_t slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, int32_t newval) override;
- std::unique_ptr<slider_state> slider_alloc(int id, const char *title, int32_t minval, int32_t defval, int32_t maxval, int32_t incval, void *arg);
+ std::unique_ptr<slider_state> slider_alloc(std::string &&title, int32_t minval, int32_t defval, int32_t maxval, int32_t incval, slider *arg);
void init_slider_list();
std::vector<ui::menu_item> get_slider_list() { return m_sliders; }
void *get_slider_option(int id, int index = 0);