Nikolay Sivov : mf/session: Get rid of some interface pointers casts.

Alexandre Julliard julliard at winehq.org
Mon Nov 8 15:45:05 CST 2021


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Nov  8 11:41:46 2021 +0300

mf/session: Get rid of some interface pointers casts.

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

---

 dlls/mf/session.c | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index c4dc6419b87..fe87b3e6584 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -122,7 +122,11 @@ enum media_source_flags
 struct media_source
 {
     struct list entry;
-    IMFMediaSource *source;
+    union
+    {
+        IMFMediaSource *source;
+        IUnknown *object;
+    };
     IMFPresentationDescriptor *pd;
     enum object_state state;
     unsigned int flags;
@@ -131,7 +135,11 @@ struct media_source
 struct media_sink
 {
     struct list entry;
-    IMFMediaSink *sink;
+    union
+    {
+        IMFMediaSink *sink;
+        IUnknown *object;
+    };
     IMFMediaSinkPreroll *preroll;
     IMFMediaEventGenerator *event_generator;
     BOOL finalized;
@@ -861,7 +869,7 @@ static void session_start(struct media_session *session, const GUID *time_format
                 if (!(session->presentation.flags & SESSION_FLAG_SOURCES_SUBSCRIBED))
                 {
                     if (FAILED(hr = IMFMediaSource_BeginGetEvent(source->source, &session->events_callback,
-                            (IUnknown *)source->source)))
+                            source->object)))
                     {
                         WARN("Failed to subscribe to source events, hr %#x.\n", hr);
                     }
@@ -1534,7 +1542,7 @@ static HRESULT session_set_current_topology(struct media_session *session, IMFTo
 
         /* Mask unsupported rate caps. */
 
-        caps &= session_get_object_rate_caps((IUnknown *)source->source)
+        caps &= session_get_object_rate_caps(source->object)
                 | ~(MFSESSIONCAP_RATE_FORWARD | MFSESSIONCAP_RATE_REVERSE);
     }
 
@@ -1547,7 +1555,7 @@ static HRESULT session_set_current_topology(struct media_session *session, IMFTo
         if (SUCCEEDED(IMFMediaSink_GetCharacteristics(sink->sink, &object_flags)))
         {
             if (!(object_flags & MEDIASINK_RATELESS))
-                caps &= session_get_object_rate_caps((IUnknown *)sink->sink)
+                caps &= session_get_object_rate_caps(sink->object)
                         | ~(MFSESSIONCAP_RATE_FORWARD | MFSESSIONCAP_RATE_REVERSE);
         }
     }
@@ -2382,7 +2390,7 @@ static void session_set_presentation_clock(struct media_session *session)
         /* Set clock for all topology nodes. */
         LIST_FOR_EACH_ENTRY(source, &session->presentation.sources, struct media_source, entry)
         {
-            session_set_consumed_clock((IUnknown *)source->source, session->clock);
+            session_set_consumed_clock(source->object, session->clock);
         }
 
         LIST_FOR_EACH_ENTRY(sink, &session->presentation.sinks, struct media_sink, entry)
@@ -2484,7 +2492,7 @@ static void session_set_source_object_state(struct media_session *session, IUnkn
 
             LIST_FOR_EACH_ENTRY(src, &session->presentation.sources, struct media_source, entry)
             {
-                if (object == (IUnknown *)src->source)
+                if (object == src->object)
                 {
                     changed = src->state != state;
                     src->state = state;
@@ -3403,7 +3411,7 @@ static HRESULT WINAPI session_sink_finalizer_callback_Invoke(IMFAsyncCallback *i
 
     LIST_FOR_EACH_ENTRY(sink, &session->presentation.sinks, struct media_sink, entry)
     {
-        if (state == (IUnknown *)sink->sink)
+        if (state == sink->object)
         {
             if (FAILED(hr = IMFMediaSink_QueryInterface(sink->sink, &IID_IMFFinalizableMediaSink, (void **)&fin_sink)))
                 WARN("Unexpected, missing IMFFinalizableMediaSink, hr %#x.\n", hr);
@@ -3515,7 +3523,7 @@ static HRESULT session_get_presentation_rate(struct media_session *session, MFRA
     {
         LIST_FOR_EACH_ENTRY(source, &session->presentation.sources, struct media_source, entry)
         {
-            if (FAILED(hr = session_presentation_object_get_rate((IUnknown *)source->source, direction, thin, fastest, &rate)))
+            if (FAILED(hr = session_presentation_object_get_rate(source->object, direction, thin, fastest, &rate)))
                 break;
         }
 
@@ -3523,7 +3531,7 @@ static HRESULT session_get_presentation_rate(struct media_session *session, MFRA
         {
             LIST_FOR_EACH_ENTRY(sink, &session->presentation.sinks, struct media_sink, entry)
             {
-                if (FAILED(hr = session_presentation_object_get_rate((IUnknown *)sink->sink, direction, thin, fastest, &rate)))
+                if (FAILED(hr = session_presentation_object_get_rate(sink->object, direction, thin, fastest, &rate)))
                     break;
             }
         }
@@ -3561,7 +3569,7 @@ static HRESULT session_is_presentation_rate_supported(struct media_session *sess
     {
         LIST_FOR_EACH_ENTRY(source, &session->presentation.sources, struct media_source, entry)
         {
-            if (FAILED(hr = MFGetService((IUnknown *)source->source, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateSupport,
+            if (FAILED(hr = MFGetService(source->object, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateSupport,
                     (void **)&rate_support)))
             {
                 value = 1.0f;
@@ -3589,7 +3597,7 @@ static HRESULT session_is_presentation_rate_supported(struct media_session *sess
                 if (flags & MEDIASINK_RATELESS)
                     continue;
 
-                if (FAILED(MFGetService((IUnknown *)sink->sink, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateSupport,
+                if (FAILED(MFGetService(sink->object, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateSupport,
                         (void **)&rate_support)))
                     continue;
 




More information about the wine-cvs mailing list