diff --git a/ScreenGrab/ScreenGrab.cpp b/ScreenGrab/ScreenGrab.cpp index 12f1493..e3b94db 100644 --- a/ScreenGrab/ScreenGrab.cpp +++ b/ScreenGrab/ScreenGrab.cpp @@ -701,13 +701,9 @@ namespace IWICImagingFactory* _GetWIC() { - static ComPtr s_Factory; - - if ( s_Factory ) - return s_Factory.Get(); - static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT; + IWICImagingFactory* factory = nullptr; InitOnceExecuteOnce(&s_initOnce, [](PINIT_ONCE, PVOID, PVOID *factory) -> BOOL { @@ -745,9 +741,9 @@ namespace __uuidof(IWICImagingFactory), factory) ) ? TRUE : FALSE; #endif - }, nullptr, reinterpret_cast(s_Factory.GetAddressOf())); + }, nullptr, reinterpret_cast(&factory)); - return s_Factory.Get(); + return factory; } } // anonymous namespace diff --git a/ScreenGrab/ScreenGrab12.cpp b/ScreenGrab/ScreenGrab12.cpp index 2528532..27b019a 100644 --- a/ScreenGrab/ScreenGrab12.cpp +++ b/ScreenGrab/ScreenGrab12.cpp @@ -781,13 +781,9 @@ namespace IWICImagingFactory2* _GetWIC() { - static ComPtr s_Factory; - - if ( s_Factory ) - return s_Factory.Get(); - static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT; + IWICImagingFactory2* factory = nullptr; (void)InitOnceExecuteOnce(&s_initOnce, [](PINIT_ONCE, PVOID, PVOID *factory) -> BOOL { @@ -797,9 +793,9 @@ namespace CLSCTX_INPROC_SERVER, __uuidof(IWICImagingFactory2), factory) ) ? TRUE : FALSE; - }, nullptr, reinterpret_cast(s_Factory.GetAddressOf())); + }, nullptr, reinterpret_cast(&factory)); - return s_Factory.Get(); + return factory; } } // anonymous namespace diff --git a/WICTextureLoader/WICTextureLoader.cpp b/WICTextureLoader/WICTextureLoader.cpp index f2b2245..7f51cf4 100644 --- a/WICTextureLoader/WICTextureLoader.cpp +++ b/WICTextureLoader/WICTextureLoader.cpp @@ -168,13 +168,9 @@ namespace //-------------------------------------------------------------------------------------- IWICImagingFactory* _GetWIC() { - static ComPtr s_Factory; - - if ( s_Factory ) - return s_Factory.Get(); - static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT; + IWICImagingFactory* factory = nullptr; InitOnceExecuteOnce(&s_initOnce, [](PINIT_ONCE, PVOID, PVOID *factory) -> BOOL { @@ -212,9 +208,9 @@ namespace __uuidof(IWICImagingFactory), factory) ) ? TRUE : FALSE; #endif - }, nullptr, reinterpret_cast(s_Factory.GetAddressOf())); + }, nullptr, reinterpret_cast(&factory)); - return s_Factory.Get(); + return factory; } //--------------------------------------------------------------------------------- diff --git a/WICTextureLoader/WICTextureLoader12.cpp b/WICTextureLoader/WICTextureLoader12.cpp index acc86ef..f0dc9a7 100644 --- a/WICTextureLoader/WICTextureLoader12.cpp +++ b/WICTextureLoader/WICTextureLoader12.cpp @@ -149,13 +149,9 @@ namespace IWICImagingFactory2* _GetWIC() { - static ComPtr s_Factory; - - if ( s_Factory ) - return s_Factory.Get(); - static INIT_ONCE s_initOnce = INIT_ONCE_STATIC_INIT; + IWICImagingFactory2* factory = nullptr; (void)InitOnceExecuteOnce(&s_initOnce, [](PINIT_ONCE, PVOID, PVOID *factory) -> BOOL { @@ -165,9 +161,9 @@ namespace CLSCTX_INPROC_SERVER, __uuidof(IWICImagingFactory2), factory) ) ? TRUE : FALSE; - }, nullptr, reinterpret_cast(s_Factory.GetAddressOf())); + }, nullptr, reinterpret_cast(&factory)); - return s_Factory.Get(); + return factory; } //---------------------------------------------------------------------------------