Michael Stefaniuc : avifil32: Use an iface instead of a vtbl pointer in IGetFrameImpl.

Alexandre Julliard julliard at winehq.org
Tue Dec 28 10:48:19 CST 2010


Module: wine
Branch: master
Commit: 157480df1a00f041706fa91d405be36b2c2dd00a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=157480df1a00f041706fa91d405be36b2c2dd00a

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Mon Dec 27 23:18:54 2010 +0100

avifil32: Use an iface instead of a vtbl pointer in IGetFrameImpl.

---

 dlls/avifil32/getframe.c |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/dlls/avifil32/getframe.c b/dlls/avifil32/getframe.c
index db05f85..6f3e6ba 100644
--- a/dlls/avifil32/getframe.c
+++ b/dlls/avifil32/getframe.c
@@ -62,7 +62,7 @@ static const struct IGetFrameVtbl igetframeVtbl = {
 
 typedef struct _IGetFrameImpl {
   /* IUnknown stuff */
-  const IGetFrameVtbl *lpVtbl;
+  IGetFrame          IGetFrame_iface;
   LONG               ref;
 
   /* IGetFrame stuff */
@@ -92,6 +92,11 @@ typedef struct _IGetFrameImpl {
 
 /***********************************************************************/
 
+static inline IGetFrameImpl *impl_from_IGetFrame(IGetFrame *iface)
+{
+  return CONTAINING_RECORD(iface, IGetFrameImpl, IGetFrame_iface);
+}
+
 static void AVIFILE_CloseCompressor(IGetFrameImpl *This)
 {
   if (This->lpInFormat != This->lpOutFormat) {
@@ -120,7 +125,7 @@ PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pStream)
 
   pg = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGetFrameImpl));
   if (pg != NULL) {
-    pg->lpVtbl        = &igetframeVtbl;
+    pg->IGetFrame_iface.lpVtbl = &igetframeVtbl;
     pg->ref           = 1;
     pg->lCurrentFrame = -1;
     pg->pStream       = pStream;
@@ -133,7 +138,7 @@ PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pStream)
 static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame *iface,
 						 REFIID refiid, LPVOID *obj)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
 
   TRACE("(%p,%s,%p)\n", This, debugstr_guid(refiid), obj);
 
@@ -149,7 +154,7 @@ static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame *iface,
 
 static ULONG   WINAPI IGetFrame_fnAddRef(IGetFrame *iface)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
   ULONG ref = InterlockedIncrement(&This->ref);
 
   TRACE("(%p)\n", iface);
@@ -159,7 +164,7 @@ static ULONG   WINAPI IGetFrame_fnAddRef(IGetFrame *iface)
 
 static ULONG   WINAPI IGetFrame_fnRelease(IGetFrame *iface)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
   ULONG ref = InterlockedDecrement(&This->ref);
 
   TRACE("(%p)\n", iface);
@@ -180,7 +185,7 @@ static ULONG   WINAPI IGetFrame_fnRelease(IGetFrame *iface)
 
 static LPVOID  WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
 
   LONG readBytes;
   LONG readSamples;
@@ -299,7 +304,7 @@ static LPVOID  WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos)
 static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame *iface, LONG lStart,
 					LONG lEnd, LONG lRate)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
 
   TRACE("(%p,%d,%d,%d)\n", iface, lStart, lEnd, lRate);
 
@@ -310,7 +315,7 @@ static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame *iface, LONG lStart,
 
 static HRESULT WINAPI IGetFrame_fnEnd(IGetFrame *iface)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
 
   TRACE("(%p)\n", iface);
 
@@ -324,7 +329,7 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
 					    LPVOID lpBits, INT x, INT y,
 					    INT dx, INT dy)
 {
-  IGetFrameImpl *This = (IGetFrameImpl *)iface;
+  IGetFrameImpl *This = impl_from_IGetFrame(iface);
 
   AVISTREAMINFOW     sInfo;
   LPBITMAPINFOHEADER lpbi         = lpbiWanted;




More information about the wine-cvs mailing list