Title: [169952] trunk/Source/WebCore
Revision
169952
Author
[email protected]
Date
2014-06-13 15:24:17 -0700 (Fri, 13 Jun 2014)

Log Message

set setUsesExternalPlaybackWhileExternalScreenIsActive based on fullscreen mode
https://bugs.webkit.org/show_bug.cgi?id=133829

Patch by Jeremy Jones <[email protected]> on 2014-06-13
Reviewed by Eric Carlson.

When playing inline and external screen is active, don't use external playback.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
declare updateDisableExternalPlayback()
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
call updateDisableExternalPlayback when player is created
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
call updateDisableExternalPlayback when fullscreen mode changes
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):
update setUsesExternalPlaybackWhileExternalScreenIsActive based on fullscreen mode

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (169951 => 169952)


--- trunk/Source/WebCore/ChangeLog	2014-06-13 22:18:52 UTC (rev 169951)
+++ trunk/Source/WebCore/ChangeLog	2014-06-13 22:24:17 UTC (rev 169952)
@@ -1,3 +1,22 @@
+2014-06-13  Jeremy Jones  <[email protected]>
+
+        set setUsesExternalPlaybackWhileExternalScreenIsActive based on fullscreen mode
+        https://bugs.webkit.org/show_bug.cgi?id=133829
+
+        Reviewed by Eric Carlson.
+
+        When playing inline and external screen is active, don't use external playback.
+
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
+        declare updateDisableExternalPlayback()
+        * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
+        call updateDisableExternalPlayback when player is created
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
+        call updateDisableExternalPlayback when fullscreen mode changes
+        (WebCore::MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback):
+        update setUsesExternalPlaybackWhileExternalScreenIsActive based on fullscreen mode
+
 2014-06-13  Brent Fulgham  <[email protected]>
 
         Convert LayerPool and TileCoverageMap from ObjC to C++

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h (169951 => 169952)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h	2014-06-13 22:18:52 UTC (rev 169951)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h	2014-06-13 22:24:17 UTC (rev 169952)
@@ -263,6 +263,7 @@
     virtual MediaPlayer::WirelessPlaybackTargetType wirelessPlaybackTargetType() const override;
     virtual bool wirelessVideoPlaybackDisabled() const override;
     virtual void setWirelessVideoPlaybackDisabled(bool) override;
+    void updateDisableExternalPlayback();
 #endif
 
     WeakPtrFactory<MediaPlayerPrivateAVFoundationObjC> m_weakPtrFactory;

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (169951 => 169952)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2014-06-13 22:18:52 UTC (rev 169951)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm	2014-06-13 22:24:17 UTC (rev 169952)
@@ -737,7 +737,7 @@
     [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"rate" options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
 #if ENABLE(IOS_AIRPLAY)
     [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"externalPlaybackActive" options:NSKeyValueObservingOptionNew context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
-    [m_avPlayer.get() setUsesExternalPlaybackWhileExternalScreenIsActive:YES];
+    updateDisableExternalPlayback();
 #endif
 
 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
@@ -899,6 +899,9 @@
         syncTextTrackBounds();
         [m_videoFullscreenLayer addSublayer:m_textTrackRepresentationLayer.get()];
     }
+#if ENABLE(IOS_AIRPLAY)
+    updateDisableExternalPlayback();
+#endif
 }
 
 void MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenFrame(FloatRect frame)
@@ -2311,6 +2314,14 @@
     
     [m_avPlayer.get() setAllowsExternalPlayback:!disabled];
 }
+
+void MediaPlayerPrivateAVFoundationObjC::updateDisableExternalPlayback()
+{
+    if (!m_avPlayer)
+        return;
+
+    [m_avPlayer setUsesExternalPlaybackWhileExternalScreenIsActive:m_videoFullscreenLayer != nil];
+}
 #endif
 
 void MediaPlayerPrivateAVFoundationObjC::playerItemStatusDidChange(int status)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to