Nikolay Sivov : mfplay: Change to stopped state when playback ends.

Alexandre Julliard julliard at winehq.org
Mon Oct 25 16:30:07 CDT 2021


Module: wine
Branch: master
Commit: e1e7c160931120000b5cc3b404a41d27499fecb4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e1e7c160931120000b5cc3b404a41d27499fecb4

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Oct 25 13:04:22 2021 +0300

mfplay: Change to stopped state when playback ends.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplay/player.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/dlls/mfplay/player.c b/dlls/mfplay/player.c
index a34973f8e36..6f8d4942a0b 100644
--- a/dlls/mfplay/player.c
+++ b/dlls/mfplay/player.c
@@ -1929,6 +1929,17 @@ static void media_player_create_forward_event(struct media_player *player, HRESU
     LeaveCriticalSection(&player->cs);
 }
 
+static void media_player_playback_ended(struct media_player *player, HRESULT event_status,
+        struct media_event **event)
+{
+    EnterCriticalSection(&player->cs);
+
+    media_player_set_state(player, MFP_MEDIAPLAYER_STATE_STOPPED);
+    media_event_create(player, MFP_EVENT_TYPE_PLAYBACK_ENDED, event_status, player->item, event);
+
+    LeaveCriticalSection(&player->cs);
+}
+
 static HRESULT WINAPI media_player_session_events_callback_Invoke(IMFAsyncCallback *iface,
         IMFAsyncResult *result)
 {
@@ -1990,7 +2001,7 @@ static HRESULT WINAPI media_player_session_events_callback_Invoke(IMFAsyncCallba
             if (SUCCEEDED(IMFMediaEvent_GetUINT32(session_event, &MF_EVENT_TOPOLOGY_STATUS, &status)) &&
                     status == MF_TOPOSTATUS_ENDED)
             {
-                media_event_create(player, MFP_EVENT_TYPE_PLAYBACK_ENDED, event_status, player->item, &event);
+                media_player_playback_ended(player, event_status, &event);
             }
 
             break;




More information about the wine-cvs mailing list