Title: [248896] trunk/Source/WebCore
Revision
248896
Author
you...@apple.com
Date
2019-08-20 02:39:25 -0700 (Tue, 20 Aug 2019)

Log Message

PendingActivationMediaStream does not need to be refcounted
https://bugs.webkit.org/show_bug.cgi?id=200879

Reviewed by Alex Christensen.

No observable change of behavior.

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::mediaStreamDidFail):
No need to asynchronously remove the observer since MediaStreamPrivate handles that properply now.
* Modules/mediastream/UserMediaRequest.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (248895 => 248896)


--- trunk/Source/WebCore/ChangeLog	2019-08-20 07:04:02 UTC (rev 248895)
+++ trunk/Source/WebCore/ChangeLog	2019-08-20 09:39:25 UTC (rev 248896)
@@ -1,3 +1,18 @@
+2019-08-20  Youenn Fablet  <you...@apple.com>
+
+        PendingActivationMediaStream does not need to be refcounted
+        https://bugs.webkit.org/show_bug.cgi?id=200879
+
+        Reviewed by Alex Christensen.
+
+        No observable change of behavior.
+
+        * Modules/mediastream/UserMediaRequest.cpp:
+        (WebCore::UserMediaRequest::allow):
+        (WebCore::UserMediaRequest::mediaStreamDidFail):
+        No need to asynchronously remove the observer since MediaStreamPrivate handles that properply now.
+        * Modules/mediastream/UserMediaRequest.h:
+
 2019-08-19  Devin Rousso  <drou...@apple.com>
 
         Web Inspector: Debugger: add a global breakpoint for pausing in the next microtask

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp (248895 => 248896)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2019-08-20 07:04:02 UTC (rev 248895)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.cpp	2019-08-20 09:39:25 UTC (rev 248896)
@@ -240,7 +240,7 @@
         }
 
         scopeExit.release();
-        m_pendingActivationMediaStream = PendingActivationMediaStream::create(WTFMove(protector), *this, WTFMove(stream), WTFMove(completionHandler));
+        m_pendingActivationMediaStream = makeUnique<PendingActivationMediaStream>(WTFMove(protector), *this, WTFMove(stream), WTFMove(completionHandler));
     };
 
     auto& document = downcast<Document>(*scriptExecutionContext());
@@ -395,8 +395,7 @@
         break;
     }
     m_promise.reject(NotReadableError, makeString("Failed starting capture of a "_s, typeDescription, " track"_s));
-    // We are in an observer iterator loop, we do not want to change the observers within this loop.
-    callOnMainThread([stream = WTFMove(m_pendingActivationMediaStream)] { });
+    m_pendingActivationMediaStream = nullptr;
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h (248895 => 248896)


--- trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2019-08-20 07:04:02 UTC (rev 248895)
+++ trunk/Source/WebCore/Modules/mediastream/UserMediaRequest.h	2019-08-20 09:39:25 UTC (rev 248896)
@@ -82,17 +82,13 @@
     void mediaStreamIsReady(Ref<MediaStream>&&);
     void mediaStreamDidFail(RealtimeMediaSource::Type);
 
-    class PendingActivationMediaStream : public RefCounted<PendingActivationMediaStream>, private MediaStreamPrivate::Observer {
+    class PendingActivationMediaStream : private MediaStreamPrivate::Observer {
+        WTF_MAKE_FAST_ALLOCATED;
     public:
-        static Ref<PendingActivationMediaStream> create(Ref<PendingActivity<UserMediaRequest>>&& protectingUserMediaRequest, UserMediaRequest& userMediaRequest, Ref<MediaStream>&& stream, CompletionHandler<void()>&& completionHandler)
-        {
-            return adoptRef(*new PendingActivationMediaStream { WTFMove(protectingUserMediaRequest), userMediaRequest, WTFMove(stream), WTFMove(completionHandler) });
-        }
+        PendingActivationMediaStream(Ref<PendingActivity<UserMediaRequest>>&&, UserMediaRequest&, Ref<MediaStream>&&, CompletionHandler<void()>&&);
         ~PendingActivationMediaStream();
 
     private:
-        PendingActivationMediaStream(Ref<PendingActivity<UserMediaRequest>>&&, UserMediaRequest&, Ref<MediaStream>&&, CompletionHandler<void()>&&);
-
         void characteristicsChanged() final;
 
         Ref<PendingActivity<UserMediaRequest>> m_protectingUserMediaRequest;
@@ -105,7 +101,7 @@
     Vector<String> m_audioDeviceUIDs;
 
     DOMPromiseDeferred<IDLInterface<MediaStream>> m_promise;
-    RefPtr<PendingActivationMediaStream> m_pendingActivationMediaStream;
+    std::unique_ptr<PendingActivationMediaStream> m_pendingActivationMediaStream;
     MediaStreamRequest m_request;
 };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to