mf: Query for optional event generator for sinks.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4fc32ab657
commit
c61219625c
@ -107,6 +107,7 @@ struct media_sink
|
|||||||
{
|
{
|
||||||
struct list entry;
|
struct list entry;
|
||||||
IMFMediaSink *sink;
|
IMFMediaSink *sink;
|
||||||
|
IMFMediaEventGenerator *event_generator;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct output_node
|
struct output_node
|
||||||
@ -573,13 +574,14 @@ static void session_clear_presentation(struct media_session *session)
|
|||||||
heap_free(src_node);
|
heap_free(src_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LIST_FOR_EACH_ENTRY_SAFE(sink, sink2, &session->presentation.sinks, struct media_sink, entry)
|
LIST_FOR_EACH_ENTRY_SAFE(sink, sink2, &session->presentation.sinks, struct media_sink, entry)
|
||||||
{
|
{
|
||||||
list_remove(&sink->entry);
|
list_remove(&sink->entry);
|
||||||
|
|
||||||
if (sink->sink)
|
if (sink->sink)
|
||||||
IMFMediaSink_Release(sink->sink);
|
IMFMediaSink_Release(sink->sink);
|
||||||
|
if (sink->event_generator)
|
||||||
|
IMFMediaEventGenerator_Release(sink->event_generator);
|
||||||
heap_free(sink);
|
heap_free(sink);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -812,6 +814,8 @@ static HRESULT session_add_media_sink(struct media_session *session, IMFTopology
|
|||||||
media_sink->sink = sink;
|
media_sink->sink = sink;
|
||||||
IMFMediaSink_AddRef(media_sink->sink);
|
IMFMediaSink_AddRef(media_sink->sink);
|
||||||
|
|
||||||
|
IMFMediaSink_QueryInterface(media_sink->sink, &IID_IMFMediaEventGenerator, (void **)&media_sink->event_generator);
|
||||||
|
|
||||||
list_add_tail(&session->presentation.sinks, &media_sink->entry);
|
list_add_tail(&session->presentation.sinks, &media_sink->entry);
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user