Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/filtergraph.c | 4 ++-- dlls/quartz/tests/filtergraph.c | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c index 182ea5a2be..9750e6fe84 100644 --- a/dlls/quartz/filtergraph.c +++ b/dlls/quartz/filtergraph.c @@ -2583,7 +2583,7 @@ static HRESULT WINAPI MediaSeeking_SetPositions(IMediaSeeking *iface, LONGLONG * EnterCriticalSection(&graph->cs);
state = graph->state; - if (state == State_Running && !(current_flags & AM_SEEKING_NoFlush)) + if (state == State_Running) IMediaControl_Pause(&graph->IMediaControl_iface);
LIST_FOR_EACH_ENTRY(filter, &graph->filters, struct filter, entry) @@ -2616,7 +2616,7 @@ static HRESULT WINAPI MediaSeeking_SetPositions(IMediaSeeking *iface, LONGLONG * if ((current_flags & 0x7) != AM_SEEKING_NoPositioning) graph->pause_time = graph->start_time = -1;
- if (state == State_Running && !(current_flags & AM_SEEKING_NoFlush)) + if (state == State_Running) IMediaControl_Run(&graph->IMediaControl_iface);
LeaveCriticalSection(&graph->cs); diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c index 4b9b3b675c..3ef610d76b 100644 --- a/dlls/quartz/tests/filtergraph.c +++ b/dlls/quartz/tests/filtergraph.c @@ -3917,6 +3917,14 @@ static void test_graph_seeking(void) "Expected about 1234ms, got %s.\n", wine_dbgstr_longlong(current)); ok(stop == 9000 * 10000, "Got time %s.\n", wine_dbgstr_longlong(stop));
+ /* This remains true even if NoFlush is specified. */ + current = 1000 * 10000; + stop = 8000 * 10000; + hr = IMediaSeeking_SetPositions(seeking, ¤t, + AM_SEEKING_AbsolutePositioning | AM_SEEKING_NoFlush, + &stop, AM_SEEKING_AbsolutePositioning | AM_SEEKING_NoFlush); + ok(hr == S_OK, "Got hr %#x.\n", hr); + Sleep(100);
hr = IMediaSeeking_GetCurrentPosition(seeking, &time); @@ -3928,7 +3936,7 @@ static void test_graph_seeking(void) ok(hr == S_OK, "Got hr %#x.\n", hr); ok(abs(current - 1334 * 10000) < 40 * 10000, "Expected about 1334ms, got %s.\n", wine_dbgstr_longlong(current)); - ok(stop == 9000 * 10000, "Got time %s.\n", wine_dbgstr_longlong(stop)); + ok(stop == 8000 * 10000, "Got time %s.\n", wine_dbgstr_longlong(stop));
hr = IMediaControl_Pause(control); todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr); @@ -3946,7 +3954,7 @@ static void test_graph_seeking(void) ok(hr == S_OK, "Got hr %#x.\n", hr); todo_wine ok(abs(current - 1334 * 10000) < 40 * 10000, "Expected about 1334ms, got %s.\n", wine_dbgstr_longlong(current)); - ok(stop == 9000 * 10000, "Got time %s.\n", wine_dbgstr_longlong(stop)); + ok(stop == 8000 * 10000, "Got time %s.\n", wine_dbgstr_longlong(stop));
hr = IMediaControl_Stop(control); ok(hr == S_OK, "Got hr %#x.\n", hr);