summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/d3d/d3dhlsl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/d3d/d3dhlsl.cpp')
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp52
1 files changed, 16 insertions, 36 deletions
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index cad8e656717..b753bdf1842 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -23,6 +23,7 @@
#include "aviio.h"
#include "png.h"
#include "screen.h"
+#include "ui/ui.h"
// MAMEOS headers
#include "winmain.h"
@@ -37,7 +38,6 @@
// GLOBALS
//============================================================
-static slider_state *g_slider_list;
static osd_file::error open_next(renderer_d3d9 *d3d, emu_file &file, const char *templ, const char *extension, int idx);
//============================================================
@@ -86,7 +86,7 @@ shaders::shaders() :
shaders::~shaders()
{
- for (slider* slider : sliders)
+ for (slider* slider : internal_sliders)
{
delete slider;
}
@@ -400,7 +400,7 @@ void shaders::end_avi_recording()
// shaders::toggle
//============================================================
-void shaders::toggle()
+void shaders::toggle(std::vector<slider_state*>& sliders)
{
if (master_enable)
{
@@ -427,7 +427,7 @@ void shaders::toggle()
if (!initialized)
{
// re-create shader resources after renderer resources
- bool failed = create_resources(false);
+ bool failed = create_resources(false, sliders);
if (failed)
{
master_enable = false;
@@ -827,7 +827,7 @@ void shaders::init_fsfx_quad(void *vertbuf)
// shaders::create_resources
//============================================================
-int shaders::create_resources(bool reset)
+int shaders::create_resources(bool reset, std::vector<slider_state*>& sliders)
{
if (!master_enable || !d3dintf->post_fx_available)
{
@@ -1003,7 +1003,8 @@ int shaders::create_resources(bool reset)
initialized = true;
- init_slider_list();
+ std::vector<slider_state*> my_sliders = init_slider_list();
+ sliders.insert(sliders.end(), my_sliders.begin(), my_sliders.end());
return 0;
}
@@ -2103,8 +2104,6 @@ void shaders::delete_resources(bool reset)
}
shadow_bitmap.reset();
-
- g_slider_list = nullptr;
}
@@ -2379,10 +2378,6 @@ slider_desc shaders::s_sliders[] =
};
-//============================================================
-// init_slider_list
-//============================================================
-
void *shaders::get_slider_option(int id, int index)
{
switch (id)
@@ -2452,15 +2447,15 @@ void *shaders::get_slider_option(int id, int index)
return nullptr;
}
-void shaders::init_slider_list()
+std::vector<slider_state*> shaders::init_slider_list()
{
- if (!master_enable || !d3dintf->post_fx_available)
+ std::vector<slider_state*> sliders;
+
+ for (slider* slider : internal_sliders)
{
- g_slider_list = nullptr;
+ delete slider;
}
-
- slider_state *listhead = nullptr;
- slider_state **tailptr = &listhead;
+ internal_sliders.clear();
for (int i = 0; s_sliders[i].name != nullptr; i++)
{
@@ -2488,7 +2483,7 @@ void shaders::init_slider_list()
for (int j = 0; j < count; j++)
{
slider* slider_arg = new slider(desc, get_slider_option(desc->id, j), &options->params_dirty);
- sliders.push_back(slider_arg);
+ internal_sliders.push_back(slider_arg);
std::string name = desc->name;
switch (desc->slider_type)
{
@@ -2507,13 +2502,12 @@ void shaders::init_slider_list()
default:
break;
}
- *tailptr = slider_alloc(*machine, desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_update_trampoline, slider_arg);
- tailptr = &(*tailptr)->next;
+ sliders.push_back(slider_alloc(*machine, desc->id, name.c_str(), desc->minval, desc->defval, desc->maxval, desc->step, slider_update_trampoline, slider_arg));
}
}
}
- g_slider_list = listhead;
+ return sliders;
}
@@ -3052,20 +3046,6 @@ ULONG effect::release()
}
-//============================================================
-// get_slider_list
-//============================================================
-
-slider_state *renderer_d3d9::get_slider_list()
-{
- if (window().m_index > 0)
- {
- return nullptr;
- }
- return g_slider_list;
-}
-
-
// NOTE: The function below is taken directly from src/emu/video.c and should likely be moved into a global helper function.
//-------------------------------------------------
// open_next - open the next non-existing file of