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