WebMediaSessionHelper calls -[UIApplication beginReceivingRemoteControlEvents] from...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Jul 2017 21:08:57 +0000 (21:08 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 28 Jul 2017 21:08:57 +0000 (21:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=174934
rdar://problem/33586772

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-07-28
Reviewed by Eric Carlson.

No new tests because no effect on DOM.

This dispatches a UIKit call to the main thread since it might happen on WebThread in WK1.

* platform/audio/ios/MediaSessionManagerIOS.mm:
(-[WebMediaSessionHelper initWithCallback:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@220014 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/audio/ios/MediaSessionManagerIOS.mm

index c5c869cd4ecd63426db17f2545dc3286092f0fba..952c789ffeb722cf3c1e14e9ba6979fedbfa5d6b 100644 (file)
@@ -1,3 +1,18 @@
+2017-07-28  Jeremy Jones  <jeremyj@apple.com>
+
+        WebMediaSessionHelper calls -[UIApplication beginReceivingRemoteControlEvents] from WebThread
+        https://bugs.webkit.org/show_bug.cgi?id=174934
+        rdar://problem/33586772
+
+        Reviewed by Eric Carlson.
+
+        No new tests because no effect on DOM.
+
+        This dispatches a UIKit call to the main thread since it might happen on WebThread in WK1.
+
+        * platform/audio/ios/MediaSessionManagerIOS.mm:
+        (-[WebMediaSessionHelper initWithCallback:]):
+
 2017-07-28  Myles C. Maxfield  <mmaxfield@apple.com>
 
         [macOS] Reeder's defaults font is Times instead of San Francisco
index bf54c46c0ca0132fb653c2b892d2daa2b78c99db..1ddf0f55c9c969b245d32c691954b80fb9f23eab 100644 (file)
@@ -338,8 +338,10 @@ void MediaSessionManageriOS::externalOutputDeviceAvailableDidChange()
     [self allocateVolumeView];
 
     // Now playing won't work unless we turn on the delivery of remote control events.
-    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
-    
+    dispatch_async(dispatch_get_main_queue(), ^ {
+        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
+    });
+
     return self;
 }