Switch back to apartment threaded COM initialization, which was the previous default.
We do succeed now if the application previously initialized COM in multi-threaded mode.
parent
6f6c76a6a5
commit
6915319683
|
@ -45,7 +45,15 @@ WIN_SetError(const char *prefix)
|
||||||
HRESULT
|
HRESULT
|
||||||
WIN_CoInitialize(void)
|
WIN_CoInitialize(void)
|
||||||
{
|
{
|
||||||
const HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
/* SDL handles any threading model, so initialize with the default, which
|
||||||
|
is compatible with OLE and if that doesn't work, try multi-threaded mode.
|
||||||
|
|
||||||
|
If you need multi-threaded mode, call CoInitializeEx() before SDL_Init()
|
||||||
|
*/
|
||||||
|
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
|
||||||
|
if (hr == RPC_E_CHANGED_MODE) {
|
||||||
|
hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||||
|
}
|
||||||
|
|
||||||
/* S_FALSE means success, but someone else already initialized. */
|
/* S_FALSE means success, but someone else already initialized. */
|
||||||
/* You still need to call CoUninitialize in this case! */
|
/* You still need to call CoUninitialize in this case! */
|
||||||
|
|
Loading…
Reference in New Issue