diff options
| author | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-04-24 18:49:41 +0300 | 
|---|---|---|
| committer | Andrey Lihatskiy <alihatskiy@productengine.com> | 2024-04-24 18:49:41 +0300 | 
| commit | 3713c33098ab98d840c0ed20bcbb5a1cb8e15235 (patch) | |
| tree | f2ee6c215244bdea45440b1a753c83d19eace121 /indra/llwindow | |
| parent | ea4ddb5f40ee8dd253be0ac4229de90f1eef61a3 (diff) | |
| parent | d98fc504a1d4bc292ba86acdda053c8b4598a193 (diff) | |
Merge branch 'main' into marchcat/b-merge
Diffstat (limited to 'indra/llwindow')
| -rw-r--r-- | indra/llwindow/lldxhardware.cpp | 22 | 
1 files changed, 10 insertions, 12 deletions
| diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index 391a377280..aaa2f6aef1 100644 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -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 = CoInitialize( 0 ); +    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 = CoInitialize(0); +	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; -    CoInitialize(NULL); +    // 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; -    CoInitialize(NULL); +    CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);      IDxDiagProvider *dx_diag_providerp = NULL;      IDxDiagContainer *dx_diag_rootp = NULL; | 
