Changeset 201614 in webkit
- Timestamp:
- Jun 2, 2016, 1:35:14 PM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
Modules/webaudio/AudioContext.cpp (modified) (5 diffs)
-
Modules/webaudio/AudioDestinationNode.h (modified) (2 diffs)
-
Modules/webaudio/DefaultAudioDestinationNode.cpp (modified) (3 diffs)
-
Modules/webaudio/DefaultAudioDestinationNode.h (modified) (1 diff)
-
dom/ScriptExecutionContext.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r201608 r201614 1 2016-06-02 Chris Dumez <cdumez@apple.com> 2 3 ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()> as parameter 4 https://bugs.webkit.org/show_bug.cgi?id=158309 5 6 Reviewed by Brady Eidson. 7 8 ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()> 9 as parameter for consistency with the other constructor and because this can be 10 called cross-thread. 11 12 * Modules/webaudio/AudioContext.cpp: 13 (WebCore::AudioContext::suspend): 14 (WebCore::AudioContext::resume): 15 (WebCore::AudioContext::close): 16 (WebCore::AudioContext::suspendPlayback): 17 (WebCore::AudioContext::mayResumePlayback): 18 * Modules/webaudio/AudioDestinationNode.h: 19 (WebCore::AudioDestinationNode::resume): 20 (WebCore::AudioDestinationNode::suspend): 21 (WebCore::AudioDestinationNode::close): 22 * Modules/webaudio/DefaultAudioDestinationNode.cpp: 23 (WebCore::DefaultAudioDestinationNode::resume): 24 (WebCore::DefaultAudioDestinationNode::suspend): 25 (WebCore::DefaultAudioDestinationNode::close): 26 * Modules/webaudio/DefaultAudioDestinationNode.h: 27 * dom/ScriptExecutionContext.h: 28 (WebCore::ScriptExecutionContext::Task::Task): 29 1 30 2016-06-02 Darin Adler <darin@apple.com> 2 31 -
trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp
r201482 r201614 1062 1062 lazyInitialize(); 1063 1063 1064 RefPtr<AudioContext> protectedThis(this); 1065 m_destinationNode->suspend([protectedThis] { 1066 protectedThis->setState(State::Suspended); 1064 m_destinationNode->suspend([this, protectedThis = Ref<AudioContext>(*this)] { 1065 setState(State::Suspended); 1067 1066 }); 1068 1067 } … … 1092 1091 lazyInitialize(); 1093 1092 1094 RefPtr<AudioContext> protectedThis(this); 1095 m_destinationNode->resume([protectedThis] { 1096 protectedThis->setState(State::Running); 1093 m_destinationNode->resume([this, protectedThis = Ref<AudioContext>(*this)] { 1094 setState(State::Running); 1097 1095 }); 1098 1096 } … … 1114 1112 lazyInitialize(); 1115 1113 1116 RefPtr<AudioContext> protectedThis(this); 1117 m_destinationNode->close([protectedThis] { 1118 protectedThis->setState(State::Closed); 1119 protectedThis->uninitialize(); 1114 m_destinationNode->close([this, protectedThis = Ref<AudioContext>(*this)] { 1115 setState(State::Closed); 1116 uninitialize(); 1120 1117 }); 1121 1118 } … … 1135 1132 lazyInitialize(); 1136 1133 1137 RefPtr<AudioContext> protectedThis(this); 1138 m_destinationNode->suspend([protectedThis] { 1139 bool interrupted = protectedThis->m_mediaSession->state() == PlatformMediaSession::Interrupted; 1140 protectedThis->setState(interrupted ? State::Interrupted : State::Suspended); 1134 m_destinationNode->suspend([this, protectedThis = Ref<AudioContext>(*this)] { 1135 bool interrupted = m_mediaSession->state() == PlatformMediaSession::Interrupted; 1136 setState(interrupted ? State::Interrupted : State::Suspended); 1141 1137 }); 1142 1138 } … … 1157 1153 lazyInitialize(); 1158 1154 1159 RefPtr<AudioContext> protectedThis(this); 1160 m_destinationNode->resume([protectedThis] { 1161 protectedThis->setState(State::Running); 1155 m_destinationNode->resume([this, protectedThis = Ref<AudioContext>(*this)] { 1156 setState(State::Running); 1162 1157 }); 1163 1158 } -
trunk/Source/WebCore/Modules/webaudio/AudioDestinationNode.h
r197563 r201614 31 31 #include "AudioNode.h" 32 32 #include "AudioSourceProvider.h" 33 #include <wtf/NoncopyableFunction.h> 33 34 34 35 namespace WebCore { … … 59 60 60 61 virtual void startRendering() = 0; 61 virtual void resume( std::function<void()>) { }62 virtual void suspend( std::function<void()>) { }63 virtual void close( std::function<void()>) { }62 virtual void resume(NoncopyableFunction<void ()>&&) { } 63 virtual void suspend(NoncopyableFunction<void ()>&&) { } 64 virtual void close(NoncopyableFunction<void ()>&&) { } 64 65 65 66 virtual bool isPlaying() { return false; } -
trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp
r196603 r201614 107 107 } 108 108 109 void DefaultAudioDestinationNode::resume( std::function<void()>function)109 void DefaultAudioDestinationNode::resume(NoncopyableFunction<void ()>&& function) 110 110 { 111 111 ASSERT(isInitialized()); … … 113 113 m_destination->start(); 114 114 if (auto scriptExecutionContext = context().scriptExecutionContext()) 115 scriptExecutionContext->postTask( function);115 scriptExecutionContext->postTask(WTFMove(function)); 116 116 } 117 117 118 void DefaultAudioDestinationNode::suspend( std::function<void()>function)118 void DefaultAudioDestinationNode::suspend(NoncopyableFunction<void ()>&& function) 119 119 { 120 120 ASSERT(isInitialized()); … … 122 122 m_destination->stop(); 123 123 if (auto scriptExecutionContext = context().scriptExecutionContext()) 124 scriptExecutionContext->postTask( function);124 scriptExecutionContext->postTask(WTFMove(function)); 125 125 } 126 126 127 void DefaultAudioDestinationNode::close( std::function<void()>function)127 void DefaultAudioDestinationNode::close(NoncopyableFunction<void()>&& function) 128 128 { 129 129 ASSERT(isInitialized()); 130 130 uninitialize(); 131 131 if (auto scriptExecutionContext = context().scriptExecutionContext()) 132 scriptExecutionContext->postTask( function);132 scriptExecutionContext->postTask(WTFMove(function)); 133 133 } 134 134 -
trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h
r197563 r201614 51 51 void enableInput(const String& inputDeviceId) override; 52 52 void startRendering() override; 53 void resume( std::function<void()>) override;54 void suspend( std::function<void()>) override;55 void close( std::function<void()>) override;53 void resume(NoncopyableFunction<void ()>&&) override; 54 void suspend(NoncopyableFunction<void ()>&&) override; 55 void close(NoncopyableFunction<void ()>&&) override; 56 56 unsigned long maxChannelCount() const override; 57 57 bool isPlaying() override; -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r201594 r201614 141 141 } 142 142 143 Task( std::function<void ()>task)144 : m_task([task ](ScriptExecutionContext&) { task(); })143 Task(NoncopyableFunction<void ()>&& task) 144 : m_task([task = WTFMove(task)](ScriptExecutionContext&) { task(); }) 145 145 , m_isCleanupTask(false) 146 146 {
Note:
See TracChangeset
for help on using the changeset viewer.