Michael Stefaniuc : avifil32: Merge and cleanup the IPersistFile iface.

Alexandre Julliard julliard at winehq.org
Thu Mar 7 13:57:14 CST 2013


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Thu Mar  7 00:42:27 2013 +0100

avifil32: Merge and cleanup the IPersistFile iface.

---

 dlls/avifil32/avifile.c |  115 ++++++++++++++++++-----------------------------
 1 files changed, 44 insertions(+), 71 deletions(-)

diff --git a/dlls/avifil32/avifile.c b/dlls/avifil32/avifile.c
index b8811fd..8ea6127 100644
--- a/dlls/avifil32/avifile.c
+++ b/dlls/avifil32/avifile.c
@@ -136,14 +136,6 @@ static const struct IAVIStreamVtbl iavist = {
 
 typedef struct _IAVIFileImpl IAVIFileImpl;
 
-typedef struct _IPersistFileImpl {
-  /* IUnknown stuff */
-  const IPersistFileVtbl *lpVtbl;
-
-  /* IPersistFile stuff */
-  IAVIFileImpl     *paf;
-} IPersistFileImpl;
-
 typedef struct _IAVIStreamImpl {
   /* IUnknown stuff */
   const IAVIStreamVtbl *lpVtbl;
@@ -175,11 +167,9 @@ typedef struct _IAVIStreamImpl {
 
 struct _IAVIFileImpl {
   IAVIFile          IAVIFile_iface;
+  IPersistFile      IPersistFile_iface;
   LONG              ref;
 
-  /* IAVIFile stuff... */
-  IPersistFileImpl  iPersistFile;
-
   AVIFILEINFOW      fInfo;
   IAVIStreamImpl   *ppStreams[MAX_AVISTREAMS];
 
@@ -207,6 +197,11 @@ static inline IAVIFileImpl *impl_from_IAVIFile(IAVIFile *iface)
   return CONTAINING_RECORD(iface, IAVIFileImpl, IAVIFile_iface);
 }
 
+static inline IAVIFileImpl *impl_from_IPersistFile(IPersistFile *iface)
+{
+  return CONTAINING_RECORD(iface, IAVIFileImpl, IPersistFile_iface);
+}
+
 /***********************************************************************/
 
 static HRESULT AVIFILE_AddFrame(IAVIStreamImpl *This, DWORD ckid, DWORD size,
@@ -247,9 +242,8 @@ HRESULT AVIFILE_CreateAVIFile(REFIID riid, LPVOID *ppv)
     return AVIERR_MEMORY;
 
   pfile->IAVIFile_iface.lpVtbl = &iavift;
+  pfile->IPersistFile_iface.lpVtbl = &ipersistft;
   pfile->ref = 0;
-  pfile->iPersistFile.lpVtbl = &ipersistft;
-  pfile->iPersistFile.paf = pfile;
 
   hr = IAVIFile_QueryInterface(&pfile->IAVIFile_iface, riid, ppv);
   if (FAILED(hr))
@@ -272,7 +266,7 @@ static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile *iface, REFIID refiid,
 
     return S_OK;
   } else if (IsEqualGUID(&IID_IPersistFile, refiid)) {
-    *obj = &This->iPersistFile;
+    *obj = &This->IPersistFile_iface;
     IAVIFile_AddRef(iface);
 
     return S_OK;
@@ -549,38 +543,29 @@ static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile *iface, DWORD fccType, LO
     return AVIERR_NODATA;
 }
 
-/***********************************************************************/
 
-static HRESULT WINAPI IPersistFile_fnQueryInterface(IPersistFile *iface,
-						    REFIID refiid, LPVOID *obj)
+static HRESULT WINAPI IPersistFile_fnQueryInterface(IPersistFile *iface, REFIID refiid, void **ppv)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
-
-  assert(This->paf != NULL);
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  return IAVIFile_QueryInterface((PAVIFILE)This->paf, refiid, obj);
+  return IAVIFile_QueryInterface(&This->IAVIFile_iface, refiid, ppv);
 }
 
-static ULONG   WINAPI IPersistFile_fnAddRef(IPersistFile *iface)
+static ULONG WINAPI IPersistFile_fnAddRef(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  assert(This->paf != NULL);
-
-  return IAVIFile_AddRef((PAVIFILE)This->paf);
+  return IAVIFile_AddRef(&This->IAVIFile_iface);
 }
 
-static ULONG   WINAPI IPersistFile_fnRelease(IPersistFile *iface)
+static ULONG WINAPI IPersistFile_fnRelease(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  assert(This->paf != NULL);
-
-  return IAVIFile_Release((PAVIFILE)This->paf);
+  return IAVIFile_Release(&This->IAVIFile_iface);
 }
 
-static HRESULT WINAPI IPersistFile_fnGetClassID(IPersistFile *iface,
-						LPCLSID pClassID)
+static HRESULT WINAPI IPersistFile_fnGetClassID(IPersistFile *iface, LPCLSID pClassID)
 {
   TRACE("(%p,%p)\n", iface, pClassID);
 
@@ -594,20 +579,16 @@ static HRESULT WINAPI IPersistFile_fnGetClassID(IPersistFile *iface,
 
 static HRESULT WINAPI IPersistFile_fnIsDirty(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
   TRACE("(%p)\n", iface);
 
-  assert(This->paf != NULL);
-
-  return (This->paf->fDirty ? S_OK : S_FALSE);
+  return (This->fDirty ? S_OK : S_FALSE);
 }
 
-static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile *iface,
-					  LPCOLESTR pszFileName, DWORD dwMode)
+static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile *iface, LPCOLESTR pszFileName, DWORD dwMode)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
-
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
   int len;
 
   TRACE("(%p,%s,0x%08X)\n", iface, debugstr_w(pszFileName), dwMode);
@@ -616,53 +597,49 @@ static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile *iface,
   if (pszFileName == NULL)
     return AVIERR_BADPARAM;
 
-  assert(This->paf != NULL);
-  if (This->paf->hmmio != NULL)
+  if (This->hmmio != NULL)
     return AVIERR_ERROR; /* No reuse of this object for another file! */
 
   /* remember mode and name */
-  This->paf->uMode = dwMode;
+  This->uMode = dwMode;
 
   len = lstrlenW(pszFileName) + 1;
-  This->paf->szFileName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
-  if (This->paf->szFileName == NULL)
+  This->szFileName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
+  if (This->szFileName == NULL)
     return AVIERR_MEMORY;
-  lstrcpyW(This->paf->szFileName, pszFileName);
+  lstrcpyW(This->szFileName, pszFileName);
 
   /* try to open the file */
-  This->paf->hmmio = mmioOpenW(This->paf->szFileName, NULL,
-			       MMIO_ALLOCBUF | dwMode);
-  if (This->paf->hmmio == NULL) {
+  This->hmmio = mmioOpenW(This->szFileName, NULL, MMIO_ALLOCBUF | dwMode);
+  if (This->hmmio == NULL) {
     /* mmioOpenW not in native DLLs of Win9x -- try mmioOpenA */
     LPSTR szFileName;
 
-    len = WideCharToMultiByte(CP_ACP, 0, This->paf->szFileName, -1,
-                               NULL, 0, NULL, NULL);
+    len = WideCharToMultiByte(CP_ACP, 0, This->szFileName, -1, NULL, 0, NULL, NULL);
     szFileName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR));
     if (szFileName == NULL)
       return AVIERR_MEMORY;
 
-    WideCharToMultiByte(CP_ACP, 0, This->paf->szFileName, -1, szFileName,
-			len, NULL, NULL);
+    WideCharToMultiByte(CP_ACP, 0, This->szFileName, -1, szFileName, len, NULL, NULL);
 
-    This->paf->hmmio = mmioOpenA(szFileName, NULL, MMIO_ALLOCBUF | dwMode);
+    This->hmmio = mmioOpenA(szFileName, NULL, MMIO_ALLOCBUF | dwMode);
     HeapFree(GetProcessHeap(), 0, szFileName);
-    if (This->paf->hmmio == NULL)
+    if (This->hmmio == NULL)
       return AVIERR_FILEOPEN;
   }
 
   /* should we create a new file? */
   if (dwMode & OF_CREATE) {
-    memset(& This->paf->fInfo, 0, sizeof(This->paf->fInfo));
-    This->paf->fInfo.dwFlags = AVIFILEINFO_HASINDEX | AVIFILEINFO_TRUSTCKTYPE;
+    memset(& This->fInfo, 0, sizeof(This->fInfo));
+    This->fInfo.dwFlags = AVIFILEINFO_HASINDEX | AVIFILEINFO_TRUSTCKTYPE;
 
     return AVIERR_OK;
   } else
-    return AVIFILE_LoadFile(This->paf);
+    return AVIFILE_LoadFile(This);
 }
 
-static HRESULT WINAPI IPersistFile_fnSave(IPersistFile *iface,
-					  LPCOLESTR pszFileName,BOOL fRemember)
+static HRESULT WINAPI IPersistFile_fnSave(IPersistFile *iface, LPCOLESTR pszFileName,
+    BOOL fRemember)
 {
   TRACE("(%p,%s,%d)\n", iface, debugstr_w(pszFileName), fRemember);
 
@@ -671,8 +648,7 @@ static HRESULT WINAPI IPersistFile_fnSave(IPersistFile *iface,
   return AVIERR_OK;
 }
 
-static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile *iface,
-						   LPCOLESTR pszFileName)
+static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile *iface, LPCOLESTR pszFileName)
 {
   TRACE("(%p,%s)\n", iface, debugstr_w(pszFileName));
 
@@ -681,10 +657,9 @@ static HRESULT WINAPI IPersistFile_fnSaveCompleted(IPersistFile *iface,
   return AVIERR_OK;
 }
 
-static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile *iface,
-						LPOLESTR *ppszFileName)
+static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile *iface, LPOLESTR *ppszFileName)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
   TRACE("(%p,%p)\n", iface, ppszFileName);
 
@@ -693,16 +668,14 @@ static HRESULT WINAPI IPersistFile_fnGetCurFile(IPersistFile *iface,
 
   *ppszFileName = NULL;
 
-  assert(This->paf != NULL);
-
-  if (This->paf->szFileName != NULL) {
-    int len = lstrlenW(This->paf->szFileName) + 1;
+  if (This->szFileName != NULL) {
+    int len = lstrlenW(This->szFileName) + 1;
 
     *ppszFileName = CoTaskMemAlloc(len * sizeof(WCHAR));
     if (*ppszFileName == NULL)
       return AVIERR_MEMORY;
 
-    strcpyW(*ppszFileName, This->paf->szFileName);
+    strcpyW(*ppszFileName, This->szFileName);
   }
 
   return AVIERR_OK;




More information about the wine-cvs mailing list