UI: Remove OBSContext class and shutdown in run_program

The OBSContext never called obs_startup but would always call
obs_shutdown in its destructor, resulting in shutdown calls even if
libobs wasn't initialized (eg due to a startup error). Instead, we now
track if libobs was initialized in OBSApp and call shutdown in the
destructor.
This commit is contained in:
Richard Stanway 2020-06-28 01:49:57 +02:00
parent f9801c933e
commit 06321f89e1
3 changed files with 7 additions and 14 deletions

View file

@ -1131,6 +1131,9 @@ OBSApp::~OBSApp()
os_inhibit_sleep_set_active(sleepInhibitor, false);
os_inhibit_sleep_destroy(sleepInhibitor);
if (libobs_initialized)
obs_shutdown();
}
static void move_basic_to_profiles(void)
@ -1352,6 +1355,8 @@ bool OBSApp::OBSInit()
if (!StartupOBS(locale.c_str(), GetProfilerNameStore()))
return false;
libobs_initialized = true;
obs_set_ui_task_handler(ui_task_handler);
#ifdef _WIN32

View file

@ -72,10 +72,11 @@ private:
std::string theme;
ConfigFile globalConfig;
TextLookup textLookup;
OBSContext obsContext;
QPointer<OBSMainWindow> mainWindow;
profiler_name_store_t *profilerNameStore = nullptr;
bool libobs_initialized = false;
os_inhibit_t *sleepInhibitor = nullptr;
int sleepInhibitRefs = 0;

View file

@ -266,16 +266,3 @@ public:
return *this;
}
};
class OBSContext {
public:
inline OBSContext() {}
inline OBSContext(const char *locale,
const char *module_config_path = nullptr,
profiler_name_store *store = nullptr)
{
obs_startup(locale, module_config_path, store);
}
inline ~OBSContext() { obs_shutdown(); }
};