SL-20695 Fix hardware probes
CoCreateInstance returns 'no interface supported' Preferable not to mix init types so switched everything.master
parent
4fc7bc0703
commit
5accc1feff
|
|
@ -65,13 +65,12 @@ HRESULT GetVideoMemoryViaWMI(WCHAR* strInputDeviceID, DWORD* pdwAdapterRam)
|
|||
{
|
||||
HRESULT hr;
|
||||
bool bGotMemory = false;
|
||||
HRESULT hrCoInitialize = S_OK;
|
||||
IWbemLocator* pIWbemLocator = nullptr;
|
||||
IWbemServices* pIWbemServices = nullptr;
|
||||
BSTR pNamespace = nullptr;
|
||||
|
||||
*pdwAdapterRam = 0;
|
||||
hrCoInitialize = CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
CoInitializeEx(0, COINIT_APARTMENTTHREADED);
|
||||
|
||||
hr = CoCreateInstance( CLSID_WbemLocator,
|
||||
nullptr,
|
||||
|
|
@ -208,8 +207,7 @@ HRESULT GetVideoMemoryViaWMI(WCHAR* strInputDeviceID, DWORD* pdwAdapterRam)
|
|||
|
||||
SAFE_RELEASE( pIWbemLocator );
|
||||
|
||||
if( SUCCEEDED( hrCoInitialize ) )
|
||||
CoUninitialize();
|
||||
CoUninitialize();
|
||||
|
||||
if( bGotMemory )
|
||||
return S_OK;
|
||||
|
|
@ -232,9 +230,8 @@ S32 LLDXHardware::getMBVideoMemoryViaWMI()
|
|||
std::string LLDXHardware::getDriverVersionWMI(EGPUVendor vendor)
|
||||
{
|
||||
std::string mDriverVersion;
|
||||
HRESULT hrCoInitialize = S_OK;
|
||||
HRESULT hres;
|
||||
hrCoInitialize = CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
CoInitializeEx(0, COINIT_APARTMENTTHREADED);
|
||||
IWbemLocator *pLoc = NULL;
|
||||
|
||||
hres = CoCreateInstance(
|
||||
|
|
@ -437,10 +434,10 @@ std::string LLDXHardware::getDriverVersionWMI(EGPUVendor vendor)
|
|||
{
|
||||
pEnumerator->Release();
|
||||
}
|
||||
if (SUCCEEDED(hrCoInitialize))
|
||||
{
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
// supposed to always call CoUninitialize even if init returned false
|
||||
CoUninitialize();
|
||||
|
||||
return mDriverVersion;
|
||||
}
|
||||
|
||||
|
|
@ -687,7 +684,8 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
|
|||
BOOL ok = FALSE;
|
||||
HRESULT hr;
|
||||
|
||||
CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
// CLSID_DxDiagProvider does not work with Multithreaded?
|
||||
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
|
||||
|
||||
IDxDiagProvider *dx_diag_providerp = NULL;
|
||||
IDxDiagContainer *dx_diag_rootp = NULL;
|
||||
|
|
@ -976,7 +974,7 @@ LLSD LLDXHardware::getDisplayInfo()
|
|||
LLTimer hw_timer;
|
||||
HRESULT hr;
|
||||
LLSD ret;
|
||||
CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
||||
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
|
||||
|
||||
IDxDiagProvider *dx_diag_providerp = NULL;
|
||||
IDxDiagContainer *dx_diag_rootp = NULL;
|
||||
|
|
|
|||
|
|
@ -85,12 +85,11 @@ void LLWMIMethods::initCOMObjects()
|
|||
// Step 1: --------------------------------------------------
|
||||
// Initialize COM. ------------------------------------------
|
||||
|
||||
mHR = CoInitializeEx(0, COINIT_MULTITHREADED);
|
||||
mHR = CoInitializeEx(0, COINIT_APARTMENTTHREADED);
|
||||
if (FAILED(mHR))
|
||||
{
|
||||
// if result S_FALSE, it's already initialized
|
||||
LL_DEBUGS("AppInit") << "Failed to initialize COM library. Error code = 0x" << std::hex << mHR << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
// Step 2: --------------------------------------------------
|
||||
|
|
|
|||
Loading…
Reference in New Issue