From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/performance.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index 1f8de0837d5..fee3590c19f 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -1301,21 +1301,21 @@ static HRESULT WINAPI performance_graph_InsertTool(IDirectMusicGraph *iface, IDi DWORD *channels, DWORD channels_count, LONG index) { struct performance *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %p, %p, %lu, %ld): stub\n", This, tool, channels, channels_count, index); + TRACE("(%p, %p, %p, %lu, %ld)\n", This, tool, channels, channels_count, index); return E_NOTIMPL; }
static HRESULT WINAPI performance_graph_GetTool(IDirectMusicGraph *iface, DWORD index, IDirectMusicTool **tool) { struct performance *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %lu, %p): stub\n", This, index, tool); + TRACE("(%p, %lu, %p)\n", This, index, tool); return E_NOTIMPL; }
static HRESULT WINAPI performance_graph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool *tool) { struct performance *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %p): stub\n", This, tool); + TRACE("(%p, %p)\n", This, tool); return E_NOTIMPL; }
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/performance.c | 14 ++++++++------ dlls/dmime/tests/dmime.c | 8 ++++---- 2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index fee3590c19f..4085f70cc77 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -1356,28 +1356,30 @@ static ULONG WINAPI performance_tool_Release(IDirectMusicTool *iface) static HRESULT WINAPI performance_tool_Init(IDirectMusicTool *iface, IDirectMusicGraph *graph) { struct performance *This = impl_from_IDirectMusicTool(iface); - FIXME("(%p, %p): stub\n", This, graph); + TRACE("(%p, %p)\n", This, graph); return E_NOTIMPL; }
static HRESULT WINAPI performance_tool_GetMsgDeliveryType(IDirectMusicTool *iface, DWORD *type) { struct performance *This = impl_from_IDirectMusicTool(iface); - FIXME("(%p, %p): stub\n", This, type); - return E_NOTIMPL; + TRACE("(%p, %p)\n", This, type); + *type = DMUS_PMSGF_TOOL_IMMEDIATE; + return S_OK; }
static HRESULT WINAPI performance_tool_GetMediaTypeArraySize(IDirectMusicTool *iface, DWORD *size) { struct performance *This = impl_from_IDirectMusicTool(iface); - FIXME("(%p, %p): stub\n", This, size); - return E_NOTIMPL; + TRACE("(%p, %p)\n", This, size); + *size = 0; + return S_OK; }
static HRESULT WINAPI performance_tool_GetMediaTypes(IDirectMusicTool *iface, DWORD **types, DWORD size) { struct performance *This = impl_from_IDirectMusicTool(iface); - FIXME("(%p, %p, %lu): stub\n", This, types, size); + TRACE("(%p, %p, %lu)\n", This, types, size); return E_NOTIMPL; }
diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index 0aeed24b200..3d9eb188fed 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -1497,12 +1497,12 @@ static void test_performance_tool(void) ok(hr == E_NOTIMPL, "got %#lx\n", hr); value = 0xdeadbeef; hr = IDirectMusicTool_GetMsgDeliveryType(tool, &value); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(value == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", value); + ok(hr == S_OK, "got %#lx\n", hr); + ok(value == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", value); value = 0xdeadbeef; hr = IDirectMusicTool_GetMediaTypeArraySize(tool, &value); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(value == 0, "got %#lx\n", value); + ok(hr == S_OK, "got %#lx\n", hr); + ok(value == 0, "got %#lx\n", value); hr = IDirectMusicTool_GetMediaTypes(tool, (DWORD **)&types, 64); ok(hr == E_NOTIMPL, "got %#lx\n", hr); hr = IDirectMusicTool_ProcessPMsg(tool, performance, &msg);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/dmime_private.h | 6 -- dlls/dmime/graph.c | 118 ++++++++++++++++++++----------------- dlls/dmime/tests/dmime.c | 22 +++---- 3 files changed, 76 insertions(+), 70 deletions(-)
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h index 6102fd5ec2f..28b0afc9af8 100644 --- a/dlls/dmime/dmime_private.h +++ b/dlls/dmime/dmime_private.h @@ -86,12 +86,6 @@ typedef struct _DMUS_PRIVATE_TEMPO_ITEM { DMUS_IO_TEMPO_ITEM item; } DMUS_PRIVATE_TEMPO_ITEM, *LPDMUS_PRIVATE_TEMPO_ITEM;
-typedef struct _DMUS_PRIVATE_GRAPH_TOOL { - struct list entry; /* for listing elements */ - DWORD dwIndex; - IDirectMusicTool* pTool; -} DMUS_PRIVATE_GRAPH_TOOL, *LPDMUS_PRIVATE_GRAPH_TOOL; - typedef struct _DMUS_PRIVATE_TEMPO_PLAY_STATE { DWORD dummy; } DMUS_PRIVATE_TEMPO_PLAY_STATE, *LPDMUS_PRIVATE_TEMPO_PLAY_STATE; diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c index 159923b6a70..20d614b95ff 100644 --- a/dlls/dmime/graph.c +++ b/dlls/dmime/graph.c @@ -22,12 +22,18 @@
WINE_DEFAULT_DEBUG_CHANNEL(dmime);
+struct tool_entry +{ + struct list entry; + IDirectMusicTool *tool; +}; + struct IDirectMusicGraphImpl { IDirectMusicGraph IDirectMusicGraph_iface; struct dmobject dmobj; LONG ref; - WORD num_tools; - struct list Tools; + + struct list tools; };
static inline IDirectMusicGraphImpl *impl_from_IDirectMusicGraph(IDirectMusicGraph *iface) @@ -85,7 +91,19 @@ static ULONG WINAPI DirectMusicGraph_Release(IDirectMusicGraph *iface)
TRACE("(%p): %ld\n", This, ref);
- if (!ref) free(This); + if (!ref) + { + struct tool_entry *entry, *next; + + LIST_FOR_EACH_ENTRY_SAFE(entry, next, &This->tools, struct tool_entry, entry) + { + list_remove(&entry->entry); + IDirectMusicTool_Release(entry->tool); + free(entry); + } + + free(This); + }
return ref; } @@ -97,80 +115,74 @@ static HRESULT WINAPI DirectMusicGraph_StampPMsg(IDirectMusicGraph *iface, DMUS_ return S_OK; }
-static HRESULT WINAPI DirectMusicGraph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool* pTool, DWORD* pdwPChannels, DWORD cPChannels, LONG lIndex) +static HRESULT WINAPI DirectMusicGraph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool *tool, + DWORD *channels, DWORD channel_count, LONG index) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); - struct list* pEntry = NULL; - struct list* pPrevEntry = NULL; - LPDMUS_PRIVATE_GRAPH_TOOL pIt = NULL; - LPDMUS_PRIVATE_GRAPH_TOOL pNewTool = NULL; - - FIXME("(%p, %p, %p, %ld, %li): use of pdwPChannels\n", This, pTool, pdwPChannels, cPChannels, lIndex); - - if (!pTool) - return E_POINTER; + struct tool_entry *entry, *next;
- if (lIndex < 0) - lIndex = This->num_tools + lIndex; + TRACE("(%p, %p, %p, %ld, %li)\n", This, tool, channels, channel_count, index);
- pPrevEntry = &This->Tools; - LIST_FOR_EACH(pEntry, &This->Tools) - { - pIt = LIST_ENTRY(pEntry, DMUS_PRIVATE_GRAPH_TOOL, entry); - if (pIt->dwIndex == lIndex) - return DMUS_E_ALREADY_EXISTS; + if (!tool) return E_POINTER;
- if (pIt->dwIndex > lIndex) - break ; - pPrevEntry = pEntry; + LIST_FOR_EACH_ENTRY(next, &This->tools, struct tool_entry, entry) + { + if (next->tool == tool) return DMUS_E_ALREADY_EXISTS; + if (index-- <= 0) break; }
- ++This->num_tools; - pNewTool = calloc(1, sizeof(*pNewTool)); - pNewTool->pTool = pTool; - pNewTool->dwIndex = lIndex; - IDirectMusicTool_AddRef(pTool); - IDirectMusicTool_Init(pTool, iface); - list_add_tail (pPrevEntry->next, &pNewTool->entry); - -#if 0 - DWORD dwNum = 0; - IDirectMusicTool8_GetMediaTypes(pTool, &dwNum); -#endif + if (!(entry = calloc(1, sizeof(*entry)))) return E_OUTOFMEMORY; + entry->tool = tool; + IDirectMusicTool_AddRef(tool); + IDirectMusicTool_Init(tool, iface); + list_add_before(&next->entry, &entry->entry);
- return DS_OK; + return S_OK; }
-static HRESULT WINAPI DirectMusicGraph_GetTool(IDirectMusicGraph *iface, DWORD dwIndex, IDirectMusicTool** ppTool) +static HRESULT WINAPI DirectMusicGraph_GetTool(IDirectMusicGraph *iface, DWORD index, IDirectMusicTool **ret_tool) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); - struct list* pEntry = NULL; - LPDMUS_PRIVATE_GRAPH_TOOL pIt = NULL; + struct tool_entry *entry; + + TRACE("(%p, %ld, %p)\n", This, index, ret_tool);
- TRACE("(%p, %ld, %p)\n", This, dwIndex, ppTool); + if (!ret_tool) return E_POINTER;
- LIST_FOR_EACH (pEntry, &This->Tools) + LIST_FOR_EACH_ENTRY(entry, &This->tools, struct tool_entry, entry) { - pIt = LIST_ENTRY(pEntry, DMUS_PRIVATE_GRAPH_TOOL, entry); - if (pIt->dwIndex == dwIndex) + if (!index--) { - *ppTool = pIt->pTool; - if (*ppTool) - IDirectMusicTool_AddRef(*ppTool); + *ret_tool = entry->tool; + IDirectMusicTool_AddRef(entry->tool); return S_OK; } - if (pIt->dwIndex > dwIndex) - break ; }
return DMUS_E_NOT_FOUND; }
-static HRESULT WINAPI DirectMusicGraph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool* pTool) +static HRESULT WINAPI DirectMusicGraph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool *tool) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %p): stub\n", This, pTool); - return S_OK; + struct tool_entry *entry; + + TRACE("(%p, %p)\n", This, tool); + + if (!tool) return E_POINTER; + + LIST_FOR_EACH_ENTRY(entry, &This->tools, struct tool_entry, entry) + { + if (entry->tool == tool) + { + list_remove(&entry->entry); + IDirectMusicTool_Release(entry->tool); + free(entry); + return S_OK; + } + } + + return DMUS_E_NOT_FOUND; }
static const IDirectMusicGraphVtbl DirectMusicGraphVtbl = @@ -260,7 +272,7 @@ HRESULT create_dmgraph(REFIID riid, void **ret_iface) dmobject_init(&obj->dmobj, &CLSID_DirectMusicGraph, (IUnknown *)&obj->IDirectMusicGraph_iface); obj->dmobj.IDirectMusicObject_iface.lpVtbl = &dmobject_vtbl; obj->dmobj.IPersistStream_iface.lpVtbl = &persiststream_vtbl; - list_init(&obj->Tools); + list_init(&obj->tools);
hr = IDirectMusicGraph_QueryInterface(&obj->IDirectMusicGraph_iface, riid, ret_iface); IDirectMusicGraph_Release(&obj->IDirectMusicGraph_iface); diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index 3d9eb188fed..605830149e7 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -705,10 +705,10 @@ static void test_graph(void) ok(hr == S_OK, "got %#lx\n", hr);
hr = IDirectMusicGraph_GetTool(graph, 0, NULL); - todo_wine ok(hr == E_POINTER, "got %#lx\n", hr); + ok(hr == E_POINTER, "got %#lx\n", hr); hr = IDirectMusicGraph_GetTool(graph, 0, &tmp_tool); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(tool1 == tmp_tool, "got %p\n", tmp_tool); + ok(hr == S_OK, "got %#lx\n", hr); + ok(tool1 == tmp_tool, "got %p\n", tmp_tool); if (hr == S_OK) IDirectMusicTool_Release(tmp_tool); hr = IDirectMusicGraph_GetTool(graph, 1, &tmp_tool); ok(hr == S_OK, "got %#lx\n", hr); @@ -723,24 +723,24 @@ static void test_graph(void)
/* test removing the first tool */ hr = IDirectMusicGraph_RemoveTool(graph, NULL); - todo_wine ok(hr == E_POINTER, "got %#lx\n", hr); + ok(hr == E_POINTER, "got %#lx\n", hr); hr = IDirectMusicGraph_RemoveTool(graph, tool1); ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_RemoveTool(graph, tool1); - todo_wine ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr); + ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr);
hr = IDirectMusicGraph_GetTool(graph, 0, &tmp_tool); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); ok(tool2 == tmp_tool, "got %p\n", tmp_tool); if (hr == S_OK) IDirectMusicTool_Release(tmp_tool); hr = IDirectMusicGraph_GetTool(graph, 1, &tmp_tool); - todo_wine ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr); + ok(hr == DMUS_E_NOT_FOUND, "got %#lx\n", hr);
hr = IDirectMusicGraph_InsertTool(graph, tool1, NULL, 0, -1); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_GetTool(graph, 0, &tmp_tool); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(tool1 == tmp_tool, "got %p\n", tmp_tool); + ok(hr == S_OK, "got %#lx\n", hr); + ok(tool1 == tmp_tool, "got %p\n", tmp_tool); if (hr == S_OK) IDirectMusicTool_Release(tmp_tool);
@@ -810,7 +810,7 @@ static void test_graph(void) hr = IDirectMusicGraph_InsertTool(tmp_graph, tool1, NULL, 0, 0); ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_InsertTool(tmp_graph, tool2, NULL, 0, 0); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_StampPMsg(tmp_graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == graph, "got %p\n", msg.pGraph);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/graph.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c index 20d614b95ff..2e548690a96 100644 --- a/dlls/dmime/graph.c +++ b/dlls/dmime/graph.c @@ -46,7 +46,7 @@ static inline IDirectMusicGraphImpl *impl_from_IPersistStream(IPersistStream *if return CONTAINING_RECORD(iface, IDirectMusicGraphImpl, dmobj.IPersistStream_iface); }
-static HRESULT WINAPI DirectMusicGraph_QueryInterface(IDirectMusicGraph *iface, REFIID riid, void **ret_iface) +static HRESULT WINAPI graph_QueryInterface(IDirectMusicGraph *iface, REFIID riid, void **ret_iface) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface);
@@ -74,7 +74,7 @@ static HRESULT WINAPI DirectMusicGraph_QueryInterface(IDirectMusicGraph *iface, return E_NOINTERFACE; }
-static ULONG WINAPI DirectMusicGraph_AddRef(IDirectMusicGraph *iface) +static ULONG WINAPI graph_AddRef(IDirectMusicGraph *iface) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); ULONG ref = InterlockedIncrement(&This->ref); @@ -84,7 +84,7 @@ static ULONG WINAPI DirectMusicGraph_AddRef(IDirectMusicGraph *iface) return ref; }
-static ULONG WINAPI DirectMusicGraph_Release(IDirectMusicGraph *iface) +static ULONG WINAPI graph_Release(IDirectMusicGraph *iface) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); ULONG ref = InterlockedDecrement(&This->ref); @@ -108,14 +108,14 @@ static ULONG WINAPI DirectMusicGraph_Release(IDirectMusicGraph *iface) return ref; }
-static HRESULT WINAPI DirectMusicGraph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) +static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); FIXME("(%p, %p): stub\n", This, msg); return S_OK; }
-static HRESULT WINAPI DirectMusicGraph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool *tool, +static HRESULT WINAPI graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool *tool, DWORD *channels, DWORD channel_count, LONG index) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); @@ -140,7 +140,7 @@ static HRESULT WINAPI DirectMusicGraph_InsertTool(IDirectMusicGraph *iface, IDir return S_OK; }
-static HRESULT WINAPI DirectMusicGraph_GetTool(IDirectMusicGraph *iface, DWORD index, IDirectMusicTool **ret_tool) +static HRESULT WINAPI graph_GetTool(IDirectMusicGraph *iface, DWORD index, IDirectMusicTool **ret_tool) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry; @@ -162,7 +162,7 @@ static HRESULT WINAPI DirectMusicGraph_GetTool(IDirectMusicGraph *iface, DWORD i return DMUS_E_NOT_FOUND; }
-static HRESULT WINAPI DirectMusicGraph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool *tool) +static HRESULT WINAPI graph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool *tool) { IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry; @@ -185,15 +185,15 @@ static HRESULT WINAPI DirectMusicGraph_RemoveTool(IDirectMusicGraph *iface, IDir return DMUS_E_NOT_FOUND; }
-static const IDirectMusicGraphVtbl DirectMusicGraphVtbl = +static const IDirectMusicGraphVtbl graph_vtbl = { - DirectMusicGraph_QueryInterface, - DirectMusicGraph_AddRef, - DirectMusicGraph_Release, - DirectMusicGraph_StampPMsg, - DirectMusicGraph_InsertTool, - DirectMusicGraph_GetTool, - DirectMusicGraph_RemoveTool + graph_QueryInterface, + graph_AddRef, + graph_Release, + graph_StampPMsg, + graph_InsertTool, + graph_GetTool, + graph_RemoveTool, };
static HRESULT WINAPI graph_IDirectMusicObject_ParseDescriptor(IDirectMusicObject *iface, @@ -267,7 +267,7 @@ HRESULT create_dmgraph(REFIID riid, void **ret_iface)
*ret_iface = NULL; if (!(obj = calloc(1, sizeof(*obj)))) return E_OUTOFMEMORY; - obj->IDirectMusicGraph_iface.lpVtbl = &DirectMusicGraphVtbl; + obj->IDirectMusicGraph_iface.lpVtbl = &graph_vtbl; obj->ref = 1; dmobject_init(&obj->dmobj, &CLSID_DirectMusicGraph, (IUnknown *)&obj->IDirectMusicGraph_iface); obj->dmobj.IDirectMusicObject_iface.lpVtbl = &dmobject_vtbl;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/audiopath.c | 12 ++++++------ dlls/dmime/dmime_private.h | 1 - dlls/dmime/graph.c | 37 +++++++++++++++++++------------------ 3 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/dlls/dmime/audiopath.c b/dlls/dmime/audiopath.c index 013939f9dfa..9a869e630e4 100644 --- a/dlls/dmime/audiopath.c +++ b/dlls/dmime/audiopath.c @@ -158,11 +158,11 @@ static HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (IDirectMusicAud { if (IsEqualIID (iidInterface, &IID_IDirectMusicGraph)) { if (NULL == This->pToolGraph) { - IDirectMusicGraphImpl* pGraph; + IDirectMusicGraph* pGraph; hr = create_dmgraph(&IID_IDirectMusicGraph, (void**)&pGraph); if (FAILED(hr)) return hr; - This->pToolGraph = (IDirectMusicGraph*) pGraph; + This->pToolGraph = pGraph; } *ppObject = This->pToolGraph; IDirectMusicGraph_AddRef((LPDIRECTMUSICGRAPH) *ppObject); @@ -191,14 +191,14 @@ static HRESULT WINAPI IDirectMusicAudioPathImpl_GetObjectInPath (IDirectMusicAud IDirectMusicGraph* pPerfoGraph = NULL; IDirectMusicPerformance8_GetGraph(This->pPerf, &pPerfoGraph); if (NULL == pPerfoGraph) { - IDirectMusicGraphImpl* pGraph = NULL; + IDirectMusicGraph* pGraph = NULL; hr = create_dmgraph(&IID_IDirectMusicGraph, (void**)&pGraph); if (FAILED(hr)) return hr; - IDirectMusicPerformance8_SetGraph(This->pPerf, (IDirectMusicGraph*) pGraph); + IDirectMusicPerformance8_SetGraph(This->pPerf, pGraph); /* we need release as SetGraph do an AddRef */ - IDirectMusicGraph_Release((LPDIRECTMUSICGRAPH) pGraph); - pPerfoGraph = (LPDIRECTMUSICGRAPH) pGraph; + IDirectMusicGraph_Release(pGraph); + pPerfoGraph = pGraph; } *ppObject = pPerfoGraph; return S_OK; diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h index 28b0afc9af8..be0c463339f 100644 --- a/dlls/dmime/dmime_private.h +++ b/dlls/dmime/dmime_private.h @@ -45,7 +45,6 @@ /***************************************************************************** * Interfaces */ -typedef struct IDirectMusicGraphImpl IDirectMusicGraphImpl; typedef struct IDirectMusicAudioPathImpl IDirectMusicAudioPathImpl;
/***************************************************************************** diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c index 2e548690a96..1e6f16b6be0 100644 --- a/dlls/dmime/graph.c +++ b/dlls/dmime/graph.c @@ -28,27 +28,28 @@ struct tool_entry IDirectMusicTool *tool; };
-struct IDirectMusicGraphImpl { - IDirectMusicGraph IDirectMusicGraph_iface; - struct dmobject dmobj; - LONG ref; +struct graph +{ + IDirectMusicGraph IDirectMusicGraph_iface; + struct dmobject dmobj; + LONG ref;
- struct list tools; + struct list tools; };
-static inline IDirectMusicGraphImpl *impl_from_IDirectMusicGraph(IDirectMusicGraph *iface) +static inline struct graph *impl_from_IDirectMusicGraph(IDirectMusicGraph *iface) { - return CONTAINING_RECORD(iface, IDirectMusicGraphImpl, IDirectMusicGraph_iface); + return CONTAINING_RECORD(iface, struct graph, IDirectMusicGraph_iface); }
-static inline IDirectMusicGraphImpl *impl_from_IPersistStream(IPersistStream *iface) +static inline struct graph *impl_from_IPersistStream(IPersistStream *iface) { - return CONTAINING_RECORD(iface, IDirectMusicGraphImpl, dmobj.IPersistStream_iface); + return CONTAINING_RECORD(iface, struct graph, dmobj.IPersistStream_iface); }
static HRESULT WINAPI graph_QueryInterface(IDirectMusicGraph *iface, REFIID riid, void **ret_iface) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface);
TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ret_iface);
@@ -76,7 +77,7 @@ static HRESULT WINAPI graph_QueryInterface(IDirectMusicGraph *iface, REFIID riid
static ULONG WINAPI graph_AddRef(IDirectMusicGraph *iface) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p): %ld\n", This, ref); @@ -86,7 +87,7 @@ static ULONG WINAPI graph_AddRef(IDirectMusicGraph *iface)
static ULONG WINAPI graph_Release(IDirectMusicGraph *iface) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p): %ld\n", This, ref); @@ -110,7 +111,7 @@ static ULONG WINAPI graph_Release(IDirectMusicGraph *iface)
static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); FIXME("(%p, %p): stub\n", This, msg); return S_OK; } @@ -118,7 +119,7 @@ static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) static HRESULT WINAPI graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool *tool, DWORD *channels, DWORD channel_count, LONG index) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry, *next;
TRACE("(%p, %p, %p, %ld, %li)\n", This, tool, channels, channel_count, index); @@ -142,7 +143,7 @@ static HRESULT WINAPI graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicToo
static HRESULT WINAPI graph_GetTool(IDirectMusicGraph *iface, DWORD index, IDirectMusicTool **ret_tool) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry;
TRACE("(%p, %ld, %p)\n", This, index, ret_tool); @@ -164,7 +165,7 @@ static HRESULT WINAPI graph_GetTool(IDirectMusicGraph *iface, DWORD index, IDire
static HRESULT WINAPI graph_RemoveTool(IDirectMusicGraph *iface, IDirectMusicTool *tool) { - IDirectMusicGraphImpl *This = impl_from_IDirectMusicGraph(iface); + struct graph *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry;
TRACE("(%p, %p)\n", This, tool); @@ -240,7 +241,7 @@ static const IDirectMusicObjectVtbl dmobject_vtbl = {
static HRESULT WINAPI graph_IPersistStream_Load(IPersistStream *iface, IStream *stream) { - IDirectMusicGraphImpl *This = impl_from_IPersistStream(iface); + struct graph *This = impl_from_IPersistStream(iface);
FIXME("(%p, %p): Loading not implemented yet\n", This, stream);
@@ -262,7 +263,7 @@ static const IPersistStreamVtbl persiststream_vtbl = { /* for ClassFactory */ HRESULT create_dmgraph(REFIID riid, void **ret_iface) { - IDirectMusicGraphImpl* obj; + struct graph *obj; HRESULT hr;
*ret_iface = NULL;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/graph.c | 29 ++++++++++++++++++++++++++++- dlls/dmime/tests/dmime.c | 38 +++++++++++++++++++------------------- 2 files changed, 47 insertions(+), 20 deletions(-)
diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c index 1e6f16b6be0..44996b0303e 100644 --- a/dlls/dmime/graph.c +++ b/dlls/dmime/graph.c @@ -112,7 +112,34 @@ static ULONG WINAPI graph_Release(IDirectMusicGraph *iface) static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) { struct graph *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %p): stub\n", This, msg); + struct tool_entry *entry, *next, *first; + + TRACE("(%p, %p)\n", This, msg); + + if (!msg) return E_POINTER; + + first = LIST_ENTRY(This->tools.next, struct tool_entry, entry); + LIST_FOR_EACH_ENTRY_SAFE(entry, next, &This->tools, struct tool_entry, entry) + if (entry->tool == msg->pTool) break; + if (&entry->entry == &This->tools) next = first; + + if (msg->pTool) + { + IDirectMusicTool_Release(msg->pTool); + msg->pTool = NULL; + } + + if (&next->entry == &This->tools) return DMUS_S_LAST_TOOL; + + if (!msg->pGraph) + { + msg->pGraph = iface; + IDirectMusicGraph_AddRef(msg->pGraph); + } + + msg->pTool = next->tool; + IDirectMusicTool_AddRef(msg->pTool); + return S_OK; }
diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index 605830149e7..c9c613a40c5 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -746,12 +746,12 @@ static void test_graph(void)
/* Test basic IDirectMusicGraph_StampPMsg usage */ hr = IDirectMusicGraph_StampPMsg(graph, NULL); - todo_wine ok(hr == E_POINTER, "got %#lx\n", hr); + ok(hr == E_POINTER, "got %#lx\n", hr); memset(&msg, 0, sizeof(msg)); hr = IDirectMusicGraph_StampPMsg(graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool1, "got %p\n", msg.pTool); + ok(msg.pGraph == graph, "got %p\n", msg.pGraph); + ok(msg.pTool == tool1, "got %p\n", msg.pTool);
ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); @@ -766,19 +766,19 @@ static void test_graph(void)
hr = IDirectMusicGraph_StampPMsg(graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool2, "got %p\n", msg.pTool); + ok(msg.pGraph == graph, "got %p\n", msg.pGraph); + ok(msg.pTool == tool2, "got %p\n", msg.pTool); hr = IDirectMusicGraph_StampPMsg(graph, &msg); - todo_wine ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); - todo_wine ok(msg.pGraph == graph, "got %p\n", msg.pGraph); + ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); + ok(msg.pGraph == graph, "got %p\n", msg.pGraph); ok(!msg.pTool, "got %p\n", msg.pTool); hr = IDirectMusicGraph_StampPMsg(graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool1, "got %p\n", msg.pTool); - if (msg.pGraph) IDirectMusicGraph_Release(msg.pGraph); + ok(msg.pGraph == graph, "got %p\n", msg.pGraph); + ok(msg.pTool == tool1, "got %p\n", msg.pTool); + IDirectMusicGraph_Release(msg.pGraph); msg.pGraph = NULL; - if (msg.pTool) IDirectMusicGraph_Release(msg.pTool); + IDirectMusicGraph_Release(msg.pTool); msg.pTool = NULL;
@@ -794,16 +794,16 @@ static void test_graph(void) hr = IDirectMusicGraph_StampPMsg(graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == tmp_graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool2, "got %p\n", msg.pTool); - if (msg.pGraph) IDirectMusicGraph_Release(msg.pGraph); + ok(msg.pTool == tool2, "got %p\n", msg.pTool); + IDirectMusicGraph_Release(msg.pGraph); msg.pGraph = NULL;
msg.pGraph = graph; IDirectMusicGraph_AddRef(msg.pGraph); hr = IDirectMusicGraph_StampPMsg(tmp_graph, &msg); - todo_wine ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); + ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == NULL, "got %p\n", msg.pTool); + ok(msg.pTool == NULL, "got %p\n", msg.pTool);
msg.pTool = tool2; IDirectMusicTool_AddRef(msg.pTool); @@ -814,16 +814,16 @@ static void test_graph(void) hr = IDirectMusicGraph_StampPMsg(tmp_graph, &msg); ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool1, "got %p\n", msg.pTool); - if (msg.pGraph) IDirectMusicGraph_Release(msg.pGraph); + ok(msg.pTool == tool1, "got %p\n", msg.pTool); + IDirectMusicGraph_Release(msg.pGraph); msg.pGraph = NULL;
hr = IDirectMusicGraph_RemoveTool(graph, tool1); ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_StampPMsg(tmp_graph, &msg); - todo_wine ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); + ok(hr == DMUS_S_LAST_TOOL, "got %#lx\n", hr); ok(msg.pGraph == NULL, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == NULL, "got %p\n", msg.pTool); + ok(msg.pTool == NULL, "got %p\n", msg.pTool);
IDirectMusicGraph_Release(tmp_graph);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/performance.c | 33 +++++++++++++++++++++++++++++++-- dlls/dmime/tests/dmime.c | 34 +++++++++++++++++----------------- 2 files changed, 48 insertions(+), 19 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index 4085f70cc77..904008954a2 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -1293,8 +1293,37 @@ static ULONG WINAPI performance_graph_Release(IDirectMusicGraph *iface) static HRESULT WINAPI performance_graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) { struct performance *This = impl_from_IDirectMusicGraph(iface); - FIXME("(%p, %p): stub\n", This, msg); - return E_NOTIMPL; + HRESULT hr; + + TRACE("(%p, %p)\n", This, msg); + + if (!msg) return E_POINTER; + + /* FIXME: Implement segment and audio path graphs support */ + if (!This->pToolGraph) hr = DMUS_S_LAST_TOOL; + else if (FAILED(hr = IDirectMusicGraph_StampPMsg(This->pToolGraph, msg))) return hr; + + if (msg->pGraph) + { + IDirectMusicTool_Release(msg->pGraph); + msg->pGraph = NULL; + } + + if (hr == DMUS_S_LAST_TOOL) + { + if (msg->pTool) IDirectMusicTool_Release(msg->pTool); + msg->pTool = &This->IDirectMusicTool_iface; + IDirectMusicTool_AddRef(msg->pTool); + return S_OK; + } + + if (SUCCEEDED(hr)) + { + msg->pGraph = &This->IDirectMusicGraph_iface; + IDirectMusicTool_AddRef(msg->pGraph); + } + + return hr; }
static HRESULT WINAPI performance_graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicTool *tool, diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index c9c613a40c5..17f11daf5ac 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -1544,13 +1544,13 @@ static void test_performance_graph(void)
/* test IDirectMusicGraph_StampPMsg usage */ hr = IDirectMusicGraph_StampPMsg(graph, NULL); - todo_wine ok(hr == E_POINTER, "got %#lx\n", hr); + ok(hr == E_POINTER, "got %#lx\n", hr); memset(&msg, 0, sizeof(msg)); hr = IDirectMusicGraph_StampPMsg(graph, &msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == NULL, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool != NULL, "got %p\n", msg.pTool); - if (msg.pTool) check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE); + ok(msg.pTool != NULL, "got %p\n", msg.pTool); + check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE);
ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); @@ -1564,12 +1564,12 @@ static void test_performance_graph(void) ok(!msg.punkUser, "got %p\n", msg.punkUser);
hr = IDirectMusicGraph_StampPMsg(graph, &msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == NULL, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool != NULL, "got %p\n", msg.pTool); - if (msg.pTool) check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE); + ok(msg.pTool != NULL, "got %p\n", msg.pTool); + check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE);
- if (msg.pTool) IDirectMusicTool_Release(msg.pTool); + IDirectMusicTool_Release(msg.pTool); msg.pTool = NULL;
IDirectMusicGraph_Release(graph); @@ -1604,9 +1604,9 @@ static void test_performance_graph(void)
memset(&msg, 0, sizeof(msg)); hr = IDirectMusicGraph_StampPMsg(graph, &msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); - todo_wine ok(msg.pGraph == graph, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool == tool, "got %p\n", msg.pTool); + ok(hr == S_OK, "got %#lx\n", hr); + ok(msg.pGraph == graph, "got %p\n", msg.pGraph); + ok(msg.pTool == tool, "got %p\n", msg.pTool);
ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); @@ -1620,12 +1620,12 @@ static void test_performance_graph(void) ok(!msg.punkUser, "got %p\n", msg.punkUser);
hr = IDirectMusicGraph_StampPMsg(graph, &msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); ok(msg.pGraph == NULL, "got %p\n", msg.pGraph); - todo_wine ok(msg.pTool != NULL, "got %p\n", msg.pTool); - if (msg.pTool) check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE); + ok(msg.pTool != NULL, "got %p\n", msg.pTool); + check_interface(msg.pTool, &IID_IDirectMusicPerformance, TRUE);
- if (msg.pTool) IDirectMusicTool_Release(msg.pTool); + IDirectMusicTool_Release(msg.pTool); msg.pTool = NULL;
IDirectMusicGraph_Release(graph); @@ -1871,7 +1871,7 @@ static void test_performance_pmsg(void) hr = IDirectMusicPerformance_QueryInterface(performance, &IID_IDirectMusicGraph, (void **)&graph); ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_StampPMsg(graph, msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); IDirectMusicGraph_Release(graph);
hr = IDirectMusicPerformance_SendPMsg(performance, msg); @@ -1901,7 +1901,7 @@ static void test_performance_pmsg(void) hr = IDirectMusicPerformance_QueryInterface(performance, &IID_IDirectMusicGraph, (void **)&graph); ok(hr == S_OK, "got %#lx\n", hr); hr = IDirectMusicGraph_StampPMsg(graph, msg); - todo_wine ok(hr == S_OK, "got %#lx\n", hr); + ok(hr == S_OK, "got %#lx\n", hr); IDirectMusicGraph_Release(graph);
msg->dwFlags &= ~(DMUS_PMSGF_TOOL_IMMEDIATE | DMUS_PMSGF_TOOL_QUEUE | DMUS_PMSGF_TOOL_ATTIME);
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/dmime/graph.c | 11 +++++++++++ dlls/dmime/performance.c | 4 ++++ dlls/dmime/tests/dmime.c | 6 +++--- 3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/dmime/graph.c b/dlls/dmime/graph.c index 44996b0303e..d8f6bb88701 100644 --- a/dlls/dmime/graph.c +++ b/dlls/dmime/graph.c @@ -26,6 +26,7 @@ struct tool_entry { struct list entry; IDirectMusicTool *tool; + DWORD delivery; };
struct graph @@ -111,6 +112,7 @@ static ULONG WINAPI graph_Release(IDirectMusicGraph *iface)
static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) { + const DWORD delivery_flags = DMUS_PMSGF_TOOL_IMMEDIATE | DMUS_PMSGF_TOOL_QUEUE | DMUS_PMSGF_TOOL_ATTIME; struct graph *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry, *next, *first;
@@ -140,6 +142,9 @@ static HRESULT WINAPI graph_StampPMsg(IDirectMusicGraph *iface, DMUS_PMSG *msg) msg->pTool = next->tool; IDirectMusicTool_AddRef(msg->pTool);
+ msg->dwFlags &= ~delivery_flags; + msg->dwFlags |= next->delivery; + return S_OK; }
@@ -148,6 +153,7 @@ static HRESULT WINAPI graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicToo { struct graph *This = impl_from_IDirectMusicGraph(iface); struct tool_entry *entry, *next; + HRESULT hr;
TRACE("(%p, %p, %p, %ld, %li)\n", This, tool, channels, channel_count, index);
@@ -163,6 +169,11 @@ static HRESULT WINAPI graph_InsertTool(IDirectMusicGraph *iface, IDirectMusicToo entry->tool = tool; IDirectMusicTool_AddRef(tool); IDirectMusicTool_Init(tool, iface); + if (FAILED(hr = IDirectMusicTool_GetMsgDeliveryType(tool, &entry->delivery))) + { + WARN("Failed to get delivery type from tool %p, hr %#lx\n", tool, hr); + entry->delivery = DMUS_PMSGF_TOOL_IMMEDIATE; + } list_add_before(&next->entry, &entry->entry);
return S_OK; diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index 904008954a2..d277c5de043 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -1311,6 +1311,10 @@ static HRESULT WINAPI performance_graph_StampPMsg(IDirectMusicGraph *iface, DMUS
if (hr == DMUS_S_LAST_TOOL) { + const DWORD delivery_flags = DMUS_PMSGF_TOOL_IMMEDIATE | DMUS_PMSGF_TOOL_QUEUE | DMUS_PMSGF_TOOL_ATTIME; + msg->dwFlags &= ~delivery_flags; + msg->dwFlags |= DMUS_PMSGF_TOOL_QUEUE; + if (msg->pTool) IDirectMusicTool_Release(msg->pTool); msg->pTool = &This->IDirectMusicTool_iface; IDirectMusicTool_AddRef(msg->pTool); diff --git a/dlls/dmime/tests/dmime.c b/dlls/dmime/tests/dmime.c index 17f11daf5ac..e178960b18f 100644 --- a/dlls/dmime/tests/dmime.c +++ b/dlls/dmime/tests/dmime.c @@ -756,7 +756,7 @@ static void test_graph(void) ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); ok(!msg.mtTime, "got %ld\n", msg.mtTime); - todo_wine ok(msg.dwFlags == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", msg.dwFlags); + ok(msg.dwFlags == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", msg.dwFlags); ok(!msg.dwPChannel, "got %ld\n", msg.dwPChannel); ok(!msg.dwVirtualTrackID, "got %ld\n", msg.dwVirtualTrackID); ok(!msg.dwType, "got %#lx\n", msg.dwType); @@ -1555,7 +1555,7 @@ static void test_performance_graph(void) ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); ok(!msg.mtTime, "got %ld\n", msg.mtTime); - todo_wine ok(msg.dwFlags == DMUS_PMSGF_TOOL_QUEUE, "got %#lx\n", msg.dwFlags); + ok(msg.dwFlags == DMUS_PMSGF_TOOL_QUEUE, "got %#lx\n", msg.dwFlags); ok(!msg.dwPChannel, "got %ld\n", msg.dwPChannel); ok(!msg.dwVirtualTrackID, "got %ld\n", msg.dwVirtualTrackID); ok(!msg.dwType, "got %#lx\n", msg.dwType); @@ -1611,7 +1611,7 @@ static void test_performance_graph(void) ok(!msg.dwSize, "got %ld\n", msg.dwSize); ok(!msg.rtTime, "got %I64d\n", msg.rtTime); ok(!msg.mtTime, "got %ld\n", msg.mtTime); - todo_wine ok(msg.dwFlags == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", msg.dwFlags); + ok(msg.dwFlags == DMUS_PMSGF_TOOL_IMMEDIATE, "got %#lx\n", msg.dwFlags); ok(!msg.dwPChannel, "got %ld\n", msg.dwPChannel); ok(!msg.dwVirtualTrackID, "got %ld\n", msg.dwVirtualTrackID); ok(!msg.dwType, "got %#lx\n", msg.dwType);
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=137258
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
dmime: dmime.c:1926: Test failed: got 140
=== w8 (32 bit report) ===
dmime: dmime.c:1840: Test failed: got 029D7C5C
This merge request was approved by Michael Stefaniuc.