[PATCH 6/7] mf: Do not touch clock state when setting rate.

Nikolay Sivov nsivov at codeweavers.com
Wed Mar 11 06:19:44 CDT 2020


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/mf/session.c  | 3 ++-
 dlls/mf/tests/mf.c | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index 933cdf5c93..cc014f548a 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -2978,7 +2978,8 @@ static HRESULT clock_change_state(struct presentation_clock *clock, enum clock_c
         return hr;
 
     old_state = clock->state;
-    clock->state = states[command];
+    if (command != CLOCK_CMD_SET_RATE)
+        clock->state = states[command];
 
     /* Dump all pending timer requests immediately on start; otherwise try to cancel scheduled items when
        transitioning from running state. */
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index a86a8ecdbb..a9b0ee34a3 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -1797,6 +1797,10 @@ static void test_presentation_clock(void)
     hr = IMFRateControl_SetRate(rate_control, TRUE, -1.0f);
     ok(hr == MF_E_THINNING_UNSUPPORTED, "Unexpected hr %#x.\n", hr);
 
+    hr = IMFPresentationClock_GetState(clock, 0, &state);
+    ok(hr == S_OK, "Failed to get clock state, hr %#x.\n", hr);
+    ok(state == MFCLOCK_STATE_RUNNING, "Unexpected state %d.\n", state);
+
     hr = IMFRateControl_GetRate(rate_control, &thin, &rate);
     ok(hr == S_OK, "Failed to get clock rate, hr %#x.\n", hr);
     ok(rate == 0.5f, "Unexpected rate.\n");
-- 
2.25.1




More information about the wine-devel mailing list