gs-effect: Allow empty effect and check errorMessage validity

This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2017-11-05 21:31:05 +01:00
parent fc02f3fdad
commit 4b364865a1
2 changed files with 15 additions and 4 deletions

View File

@ -26,13 +26,20 @@ extern "C" {
#pragma warning( pop ) #pragma warning( pop )
} }
GS::Effect::Effect() {
m_effect = nullptr;
}
GS::Effect::Effect(std::string file) { GS::Effect::Effect(std::string file) {
obs_enter_graphics(); obs_enter_graphics();
char* errorMessage = nullptr; char* errorMessage = nullptr;
m_effect = gs_effect_create_from_file(file.c_str(), &errorMessage); m_effect = gs_effect_create_from_file(file.c_str(), &errorMessage);
if (!m_effect || errorMessage) { if (!m_effect || errorMessage) {
std::string error(errorMessage); std::string error = "Generic Error";
bfree((void*)errorMessage); if (errorMessage) {
error = std::string(errorMessage);
bfree((void*)errorMessage);
}
obs_leave_graphics(); obs_leave_graphics();
throw std::runtime_error(error); throw std::runtime_error(error);
} }
@ -44,8 +51,11 @@ GS::Effect::Effect(std::string code, std::string name) {
char* errorMessage = nullptr; char* errorMessage = nullptr;
m_effect = gs_effect_create(code.c_str(), name.c_str(), &errorMessage); m_effect = gs_effect_create(code.c_str(), name.c_str(), &errorMessage);
if (!m_effect || errorMessage) { if (!m_effect || errorMessage) {
std::string error(errorMessage); std::string error = "Generic Error";
bfree((void*)errorMessage); if (errorMessage) {
error = std::string(errorMessage);
bfree((void*)errorMessage);
}
obs_leave_graphics(); obs_leave_graphics();
throw std::runtime_error(error); throw std::runtime_error(error);
} }

View File

@ -84,6 +84,7 @@ namespace GS {
class Effect { class Effect {
public: public:
Effect();
Effect(std::string file); Effect(std::string file);
Effect(std::string code, std::string name); Effect(std::string code, std::string name);
virtual ~Effect(); virtual ~Effect();