Nikolay Sivov : dmime: No need to allocate description separately for IDirectMusicGraph.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Apr 27 07:45:10 CDT 2015
Module: wine
Branch: master
Commit: b508c85c666932a31d866049e92e364e06cad30a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b508c85c666932a31d866049e92e364e06cad30a
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Apr 27 00:53:47 2015 +0300
dmime: No need to allocate description separately for IDirectMusicGraph.
---
dlls/dmime/graph.c | 50 ++++++++++++++++++++++++--------------------------
1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c
index a784007..9e9c2fb 100644
--- a/dlls/dmime/graph.c
+++ b/dlls/dmime/graph.c
@@ -29,7 +29,7 @@ struct IDirectMusicGraphImpl {
LONG ref;
/* IDirectMusicGraphImpl fields */
- LPDMUS_OBJECTDESC pDesc;
+ DMUS_OBJECTDESC desc;
WORD num_tools;
struct list Tools;
};
@@ -218,8 +218,7 @@ static HRESULT WINAPI DirectMusicObject_GetDescriptor(IDirectMusicObject *iface,
{
IDirectMusicGraphImpl *This = impl_from_IDirectMusicObject(iface);
TRACE("(%p, %p)\n", This, desc);
- /* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
- memcpy(desc, This->pDesc, This->pDesc->dwSize);
+ *desc = This->desc;
return S_OK;
}
@@ -231,31 +230,31 @@ static HRESULT WINAPI DirectMusicObject_SetDescriptor(IDirectMusicObject *iface,
/* According to MSDN, we should copy only given values, not whole struct */
if (pDesc->dwValidData & DMUS_OBJ_OBJECT)
- This->pDesc->guidObject = pDesc->guidObject;
+ This->desc.guidObject = pDesc->guidObject;
if (pDesc->dwValidData & DMUS_OBJ_CLASS)
- This->pDesc->guidClass = pDesc->guidClass;
+ This->desc.guidClass = pDesc->guidClass;
if (pDesc->dwValidData & DMUS_OBJ_NAME)
- lstrcpynW (This->pDesc->wszName, pDesc->wszName, DMUS_MAX_NAME);
+ lstrcpynW (This->desc.wszName, pDesc->wszName, DMUS_MAX_NAME);
if (pDesc->dwValidData & DMUS_OBJ_CATEGORY)
- lstrcpynW (This->pDesc->wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
+ lstrcpynW (This->desc.wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
if (pDesc->dwValidData & DMUS_OBJ_FILENAME)
- lstrcpynW (This->pDesc->wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
+ lstrcpynW (This->desc.wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
if (pDesc->dwValidData & DMUS_OBJ_VERSION)
- This->pDesc->vVersion = pDesc->vVersion;
+ This->desc.vVersion = pDesc->vVersion;
if (pDesc->dwValidData & DMUS_OBJ_DATE)
- This->pDesc->ftDate = pDesc->ftDate;
+ This->desc.ftDate = pDesc->ftDate;
if (pDesc->dwValidData & DMUS_OBJ_MEMORY)
{
- This->pDesc->llMemLength = pDesc->llMemLength;
- memcpy(This->pDesc->pbMemData, pDesc->pbMemData, pDesc->llMemLength);
+ This->desc.llMemLength = pDesc->llMemLength;
+ memcpy(This->desc.pbMemData, pDesc->pbMemData, pDesc->llMemLength);
}
/* according to MSDN, we copy the stream */
if (pDesc->dwValidData & DMUS_OBJ_STREAM)
- IStream_Clone(pDesc->pStream, &This->pDesc->pStream);
+ IStream_Clone(pDesc->pStream, &This->desc.pStream);
/* add new flags */
- This->pDesc->dwValidData |= pDesc->dwValidData;
+ This->desc.dwValidData |= pDesc->dwValidData;
return S_OK;
}
@@ -479,20 +478,20 @@ static HRESULT WINAPI PersistStream_Load(IPersistStream *iface, IStream* pStm)
switch (chunkID) {
case DMUS_FOURCC_GUID_CHUNK: {
TRACE_(dmfile)(": GUID chunk\n");
- This->pDesc->dwValidData |= DMUS_OBJ_OBJECT;
- IStream_Read (pStm, &This->pDesc->guidObject, chunkSize, NULL);
+ This->desc.dwValidData |= DMUS_OBJ_OBJECT;
+ IStream_Read (pStm, &This->desc.guidObject, chunkSize, NULL);
break;
}
case DMUS_FOURCC_VERSION_CHUNK: {
TRACE_(dmfile)(": version chunk\n");
- This->pDesc->dwValidData |= DMUS_OBJ_VERSION;
- IStream_Read (pStm, &This->pDesc->vVersion, chunkSize, NULL);
+ This->desc.dwValidData |= DMUS_OBJ_VERSION;
+ IStream_Read (pStm, &This->desc.vVersion, chunkSize, NULL);
break;
}
case DMUS_FOURCC_CATEGORY_CHUNK: {
TRACE_(dmfile)(": category chunk\n");
- This->pDesc->dwValidData |= DMUS_OBJ_CATEGORY;
- IStream_Read (pStm, This->pDesc->wszCategory, chunkSize, NULL);
+ This->desc.dwValidData |= DMUS_OBJ_CATEGORY;
+ IStream_Read (pStm, This->desc.wszCategory, chunkSize, NULL);
break;
}
case FOURCC_LIST: {
@@ -514,8 +513,8 @@ static HRESULT WINAPI PersistStream_Load(IPersistStream *iface, IStream* pStm)
case mmioFOURCC('I','N','A','M'):
case DMUS_FOURCC_UNAM_CHUNK: {
TRACE_(dmfile)(": name chunk\n");
- This->pDesc->dwValidData |= DMUS_OBJ_NAME;
- IStream_Read (pStm, This->pDesc->wszName, chunkSize, NULL);
+ This->desc.dwValidData |= DMUS_OBJ_NAME;
+ IStream_Read (pStm, This->desc.wszName, chunkSize, NULL);
break;
}
case mmioFOURCC('I','A','R','T'):
@@ -639,10 +638,9 @@ HRESULT WINAPI create_dmgraph(REFIID riid, void **ret_iface)
obj->IDirectMusicGraph_iface.lpVtbl = &DirectMusicGraphVtbl;
obj->IDirectMusicObject_iface.lpVtbl = &DirectMusicObjectVtbl;
obj->IPersistStream_iface.lpVtbl = &PersistStreamVtbl;
- obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));
- DM_STRUCT_INIT(obj->pDesc);
- obj->pDesc->dwValidData |= DMUS_OBJ_CLASS;
- obj->pDesc->guidClass = CLSID_DirectMusicGraph;
+ DM_STRUCT_INIT(&obj->desc);
+ obj->desc.dwValidData |= DMUS_OBJ_CLASS;
+ obj->desc.guidClass = CLSID_DirectMusicGraph;
obj->ref = 1;
list_init(&obj->Tools);
More information about the wine-cvs
mailing list