Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
2cd0d1ec
Commit
2cd0d1ec
authored
Apr 20, 2021
by
Nikolay Sivov
Committed by
Alexandre Julliard
Apr 20, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mfplay: Implement MFP_EVENT_TYPE_PLAYBACK_ENDED event.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
11d3f697
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
0 deletions
+26
-0
player.c
dlls/mfplay/player.c
+26
-0
No files found.
dlls/mfplay/player.c
View file @
2cd0d1ec
...
...
@@ -1605,6 +1605,21 @@ static void media_player_create_forward_event(struct media_player *player, HRESU
LeaveCriticalSection
(
&
player
->
cs
);
}
static
void
media_player_create_playback_ended_event
(
struct
media_player
*
player
,
HRESULT
event_status
,
struct
media_event
**
event
)
{
EnterCriticalSection
(
&
player
->
cs
);
if
(
SUCCEEDED
(
media_event_create
(
player
,
MFP_EVENT_TYPE_PLAYBACK_ENDED
,
event_status
,
player
->
item
,
event
)))
{
if
(
player
->
item
)
IMFPMediaItem_Release
(
player
->
item
);
player
->
item
=
NULL
;
}
LeaveCriticalSection
(
&
player
->
cs
);
}
static
HRESULT
WINAPI
media_player_session_events_callback_Invoke
(
IMFAsyncCallback
*
iface
,
IMFAsyncResult
*
result
)
{
...
...
@@ -1616,6 +1631,7 @@ static HRESULT WINAPI media_player_session_events_callback_Invoke(IMFAsyncCallba
HRESULT
hr
,
event_status
;
IMFPMediaItem
*
item
=
NULL
;
IMFTopology
*
topology
;
unsigned
int
status
;
PROPVARIANT
value
;
if
(
FAILED
(
hr
=
IMFMediaSession_EndGetEvent
(
player
->
session
,
result
,
&
session_event
)))
...
...
@@ -1661,6 +1677,16 @@ static HRESULT WINAPI media_player_session_events_callback_Invoke(IMFAsyncCallba
break
;
case
MESessionTopologyStatus
:
if
(
SUCCEEDED
(
IMFMediaEvent_GetUINT32
(
session_event
,
&
MF_EVENT_TOPOLOGY_STATUS
,
&
status
))
&&
status
==
MF_TOPOSTATUS_ENDED
)
{
media_player_create_playback_ended_event
(
player
,
event_status
,
&
event
);
}
break
;
case
MEBufferingStarted
:
case
MEBufferingStopped
:
case
MEExtendedType
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment