mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 15:30:04 -05:00
Merge pull request #2195 from jpark37/com-sta
Clean up COM initialization
This commit is contained in:
@@ -1259,9 +1259,15 @@ void obs_init_win32_crash_handler(void)
|
||||
initialize_crash_handler();
|
||||
}
|
||||
|
||||
void initialize_com(void)
|
||||
bool initialize_com(void)
|
||||
{
|
||||
CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
const HRESULT hr = CoInitializeEx(0, COINIT_APARTMENTTHREADED);
|
||||
const bool success = SUCCEEDED(hr);
|
||||
if (success)
|
||||
blog(LOG_INFO, "CoInitializeEx succeeded: 0x%08X", hr);
|
||||
else
|
||||
blog(LOG_ERROR, "CoInitializeEx failed: 0x%08X", hr);
|
||||
return success;
|
||||
}
|
||||
|
||||
void uninitialize_com(void)
|
||||
|
||||
+5
-3
@@ -871,8 +871,9 @@ static bool obs_init(const char *locale, const char *module_config_path,
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
extern void initialize_com(void);
|
||||
extern bool initialize_com(void);
|
||||
extern void uninitialize_com(void);
|
||||
static bool com_initialized = false;
|
||||
#endif
|
||||
|
||||
/* Separate from actual context initialization
|
||||
@@ -933,7 +934,7 @@ bool obs_startup(const char *locale, const char *module_config_path,
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
initialize_com();
|
||||
com_initialized = initialize_com();
|
||||
#endif
|
||||
|
||||
success = obs_init(locale, module_config_path, store);
|
||||
@@ -1048,7 +1049,8 @@ void obs_shutdown(void)
|
||||
bfree(cmdline_args.argv);
|
||||
|
||||
#ifdef _WIN32
|
||||
uninitialize_com();
|
||||
if (com_initialized)
|
||||
uninitialize_com();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -386,7 +386,14 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
|
||||
|
||||
os_set_thread_name("win-wasapi: reconnect thread");
|
||||
|
||||
CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
const HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
const bool com_initialized = SUCCEEDED(hr);
|
||||
if (!com_initialized) {
|
||||
blog(LOG_ERROR,
|
||||
"[WASAPISource::ReconnectThread]"
|
||||
" CoInitializeEx failed: 0x%08X",
|
||||
hr);
|
||||
}
|
||||
|
||||
obs_monitoring_type type =
|
||||
obs_source_get_monitoring_type(source->source);
|
||||
@@ -400,6 +407,9 @@ DWORD WINAPI WASAPISource::ReconnectThread(LPVOID param)
|
||||
|
||||
obs_source_set_monitoring_type(source->source, type);
|
||||
|
||||
if (com_initialized)
|
||||
CoUninitialize();
|
||||
|
||||
source->reconnectThread = nullptr;
|
||||
source->reconnecting = false;
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user