Module: wine Branch: master Commit: f8d2c922b0e8029f6b88da41d5af0642e685e816 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f8d2c922b0e8029f6b88da41d5...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Tue Jul 24 15:12:17 2012 +0900
windowscodecs: Do not assume that vtable is the first element of the object, avoid not necessary casts.
---
dlls/windowscodecs/jpegformat.c | 23 +++++++++++++---------- 1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/dlls/windowscodecs/jpegformat.c b/dlls/windowscodecs/jpegformat.c index 53d7ec4..2c77d4f 100644 --- a/dlls/windowscodecs/jpegformat.c +++ b/dlls/windowscodecs/jpegformat.c @@ -175,9 +175,10 @@ static HRESULT WINAPI JpegDecoder_QueryInterface(IWICBitmapDecoder *iface, REFII
if (!ppv) return E_INVALIDARG;
- if (IsEqualIID(&IID_IUnknown, iid) || IsEqualIID(&IID_IWICBitmapDecoder, iid)) + if (IsEqualIID(&IID_IUnknown, iid) || + IsEqualIID(&IID_IWICBitmapDecoder, iid)) { - *ppv = This; + *ppv = &This->IWICBitmapDecoder_iface; } else { @@ -469,6 +470,8 @@ static const IWICBitmapDecoderVtbl JpegDecoder_Vtbl = { static HRESULT WINAPI JpegDecoder_Frame_QueryInterface(IWICBitmapFrameDecode *iface, REFIID iid, void **ppv) { + JpegDecoder *This = impl_from_IWICBitmapFrameDecode(iface); + TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
if (!ppv) return E_INVALIDARG; @@ -477,7 +480,7 @@ static HRESULT WINAPI JpegDecoder_Frame_QueryInterface(IWICBitmapFrameDecode *if IsEqualIID(&IID_IWICBitmapSource, iid) || IsEqualIID(&IID_IWICBitmapFrameDecode, iid)) { - *ppv = iface; + *ppv = &This->IWICBitmapFrameDecode_iface; } else { @@ -492,13 +495,13 @@ static HRESULT WINAPI JpegDecoder_Frame_QueryInterface(IWICBitmapFrameDecode *if static ULONG WINAPI JpegDecoder_Frame_AddRef(IWICBitmapFrameDecode *iface) { JpegDecoder *This = impl_from_IWICBitmapFrameDecode(iface); - return IUnknown_AddRef((IUnknown*)This); + return IWICBitmapDecoder_AddRef(&This->IWICBitmapDecoder_iface); }
static ULONG WINAPI JpegDecoder_Frame_Release(IWICBitmapFrameDecode *iface) { JpegDecoder *This = impl_from_IWICBitmapFrameDecode(iface); - return IUnknown_Release((IUnknown*)This); + return IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface); }
static HRESULT WINAPI JpegDecoder_Frame_GetSize(IWICBitmapFrameDecode *iface, @@ -722,8 +725,8 @@ HRESULT JpegDecoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv) InitializeCriticalSection(&This->lock); This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": JpegDecoder.lock");
- ret = IUnknown_QueryInterface((IUnknown*)This, iid, ppv); - IUnknown_Release((IUnknown*)This); + ret = IWICBitmapDecoder_QueryInterface(&This->IWICBitmapDecoder_iface, iid, ppv); + IWICBitmapDecoder_Release(&This->IWICBitmapDecoder_iface);
return ret; } @@ -1219,7 +1222,7 @@ static HRESULT WINAPI JpegEncoder_QueryInterface(IWICBitmapEncoder *iface, REFII if (IsEqualIID(&IID_IUnknown, iid) || IsEqualIID(&IID_IWICBitmapEncoder, iid)) { - *ppv = This; + *ppv = &This->IWICBitmapEncoder_iface; } else { @@ -1470,8 +1473,8 @@ HRESULT JpegEncoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv) InitializeCriticalSection(&This->lock); This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": JpegEncoder.lock");
- ret = IUnknown_QueryInterface((IUnknown*)This, iid, ppv); - IUnknown_Release((IUnknown*)This); + ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv); + IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
return ret; }