Title: [183831] trunk/Source/WebCore
Revision
183831
Author
[email protected]
Date
2015-05-05 15:01:42 -0700 (Tue, 05 May 2015)

Log Message

Prevent recursive calls to show target picker menu.
https://bugs.webkit.org/show_bug.cgi?id=144637
<rdar://problem/20824726>

Reviewed by Jer Noble.

* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h: Add m_showingMenu.
* platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
(WebCore::MediaPlaybackTargetPickerMac::showPlaybackTargetPicker): Do nothing if the menu
is already showing.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (183830 => 183831)


--- trunk/Source/WebCore/ChangeLog	2015-05-05 21:31:14 UTC (rev 183830)
+++ trunk/Source/WebCore/ChangeLog	2015-05-05 22:01:42 UTC (rev 183831)
@@ -1,3 +1,16 @@
+2015-05-05  Eric Carlson  <[email protected]>
+
+        Prevent recursive calls to show target picker menu.
+        https://bugs.webkit.org/show_bug.cgi?id=144637
+        <rdar://problem/20824726>
+
+        Reviewed by Jer Noble.
+
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h: Add m_showingMenu.
+        * platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:
+        (WebCore::MediaPlaybackTargetPickerMac::showPlaybackTargetPicker): Do nothing if the menu
+        is already showing.
+
 2015-05-05  Dean Jackson  <[email protected]>
 
         Use system blue for Airplay Glyph

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h (183830 => 183831)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h	2015-05-05 21:31:14 UTC (rev 183830)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h	2015-05-05 22:01:42 UTC (rev 183831)
@@ -69,6 +69,7 @@
     RetainPtr<AVOutputDeviceMenuController> m_outputDeviceMenuController;
     RetainPtr<WebAVOutputDeviceMenuControllerHelper> m_outputDeviceMenuControllerDelegate;
     RunLoop::Timer<MediaPlaybackTargetPickerMac> m_pendingActionTimer;
+    bool m_showingMenu { false };
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm (183830 => 183831)


--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm	2015-05-05 21:31:14 UTC (rev 183830)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm	2015-05-05 22:01:42 UTC (rev 183831)
@@ -134,15 +134,17 @@
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
 void MediaPlaybackTargetPickerMac::showPlaybackTargetPicker(const FloatRect& location, bool checkActiveRoute)
 {
-    if (!m_client)
+    if (!m_client || m_showingMenu)
         return;
 
+    m_showingMenu = true;
     AVOutputDeviceMenuControllerType *picker = devicePicker();
     if ([picker respondsToSelector:@selector(showMenuForRect:appearanceName:allowReselectionOfSelectedOutputDevice:)]) {
         if ([picker showMenuForRect:location appearanceName:NSAppearanceNameVibrantLight allowReselectionOfSelectedOutputDevice:!checkActiveRoute])
             currentDeviceDidChange();
     } else
         [picker showMenuForRect:location appearanceName:NSAppearanceNameVibrantLight];
+    m_showingMenu = false;
 }
 #pragma clang diagnostic pop
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to