Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/windowscodecs/decoder.c | 29 +++++++++++++++++++++++++++++ dlls/windowscodecs/info.c | 16 ---------------- 2 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/dlls/windowscodecs/decoder.c b/dlls/windowscodecs/decoder.c index 5318e7f2850..3d67733d08f 100644 --- a/dlls/windowscodecs/decoder.c +++ b/dlls/windowscodecs/decoder.c @@ -783,3 +783,32 @@ HRESULT CommonDecoder_CreateInstance(struct decoder *decoder,
return hr; } + +HRESULT get_decoder_info(REFCLSID clsid, IWICBitmapDecoderInfo **info) +{ + IWICImagingFactory* factory; + IWICComponentInfo *compinfo; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICImagingFactory, (void **)&factory); + + if (FAILED(hr)) + return hr; + + hr = IWICImagingFactory_CreateComponentInfo(factory, clsid, &compinfo); + + if (FAILED(hr)) + { + IWICImagingFactory_Release(factory); + return hr; + } + + hr = IWICComponentInfo_QueryInterface(compinfo, &IID_IWICBitmapDecoderInfo, + (void **)info); + + IWICComponentInfo_Release(compinfo); + IWICImagingFactory_Release(factory); + + return hr; +} diff --git a/dlls/windowscodecs/info.c b/dlls/windowscodecs/info.c index cbe8aae572d..615756f6672 100644 --- a/dlls/windowscodecs/info.c +++ b/dlls/windowscodecs/info.c @@ -2114,22 +2114,6 @@ void ReleaseComponentInfos(void) IWICComponentInfo_Release(&info->IWICComponentInfo_iface); }
-HRESULT get_decoder_info(REFCLSID clsid, IWICBitmapDecoderInfo **info) -{ - IWICComponentInfo *compinfo; - HRESULT hr; - - hr = CreateComponentInfo(clsid, &compinfo); - if (FAILED(hr)) return hr; - - hr = IWICComponentInfo_QueryInterface(compinfo, &IID_IWICBitmapDecoderInfo, - (void **)info); - - IWICComponentInfo_Release(compinfo); - - return hr; -} - typedef struct { IEnumUnknown IEnumUnknown_iface; LONG ref;