summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/bgfx/effectmanager.cpp
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-03-16 04:46:13 +1100
committer Vas Crabb <vas@vastheman.com>2022-03-16 04:46:13 +1100
commit0e457ec6ea3ac0fabc89fcad57fdbf7fd39ec825 (patch)
treed0b2d7f53209967b3a594e83b98ebe6985822e20 /src/osd/modules/render/bgfx/effectmanager.cpp
parent394e5f18b6fb034b04fae0f35575dc24a4a1d620 (diff)
Revert "More BGFX stability improvements (missing files + multi-window) (#9410)"
This reverts commit f5b75b74393646d1dc082ec807279451dc481854.
Diffstat (limited to 'src/osd/modules/render/bgfx/effectmanager.cpp')
-rw-r--r--src/osd/modules/render/bgfx/effectmanager.cpp96
1 files changed, 37 insertions, 59 deletions
diff --git a/src/osd/modules/render/bgfx/effectmanager.cpp b/src/osd/modules/render/bgfx/effectmanager.cpp
index 98bc9a72097..6462ae75f72 100644
--- a/src/osd/modules/render/bgfx/effectmanager.cpp
+++ b/src/osd/modules/render/bgfx/effectmanager.cpp
@@ -23,45 +23,7 @@
#include "effectreader.h"
#include "effect.h"
-static bool prepare_effect_document(std::string &name, osd_options &options, rapidjson::Document &document)
-{
- std::string full_name = name;
- if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0))
- {
- full_name = full_name + ".json";
- }
-
- std::string path;
- osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, options.bgfx_path()));
- path += full_name;
-
- bx::FileReader reader;
- if (!bx::open(&reader, path.c_str()))
- {
- osd_printf_error("Unable to open effect file %s\n", path.c_str());
- return false;
- }
-
- int32_t size (bx::getSize(&reader));
- char* data = new char[size + 1];
- bx::read(&reader, reinterpret_cast<void*>(data), size);
- bx::close(&reader);
- data[size] = 0;
-
- document.Parse<rapidjson::kParseCommentsFlag>(data);
-
- delete [] data;
-
- if (document.HasParseError())
- {
- std::string error(rapidjson::GetParseError_En(document.GetParseError()));
- osd_printf_error("Unable to parse effect %s. Errors returned:\n", path.c_str());
- osd_printf_error("%s\n", error.c_str());
- return false;
- }
-
- return true;
-}
+using namespace rapidjson;
effect_manager::~effect_manager()
{
@@ -72,7 +34,7 @@ effect_manager::~effect_manager()
m_effects.clear();
}
-bgfx_effect* effect_manager::get_or_load_effect(osd_options &options, std::string name)
+bgfx_effect* effect_manager::effect(std::string name)
{
std::map<std::string, bgfx_effect*>::iterator iter = m_effects.find(name);
if (iter != m_effects.end())
@@ -80,37 +42,53 @@ bgfx_effect* effect_manager::get_or_load_effect(osd_options &options, std::strin
return iter->second;
}
- return load_effect(options, name);
+ return load_effect(name);
}
-bgfx_effect* effect_manager::load_effect(osd_options &options, std::string name)
+bgfx_effect* effect_manager::load_effect(std::string name)
{
- rapidjson::Document document;
- if (!prepare_effect_document(name, options, document))
+ std::string full_name = name;
+ if (full_name.length() < 5 || (full_name.compare(full_name.length() - 5, 5, ".json") != 0)) {
+ full_name = full_name + ".json";
+ }
+ std::string path;
+ osd_subst_env(path, util::string_format("%s" PATH_SEPARATOR "effects" PATH_SEPARATOR, m_options.bgfx_path()));
+ path += full_name;
+
+ bx::FileReader reader;
+ if (!bx::open(&reader, path.c_str()))
{
+ printf("Unable to open effect file %s\n", path.c_str());
return nullptr;
}
- bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", options, m_shaders);
+ int32_t size (bx::getSize(&reader));
- if (effect == nullptr)
- {
- osd_printf_error("Unable to load effect %s\n", name.c_str());
+ char* data = new char[size + 1];
+ bx::read(&reader, reinterpret_cast<void*>(data), size);
+ bx::close(&reader);
+ data[size] = 0;
+
+ Document document;
+ document.Parse<kParseCommentsFlag>(data);
+
+ delete [] data;
+
+ if (document.HasParseError()) {
+ std::string error(GetParseError_En(document.GetParseError()));
+ printf("Unable to parse effect %s. Errors returned:\n", path.c_str());
+ printf("%s\n", error.c_str());
return nullptr;
}
- m_effects[name] = effect;
-
- return effect;
-}
+ bgfx_effect* effect = effect_reader::read_from_value(document, "Effect '" + name + "': ", m_shaders);
-bool effect_manager::validate_effect(osd_options &options, std::string name)
-{
- rapidjson::Document document;
- if (!prepare_effect_document(name, options, document))
- {
- return false;
+ if (effect == nullptr) {
+ printf("Unable to load effect %s\n", path.c_str());
+ return nullptr;
}
- return effect_reader::validate_value(document, "Effect '" + name + "': ", options);
+ m_effects[name] = effect;
+
+ return effect;
}