Michael Stefaniuc : avifil32: Merge IPersistFile into the WAVFile object.

Alexandre Julliard julliard at winehq.org
Tue Mar 4 14:08:50 CST 2014


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

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Mon Mar  3 22:08:05 2014 +0100

avifil32: Merge IPersistFile into the WAVFile object.

---

 dlls/avifil32/wavfile.c |   68 +++++++++++++++++------------------------------
 1 file changed, 25 insertions(+), 43 deletions(-)

diff --git a/dlls/avifil32/wavfile.c b/dlls/avifil32/wavfile.c
index 8ea63c9..e2c66cb 100644
--- a/dlls/avifil32/wavfile.c
+++ b/dlls/avifil32/wavfile.c
@@ -167,14 +167,6 @@ static const struct IAVIStreamVtbl iwavst = {
 
 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;
@@ -185,12 +177,12 @@ typedef struct _IAVIStreamImpl {
 
 struct _IAVIFileImpl {
   IAVIFile          IAVIFile_iface;
+  IPersistFile      IPersistFile_iface;
   IUnknown          IUnknown_inner;
   IUnknown          *outer_unk;
   LONG              ref;
 
   /* IAVIFile, IAVIStream stuff... */
-  IPersistFileImpl  iPersistFile;
   IAVIStreamImpl    iAVIStream;
 
   AVIFILEINFOW      fInfo;
@@ -234,7 +226,7 @@ static HRESULT WINAPI IUnknown_fnQueryInterface(IUnknown *iface, REFIID riid, vo
     else if (IsEqualGUID(&IID_IAVIStream, riid))
         *ret_iface = &This->iAVIStream;
     else if (IsEqualGUID(&IID_IPersistFile, riid))
-        *ret_iface = &This->iPersistFile;
+        *ret_iface = &This->IPersistFile_iface;
     else {
         WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ret_iface);
         *ret_iface = NULL;
@@ -306,7 +298,7 @@ HRESULT AVIFILE_CreateWAVFile(IUnknown *outer_unk, REFIID riid, void **ret_iface
 
   pfile->IUnknown_inner.lpVtbl = &unk_vtbl;
   pfile->IAVIFile_iface.lpVtbl = &iwavft;
-  pfile->iPersistFile.lpVtbl   = &iwavpft;
+  pfile->IPersistFile_iface.lpVtbl = &iwavpft;
   pfile->iAVIStream.lpVtbl     = &iwavst;
   pfile->ref = 1;
   if (outer_unk)
@@ -314,7 +306,6 @@ HRESULT AVIFILE_CreateWAVFile(IUnknown *outer_unk, REFIID riid, void **ret_iface
   else
     pfile->outer_unk = &pfile->IUnknown_inner;
 
-  pfile->iPersistFile.paf = pfile;
   pfile->iAVIStream.paf   = pfile;
 
   hr = IUnknown_QueryInterface(&pfile->IUnknown_inner, riid, ret_iface);
@@ -540,32 +531,31 @@ static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile *iface, DWORD fccType, LO
 
 /***********************************************************************/
 
-static HRESULT WINAPI IPersistFile_fnQueryInterface(IPersistFile *iface,
-						    REFIID refiid, LPVOID *obj)
+static inline IAVIFileImpl *impl_from_IPersistFile(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
+    return CONTAINING_RECORD(iface, IAVIFileImpl, IPersistFile_iface);
+}
 
-  assert(This->paf != NULL);
+static HRESULT WINAPI IPersistFile_fnQueryInterface(IPersistFile *iface, REFIID riid,
+        void **ret_iface)
+{
+    IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  return IAVIFile_QueryInterface((PAVIFILE)This->paf, refiid, obj);
+    return IUnknown_QueryInterface(This->outer_unk, riid, ret_iface);
 }
 
 static ULONG   WINAPI IPersistFile_fnAddRef(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
-
-  assert(This->paf != NULL);
+    IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  return IAVIFile_AddRef((PAVIFILE)This->paf);
+    return IUnknown_AddRef(This->outer_unk);
 }
 
 static ULONG   WINAPI IPersistFile_fnRelease(IPersistFile *iface)
 {
-  IPersistFileImpl *This = (IPersistFileImpl *)iface;
-
-  assert(This->paf != NULL);
+    IAVIFileImpl *This = impl_from_IPersistFile(iface);
 
-  return IAVIFile_Release((PAVIFILE)This->paf);
+    return IUnknown_Release(This->outer_unk);
 }
 
 static HRESULT WINAPI IPersistFile_fnGetClassID(IPersistFile *iface,
@@ -583,20 +573,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);
+    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)
 {
-  IAVIFileImpl *This = ((IPersistFileImpl*)iface)->paf;
-
+  IAVIFileImpl *This = impl_from_IPersistFile(iface);
   WCHAR wszStreamFmt[50];
   INT   len;
 
@@ -606,7 +592,6 @@ static HRESULT WINAPI IPersistFile_fnLoad(IPersistFile *iface,
   if (pszFileName == NULL)
     return AVIERR_BADPARAM;
 
-  assert(This != NULL);
   if (This->hmmio != NULL)
     return AVIERR_ERROR; /* No reuse of this object for another file! */
 
@@ -678,10 +663,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);
 
@@ -690,16 +674,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) {
+    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