From: Brendan McGrath <bmcgrath@codeweavers.com> The MS documentation for IPin::Disconnect says to return S_FALSE when not connected, but the MS implementation returns S_OK --- dlls/amstream/ddrawstream.c | 4 +++- dlls/amstream/tests/amstream.c | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dlls/amstream/ddrawstream.c b/dlls/amstream/ddrawstream.c index 384d0430b55..7c984f18a25 100644 --- a/dlls/amstream/ddrawstream.c +++ b/dlls/amstream/ddrawstream.c @@ -1173,7 +1173,9 @@ static HRESULT WINAPI ddraw_sink_Disconnect(IPin *iface) if (!stream->peer) { LeaveCriticalSection(&stream->cs); - return S_FALSE; + /* The MS documentation for IPin::Disconnect says to return S_FALSE + * when not connected, but the MS implementation returns S_OK */ + return S_OK; } IPin_Release(stream->peer); diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c index 74771ea2a13..2f01a2b7688 100644 --- a/dlls/amstream/tests/amstream.c +++ b/dlls/amstream/tests/amstream.c @@ -4095,7 +4095,6 @@ static void test_ddrawstream_receive_connection(void) hr = IPin_ReceiveConnection(pin, &source.source.pin.IPin_iface, &mt); ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr); hr = IPin_Disconnect(pin); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); /* Return S_OK from QueryAccept */ @@ -9481,7 +9480,7 @@ static void test_ddrawstream_set_format_dynamic(void) hr = IGraphBuilder_Disconnect(graph, &source.source.pin.IPin_iface); ok(hr == S_OK, "Got hr %#lx.\n", hr); hr = IGraphBuilder_Disconnect(graph, pin); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); + ok(hr == S_OK, "Got hr %#lx.\n", hr); ref = IAMMultiMediaStream_Release(mmstream); ok(!ref, "Got outstanding refcount %ld.\n", ref); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10595