Title: [188702] trunk/Source/WebCore
Revision
188702
Author
[email protected]
Date
2015-08-20 14:32:50 -0700 (Thu, 20 Aug 2015)

Log Message

Stop using cancelCallOnMainThread in MediaPlayerPrivateAVFoundation
https://bugs.webkit.org/show_bug.cgi?id=148248

Reviewed by Tim Horton.

Replace cancelCallOnMainThread with WeakPtrs, just like in MediaPlayerPrivateAVFoundationObjC.

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::mainThreadCallback):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):
(WebCore::MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation): Deleted.
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (188701 => 188702)


--- trunk/Source/WebCore/ChangeLog	2015-08-20 21:28:34 UTC (rev 188701)
+++ trunk/Source/WebCore/ChangeLog	2015-08-20 21:32:50 UTC (rev 188702)
@@ -1,5 +1,21 @@
 2015-08-20  Anders Carlsson  <[email protected]>
 
+        Stop using cancelCallOnMainThread in MediaPlayerPrivateAVFoundation
+        https://bugs.webkit.org/show_bug.cgi?id=148248
+
+        Reviewed by Tim Horton.
+
+        Replace cancelCallOnMainThread with WeakPtrs, just like in MediaPlayerPrivateAVFoundationObjC.
+
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+        (WebCore::MediaPlayerPrivateAVFoundation::mainThreadCallback):
+        (WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
+        (WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):
+        (WebCore::MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation): Deleted.
+        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
+
+2015-08-20  Anders Carlsson  <[email protected]>
+
         Stop using cancelCallOnMainThread in DisplayRefreshMonitorMac
         https://bugs.webkit.org/show_bug.cgi?id=148241
 

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (188701 => 188702)


--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2015-08-20 21:28:34 UTC (rev 188701)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp	2015-08-20 21:32:50 UTC (rev 188702)
@@ -86,7 +86,6 @@
 {
     LOG(Media, "MediaPlayerPrivateAVFoundation::~MediaPlayerPrivateAVFoundation(%p)", this);
     setIgnoreLoadStateChanges(true);
-    cancelCallOnMainThread(mainThreadCallback, this);
 }
 
 MediaPlayerPrivateAVFoundation::MediaRenderingMode MediaPlayerPrivateAVFoundation::currentRenderingMode() const
@@ -744,12 +743,12 @@
     }
 }
 
-void MediaPlayerPrivateAVFoundation::mainThreadCallback(void* context)
+void MediaPlayerPrivateAVFoundation::mainThreadCallback()
 {
-    LOG(Media, "MediaPlayerPrivateAVFoundation::mainThreadCallback(%p)", context);
-    MediaPlayerPrivateAVFoundation* player = static_cast<MediaPlayerPrivateAVFoundation*>(context);
-    player->clearMainThreadPendingFlag();
-    player->dispatchNotification();
+    LOG(Media, "MediaPlayerPrivateAVFoundation::mainThreadCallback(%p)", this);
+
+    clearMainThreadPendingFlag();
+    dispatchNotification();
 }
 
 void MediaPlayerPrivateAVFoundation::clearMainThreadPendingFlag()
@@ -800,7 +799,14 @@
 #endif
     if (delayDispatch && !m_mainThreadCallPending) {
         m_mainThreadCallPending = true;
-        callOnMainThread(mainThreadCallback, this);
+
+        auto weakThis = createWeakPtr();
+        callOnMainThread([weakThis] {
+            if (!weakThis)
+                return;
+
+            weakThis->mainThreadCallback();
+        });
     }
 
     m_queueMutex.unlock();
@@ -831,9 +837,16 @@
             m_queuedNotifications.remove(0);
         }
         
-        if (!m_queuedNotifications.isEmpty() && !m_mainThreadCallPending)
-            callOnMainThread(mainThreadCallback, this);
+        if (!m_queuedNotifications.isEmpty() && !m_mainThreadCallPending) {
+            auto weakThis = createWeakPtr();
+            callOnMainThread([weakThis] {
+                if (!weakThis)
+                    return;
 
+                weakThis->mainThreadCallback();
+            });
+        }
+
         if (!notification.isValid())
             return;
     }

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h (188701 => 188702)


--- trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h	2015-08-20 21:28:34 UTC (rev 188701)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h	2015-08-20 21:32:50 UTC (rev 188702)
@@ -288,7 +288,7 @@
     virtual void tearDownVideoRendering();
     bool hasSetUpVideoRendering() const;
 
-    static void mainThreadCallback(void*);
+    void mainThreadCallback();
     
     void invalidateCachedDuration();
 
@@ -308,7 +308,7 @@
     void clearTextTracks();
     Vector<RefPtr<InbandTextTrackPrivateAVF>> m_textTracks;
 
-virtual URL resolvedURL() const;
+    virtual URL resolvedURL() const;
 
 private:
     MediaPlayer* m_player;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to