Changeset 186519 in webkit
- Timestamp:
- Jul 8, 2015 11:54:34 AM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r186509 r186519 1 2015-07-08 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Two clicks required to enable AirPlay at youtube.com 4 https://bugs.webkit.org/show_bug.cgi?id=146733 5 <rdar://problem/21556356> 6 7 Reviewed by Brent Fulgham. 8 9 * Modules/mediasession/WebMediaSessionManager.cpp: 10 (WebCore::WebMediaSessionManager::clientStateDidChange): Only log when state has changed. 11 Don't steal the route if another client is actively playing to the device. 12 (WebCore::WebMediaSessionManager::setPlaybackTarget): Set m_targetChanged. 13 (WebCore::WebMediaSessionManager::configurePlaybackTargetClients): Don't consider the 14 requestedPicker flag until after a target change. 15 * Modules/mediasession/WebMediaSessionManager.h: 16 17 * html/HTMLMediaElement.cpp: 18 (WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Add logging. 19 (WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget): Ditto. 20 21 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 22 (WebCore::MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget): Always log. 23 1 24 2015-07-08 Zalan Bujtas <zalan@apple.com> 2 25 -
trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.cpp
r186361 r186519 166 166 auto& changedClientState = m_clientState[index]; 167 167 MediaProducer::MediaStateFlags oldFlags = changedClientState->flags; 168 if (newFlags == oldFlags) 169 return; 170 168 171 LOG(Media, "WebMediaSessionManager::clientStateDidChange(%p + %llu) - new flags = %s, old flags = %s", &client, contextId, mediaProducerStateString(newFlags).utf8().data(), mediaProducerStateString(oldFlags).utf8().data()); 169 if (newFlags == oldFlags)170 return;171 172 172 173 changedClientState->flags = newFlags; … … 200 201 } 201 202 202 // Do not take the target if another client has it and the client reporting a state change is not playing. 203 if (anotherClientHasActiveTarget && !flagsAreSet(newFlags, MediaProducer::IsPlayingVideo)) 203 if (anotherClientHasActiveTarget || !flagsAreSet(newFlags, MediaProducer::IsPlayingVideo)) 204 204 return; 205 205 … … 219 219 { 220 220 m_playbackTarget = WTF::move(target); 221 m_targetChanged = true; 221 222 scheduleDelayedTask(TargetClientsConfigurationTask); 222 223 } … … 256 257 auto& state = m_clientState[i]; 257 258 258 if ( state->requestedPicker)259 if (m_targetChanged && state->requestedPicker) 259 260 indexOfClientThatRequestedPicker = i; 260 261 … … 278 279 279 280 state->configurationRequired = false; 280 state->requestedPicker = false; 281 if (m_targetChanged) 282 state->requestedPicker = false; 281 283 } 282 284 … … 287 289 } 288 290 291 m_targetChanged = false; 289 292 configureWatchdogTimer(); 290 293 } -
trunk/Source/WebCore/Modules/mediasession/WebMediaSessionManager.h
r186361 r186519 65 65 66 66 size_t find(WebMediaSessionManagerClient*, uint64_t); 67 67 68 void configurePlaybackTargetClients(); 68 69 void configureNewClients(); … … 93 94 double m_currentWatchdogInterval { 0 }; 94 95 bool m_externalOutputDeviceAvailable { false }; 96 bool m_targetChanged { false }; 95 97 }; 96 98 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r186388 r186519 4981 4981 void HTMLMediaElement::webkitShowPlaybackTargetPicker() 4982 4982 { 4983 LOG(Media, "HTMLMediaElement::webkitShowPlaybackTargetPicker(%p)", this); 4983 4984 m_mediaSession->showPlaybackTargetPicker(*this); 4984 4985 } … … 5087 5088 void HTMLMediaElement::setShouldPlayToPlaybackTarget(bool shouldPlay) 5088 5089 { 5090 LOG(Media, "HTMLMediaElement::setShouldPlayToPlaybackTarget(%p) - shouldPlay = %s", this, boolString(shouldPlay)); 5091 5089 5092 if (m_player) 5090 5093 m_player->setShouldPlayToPlaybackTarget(shouldPlay); -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r186020 r186519 2823 2823 m_shouldPlayToPlaybackTarget = shouldPlay; 2824 2824 2825 AVOutputContext *newContext = shouldPlay ? m_outputContext.get() : nil; 2826 LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget(%p) - target = %p, shouldPlay = %s", this, newContext, boolString(shouldPlay)); 2827 2825 2828 if (!m_avPlayer) 2826 2829 return; 2827 2830 2828 AVOutputContext *newContext = shouldPlay ? m_outputContext.get() : nil;2829 2831 RetainPtr<AVOutputContext> currentContext = m_avPlayer.get().outputContext; 2830 2831 LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setShouldPlayToPlaybackTarget(%p) - target = %p, shouldPlay = %s", this, newContext, boolString(shouldPlay));2832 2833 2832 if ((!newContext && !currentContext.get()) || [currentContext.get() isEqual:newContext]) 2834 2833 return;
Note: See TracChangeset
for help on using the changeset viewer.