[PATCH 1/2] quartz: Don't hold an extra reference in async_run_cb().
Zebediah Figura
z.figura12 at gmail.com
Fri Nov 6 13:46:05 CST 2020
We don't actually need to, because we'll wait for the callback when stopping the graph.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49907
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/quartz/filtergraph.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index e2e293ebfb9..9e385052315 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -1837,7 +1837,6 @@ static void CALLBACK async_run_cb(TP_CALLBACK_INSTANCE *instance, void *context,
}
LeaveCriticalSection(&graph->cs);
- IUnknown_Release(graph->outer_unk);
}
static HRESULT WINAPI MediaControl_Run(IMediaControl *iface)
@@ -1897,7 +1896,6 @@ static HRESULT WINAPI MediaControl_Run(IMediaControl *iface)
if (!graph->async_run_work)
graph->async_run_work = CreateThreadpoolWork(async_run_cb, graph, NULL);
graph->needs_async_run = 1;
- IUnknown_AddRef(graph->outer_unk);
SubmitThreadpoolWork(graph->async_run_work);
}
else
@@ -5017,9 +5015,8 @@ static HRESULT WINAPI MediaFilter_Stop(IMediaFilter *iface)
LeaveCriticalSection(&graph->cs);
- /* Don't cancel the callback; it's holding a reference to the graph. */
if (work)
- WaitForThreadpoolWorkCallbacks(work, FALSE);
+ WaitForThreadpoolWorkCallbacks(work, TRUE);
return hr;
}
@@ -5068,9 +5065,8 @@ static HRESULT WINAPI MediaFilter_Pause(IMediaFilter *iface)
LeaveCriticalSection(&graph->cs);
- /* Don't cancel the callback; it's holding a reference to the graph. */
if (work)
- WaitForThreadpoolWorkCallbacks(work, FALSE);
+ WaitForThreadpoolWorkCallbacks(work, TRUE);
return hr;
}
--
2.29.2
More information about the wine-devel
mailing list