diff options
author | 2022-03-16 04:46:13 +1100 | |
---|---|---|
committer | 2022-03-16 04:46:13 +1100 | |
commit | 0e457ec6ea3ac0fabc89fcad57fdbf7fd39ec825 (patch) | |
tree | d0b2d7f53209967b3a594e83b98ebe6985822e20 /src/osd/modules/render/bgfx/effectmanager.cpp | |
parent | 394e5f18b6fb034b04fae0f35575dc24a4a1d620 (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.cpp | 96 |
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; } |