After reading !3386 I thought I'd have a look. There are a ton more, but we have to start somewhere.
From: Sven Baars sbaars@codeweavers.com
--- dlls/quartz/filesource.c | 5 +++-- dlls/quartz/filtergraph.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c index 48950026ddf..7d6292df579 100644 --- a/dlls/quartz/filesource.c +++ b/dlls/quartz/filesource.c @@ -333,14 +333,15 @@ static void async_reader_destroy(struct strmbase_filter *iface) free(filter->requests); } CloseHandle(filter->file); - filter->sample_cs.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&filter->sample_cs); strmbase_source_cleanup(&filter->source);
free(filter->pszFileName); FreeMediaType(&filter->mt); }
+ filter->sample_cs.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&filter->sample_cs); + PostQueuedCompletionStatus(filter->port, 0, 1, NULL); WaitForSingleObject(filter->io_thread, INFINITE); CloseHandle(filter->io_thread); diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c index e0e126d8ef0..4100e71be3a 100644 --- a/dlls/quartz/filtergraph.c +++ b/dlls/quartz/filtergraph.c @@ -486,8 +486,9 @@ static ULONG WINAPI FilterGraphInner_Release(IUnknown *iface) } LeaveCriticalSection(&message_cs);
- This->cs.DebugInfo->Spare[0] = 0; + This->event_cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->event_cs); + This->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&This->cs); free(This); }
From: Sven Baars sbaars@codeweavers.com
--- dlls/quartz/tests/avidec.c | 2 ++ dlls/quartz/tests/avisplit.c | 2 ++ 2 files changed, 4 insertions(+)
diff --git a/dlls/quartz/tests/avidec.c b/dlls/quartz/tests/avidec.c index 46ce5d9eeda..f28dfee7402 100644 --- a/dlls/quartz/tests/avidec.c +++ b/dlls/quartz/tests/avidec.c @@ -1525,6 +1525,8 @@ static void test_connect_pin(void) ok(testsource.source.pin.peer == sink, "Got peer %p.\n", testsource.source.pin.peer); IFilterGraph2_Disconnect(graph, &testsource.source.pin.IPin_iface);
+ FreeMediaType(&source_mt); + FreeMediaType(&req_mt); IMemInputPin_Release(meminput); IPin_Release(sink); IPin_Release(source); diff --git a/dlls/quartz/tests/avisplit.c b/dlls/quartz/tests/avisplit.c index 8b7e8a222b0..25e313aa4b4 100644 --- a/dlls/quartz/tests/avisplit.c +++ b/dlls/quartz/tests/avisplit.c @@ -1233,6 +1233,7 @@ static void test_connect_pin(void) ok(hr == S_OK, "Got hr %#lx.\n", hr); ok(compare_media_types(&mt, &req_mt), "Media types didn't match.\n"); ok(compare_media_types(&testsource.source.pin.mt, &req_mt), "Media types didn't match.\n"); + FreeMediaType(&mt);
hr = IMediaControl_Pause(control); ok(hr == S_OK, "Got hr %#lx.\n", hr); @@ -1281,6 +1282,7 @@ static void test_connect_pin(void) ok(hr == S_OK, "Got hr %#lx.\n", hr); ok(compare_media_types(&mt, &req_mt), "Media types didn't match.\n"); ok(compare_media_types(&testsink.sink.pin.mt, &req_mt), "Media types didn't match.\n"); + FreeMediaType(&mt);
hr = IMediaControl_Pause(control); ok(hr == S_OK, "Got hr %#lx.\n", hr);
This merge request was approved by Zebediah Figura.