Browse Source

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.
Richard Stanway 5 years ago
parent
commit
06321f89e1
3 changed files with 7 additions and 14 deletions
  1. 5 0
      UI/obs-app.cpp
  2. 2 1
      UI/obs-app.hpp
  3. 0 13
      libobs/obs.hpp

+ 5 - 0
UI/obs-app.cpp

@@ -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

+ 2 - 1
UI/obs-app.hpp

@@ -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;
 

+ 0 - 13
libobs/obs.hpp

@@ -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(); }
-};