This commit is contained in:
Chuck Walbourn 2016-09-01 16:39:13 -07:00
Родитель 13f13243e9
Коммит 71c22dbc3d
1 изменённых файлов: 13 добавлений и 23 удалений

Просмотреть файл

@ -158,15 +158,15 @@ namespace DirectX
IWICImagingFactory* _GetWIC()
{
static IWICImagingFactory* s_Factory = nullptr;
static ComPtr<IWICImagingFactory> s_Factory;
if ( s_Factory )
return s_Factory;
return s_Factory.Get();
static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT;
InitOnceExecuteOnce(&s_initOnce,
[](PINIT_ONCE, PVOID, PVOID *) -> BOOL
[](PINIT_ONCE, PVOID, PVOID *factory) -> BOOL
{
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) || defined(_WIN7_PLATFORM_UPDATE)
HRESULT hr = CoCreateInstance(
@ -174,13 +174,14 @@ namespace DirectX
nullptr,
CLSCTX_INPROC_SERVER,
__uuidof(IWICImagingFactory2),
(LPVOID*)&s_Factory
factory
);
if ( SUCCEEDED(hr) )
{
// WIC2 is available on Windows 10, Windows 8.x, and Windows 7 SP1 with KB 2670838 installed
g_WIC2 = true;
return TRUE;
}
else
{
@ -188,33 +189,22 @@ namespace DirectX
CLSID_WICImagingFactory1,
nullptr,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&s_Factory)
__uuidof(IWICImagingFactory),
factory
);
if ( FAILED(hr) )
{
s_Factory = nullptr;
return FALSE;
}
return SUCCEEDED(hr) ? TRUE : FALSE;
}
#else
HRESULT hr = CoCreateInstance(
return SUCCEEDED( CoCreateInstance(
CLSID_WICImagingFactory,
nullptr,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&s_Factory)
);
if ( FAILED(hr) )
{
s_Factory = nullptr;
return FALSE;
}
__uuidof(IWICImagingFactory),
factory) ) ? TRUE : FALSE;
#endif
return TRUE;
}, nullptr, nullptr);
}, nullptr, reinterpret_cast<LPVOID*>(s_Factory.GetAddressOf()));
return s_Factory;
return s_Factory.Get();
}
} // namespace DirectX