From 088debdef47339ce5153dd5040c51cf082128081 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Tue, 22 Sep 2015 11:27:38 -0700 Subject: [PATCH] libobs: Call CoInitializeEx in libobs Due to the fact that certain modules may need COM on startup, initialize COM by default in libobs. --- libobs/obs-windows.c | 10 ++++++++++ libobs/obs.c | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/libobs/obs-windows.c b/libobs/obs-windows.c index ed06cc3b2..bcc91bd36 100644 --- a/libobs/obs-windows.c +++ b/libobs/obs-windows.c @@ -627,3 +627,13 @@ void reset_win32_symbol_paths(void) dstr_free(&path_str); da_free(paths); } + +void initialize_com(void) +{ + CoInitializeEx(0, COINIT_MULTITHREADED); +} + +void uninitialize_com(void) +{ + CoUninitialize(); +} diff --git a/libobs/obs.c b/libobs/obs.c index 33612105e..d3ff752fb 100644 --- a/libobs/obs.c +++ b/libobs/obs.c @@ -718,6 +718,8 @@ static bool obs_init(const char *locale, const char *module_config_path, #ifdef _WIN32 extern void initialize_crash_handler(void); +extern void initialize_com(void); +extern void uninitialize_com(void); #endif static const char *obs_startup_name = "obs_startup"; @@ -735,6 +737,7 @@ bool obs_startup(const char *locale, const char *module_config_path, #ifdef _WIN32 initialize_crash_handler(); + initialize_com(); #endif success = obs_init(locale, module_config_path, store); @@ -803,6 +806,10 @@ void obs_shutdown(void) bfree(obs->locale); bfree(obs); obs = NULL; + +#ifdef _WIN32 + uninitialize_com(); +#endif } bool obs_initialized(void) -- GitLab