summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-05-28 15:36:50 +0200
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-05-28 17:33:45 +0200
commit63132b3d01ee0ad797e797057687facf43f4f26d (patch)
treebd207a3454fe4f68ae9f3230a9fb57107d9a7c88 /src/osd
parent68a9dc6857e4f33be844e53d58acb8d24adcc543 (diff)
More slider cleanup, nw
Diffstat (limited to 'src/osd')
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.cpp17
-rw-r--r--src/osd/modules/render/bgfx/chainmanager.h6
-rw-r--r--src/osd/modules/render/bgfx/inputpair.cpp12
-rw-r--r--src/osd/modules/render/bgfx/inputpair.h4
-rw-r--r--src/osd/modules/render/bgfx/slider.cpp9
-rw-r--r--src/osd/modules/render/bgfx/slider.h5
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp11
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.h5
8 files changed, 37 insertions, 32 deletions
diff --git a/src/osd/modules/render/bgfx/chainmanager.cpp b/src/osd/modules/render/bgfx/chainmanager.cpp
index d6e596cfc6b..34c891eb009 100644
--- a/src/osd/modules/render/bgfx/chainmanager.cpp
+++ b/src/osd/modules/render/bgfx/chainmanager.cpp
@@ -364,16 +364,7 @@ void chain_manager::update_screen_count(uint32_t screen_count)
}
}
-static INT32 update_trampoline(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
-{
- if (arg != nullptr)
- {
- return reinterpret_cast<chain_manager*>(arg)->chain_changed(id, str, newval);
- }
- return 0;
-}
-
-int32_t chain_manager::chain_changed(int32_t id, std::string *str, int32_t newval)
+INT32 chain_manager::slider_changed(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
{
if (newval != SLIDER_NOCHANGE)
{
@@ -409,7 +400,9 @@ void chain_manager::create_selection_slider(uint32_t screen_index)
state->defval = m_current_chain[screen_index];
state->maxval = m_available_chains.size() - 1;
state->incval = 1;
- state->update = update_trampoline;
+
+ 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;
strcpy(state->description, description.c_str());
@@ -461,7 +454,7 @@ uint32_t chain_manager::handle_screen_chains(uint32_t view, render_primitive *st
}
}
}
-
+
process_screen_quad(view + used_views, screen_index, prim, window);
used_views += screen_chain(screen_index)->applicable_passes();
diff --git a/src/osd/modules/render/bgfx/chainmanager.h b/src/osd/modules/render/bgfx/chainmanager.h
index a2531fdbc8f..083c93d634c 100644
--- a/src/osd/modules/render/bgfx/chainmanager.h
+++ b/src/osd/modules/render/bgfx/chainmanager.h
@@ -22,6 +22,7 @@
#include "targetmanager.h"
#include "effectmanager.h"
#include "../frontend/mame/ui/menuitem.h"
+#include "../frontend/mame/ui/sliderchangednotifier.h"
class running_machine;
class osd_window;
@@ -44,14 +45,13 @@ public:
const std::string m_path;
};
-class chain_manager
+class chain_manager : public slider_changed_notifier
{
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);
~chain_manager();
uint32_t handle_screen_chains(uint32_t view, render_primitive *starting_prim, osd_window& window);
- int32_t chain_changed(int32_t index, std::string *str, int32_t newval);
// Getters
running_machine& machine() const { return m_machine; }
@@ -83,6 +83,8 @@ private:
std::vector<std::string> split_option_string(std::string chain_str) const;
void update_screen_count(uint32_t screen_count);
+
+ virtual INT32 slider_changed(running_machine &machine, void *arg, int id, std::string *str, INT32 newval) override;
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 b859667899e..bbe1ba503de 100644
--- a/src/osd/modules/render/bgfx/inputpair.cpp
+++ b/src/osd/modules/render/bgfx/inputpair.cpp
@@ -55,13 +55,9 @@ 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));
}
-static INT32 update_trampoline(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
+INT32 bgfx_input_pair::slider_changed(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
{
- if (arg != nullptr)
- {
- return reinterpret_cast<bgfx_input_pair*>(arg)->texture_changed(id, str, newval);
- }
- return 0;
+ return texture_changed(id, str, newval);
}
int32_t bgfx_input_pair::texture_changed(int32_t id, std::string *str, int32_t newval)
@@ -106,7 +102,9 @@ void bgfx_input_pair::create_selection_slider(uint32_t screen_index)
state->defval = m_current_texture;
state->maxval = m_available_textures.size() - 1;
state->incval = 1;
- state->update = update_trampoline;
+
+ using namespace std::placeholders;
+ state->update = std::bind(&bgfx_input_pair::slider_changed, this, _1, _2, _3, _4, _5);
state->arg = this;
state->id = screen_index;
strcpy(state->description, description.c_str());
diff --git a/src/osd/modules/render/bgfx/inputpair.h b/src/osd/modules/render/bgfx/inputpair.h
index 4ec81552f19..37c890c3f13 100644
--- a/src/osd/modules/render/bgfx/inputpair.h
+++ b/src/osd/modules/render/bgfx/inputpair.h
@@ -17,11 +17,12 @@
#include <string>
#include "../frontend/mame/ui/menuitem.h"
+#include "../frontend/mame/ui/sliderchangednotifier.h"
class bgfx_effect;
class chain_manager;
-class bgfx_input_pair
+class bgfx_input_pair : public slider_changed_notifier
{
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);
@@ -36,6 +37,7 @@ public:
std::vector<ui::menu_item> get_slider_list();
private:
+ virtual INT32 slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, INT32 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 29d7fd0f821..3b269eb08e6 100644
--- a/src/osd/modules/render/bgfx/slider.cpp
+++ b/src/osd/modules/render/bgfx/slider.cpp
@@ -37,7 +37,7 @@ bgfx_slider::~bgfx_slider()
{
}
-static INT32 update_trampoline(running_machine &machine, void *arg, int /*id*/, std::string *str, INT32 newval)
+INT32 bgfx_slider::slider_changed(running_machine& /*machine*/, void *arg, int /*id*/, std::string *str, INT32 newval)
{
if (arg != nullptr)
{
@@ -49,7 +49,7 @@ static INT32 update_trampoline(running_machine &machine, void *arg, int /*id*/,
void bgfx_slider::import(float val)
{
m_value = val;
- update_trampoline(m_machine, this, m_slider_state->id, nullptr, int32_t(floor(m_value / m_step + 0.5f)));
+ slider_changed(m_machine, this, m_slider_state->id, nullptr, int32_t(floor(m_value / m_step + 0.5f)));
}
slider_state* bgfx_slider::create_core_slider(running_machine& machine)
@@ -61,7 +61,10 @@ slider_state* bgfx_slider::create_core_slider(running_machine& machine)
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));
- state->update = update_trampoline;
+
+ using namespace std::placeholders;
+ state->update = std::bind(&bgfx_slider::slider_changed, this, _1, _2, _3, _4, _5);
+
state->arg = this;
state->id = 0;
strcpy(state->description, m_description.c_str());
diff --git a/src/osd/modules/render/bgfx/slider.h b/src/osd/modules/render/bgfx/slider.h
index fca9d43f6a8..88b8ef6b6cb 100644
--- a/src/osd/modules/render/bgfx/slider.h
+++ b/src/osd/modules/render/bgfx/slider.h
@@ -19,7 +19,7 @@
#include "emu.h"
#include "../frontend/mame/ui/slider.h"
-class bgfx_slider
+class bgfx_slider : public slider_changed_notifier
{
public:
enum slider_type
@@ -44,7 +44,7 @@ public:
};
bgfx_slider(running_machine& machine, std::string name, float min, float def, float max, float step, slider_type type, screen_type screen, std::string format, std::string description, std::vector<std::string>& strings);
- ~bgfx_slider();
+ virtual ~bgfx_slider();
int32_t update(std::string *str, int32_t newval);
@@ -61,6 +61,7 @@ public:
void import(float val);
protected:
+ virtual INT32 slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, INT32 newval) override;
slider_state* create_core_slider(running_machine &machine);
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 a2496408d8d..2864d740bb7 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -2184,7 +2184,7 @@ static void get_vector(const char *data, int count, float *out, bool report_erro
// be done in a more ideal way.
//============================================================
-static slider_state *slider_alloc(running_machine &machine, int id, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg)
+slider_state* shaders::slider_alloc(running_machine &machine, int id, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, void *arg)
{
int size = sizeof(slider_state) + strlen(title);
slider_state *state = reinterpret_cast<slider_state *>(auto_alloc_array_clear(machine, UINT8, size));
@@ -2193,7 +2193,10 @@ static slider_state *slider_alloc(running_machine &machine, int id, const char *
state->defval = defval;
state->maxval = maxval;
state->incval = incval;
- state->update = update;
+
+ using namespace std::placeholders;
+ state->update = std::bind(&shaders::slider_changed, this, _1, _2, _3, _4, _5);
+
state->arg = arg;
state->id = id;
strcpy(state->description, title);
@@ -2267,7 +2270,7 @@ INT32 slider::update(std::string *str, INT32 newval)
return 0;
}
-static INT32 slider_update_trampoline(running_machine &machine, void *arg, int id, std::string *str, INT32 newval)
+INT32 shaders::slider_changed(running_machine& /*machine*/, void *arg, int /*id*/, std::string *str, INT32 newval)
{
if (arg != nullptr)
{
@@ -2558,7 +2561,7 @@ std::vector<ui::menu_item> shaders::init_slider_list()
break;
}
- slider_state* core_slider = slider_alloc(*machine, desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_update_trampoline, slider_arg);
+ slider_state* core_slider = slider_alloc(*machine, desc->id, name.c_str(), 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 96491c9491b..abf1e48a549 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.h
+++ b/src/osd/modules/render/d3d/d3dhlsl.h
@@ -12,6 +12,7 @@
#include <vector>
#include "aviio.h"
#include "../frontend/mame/ui/menuitem.h"
+#include "../frontend/mame/ui/slider.h"
//============================================================
// CONSTANTS
@@ -290,7 +291,7 @@ private:
bool * m_dirty;
};
-class shaders
+class shaders : public slider_changed_notifier
{
friend class effect;
friend class uniform;
@@ -342,6 +343,8 @@ public:
void delete_resources(bool reset);
// slider-related functions
+ virtual INT32 slider_changed(running_machine &machine, void *arg, int /*id*/, std::string *str, INT32 newval) override;
+ slider_state* slider_alloc(running_machine &machine, int id, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, void *arg);
std::vector<ui::menu_item> init_slider_list();
void *get_slider_option(int id, int index = 0);