Title: [201614] trunk/Source/WebCore
- Revision
- 201614
- Author
- [email protected]
- Date
- 2016-06-02 13:35:14 -0700 (Thu, 02 Jun 2016)
Log Message
ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()> as parameter
https://bugs.webkit.org/show_bug.cgi?id=158309
Reviewed by Brady Eidson.
ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()>
as parameter for consistency with the other constructor and because this can be
called cross-thread.
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::suspend):
(WebCore::AudioContext::resume):
(WebCore::AudioContext::close):
(WebCore::AudioContext::suspendPlayback):
(WebCore::AudioContext::mayResumePlayback):
* Modules/webaudio/AudioDestinationNode.h:
(WebCore::AudioDestinationNode::resume):
(WebCore::AudioDestinationNode::suspend):
(WebCore::AudioDestinationNode::close):
* Modules/webaudio/DefaultAudioDestinationNode.cpp:
(WebCore::DefaultAudioDestinationNode::resume):
(WebCore::DefaultAudioDestinationNode::suspend):
(WebCore::DefaultAudioDestinationNode::close):
* Modules/webaudio/DefaultAudioDestinationNode.h:
* dom/ScriptExecutionContext.h:
(WebCore::ScriptExecutionContext::Task::Task):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (201613 => 201614)
--- trunk/Source/WebCore/ChangeLog 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/ChangeLog 2016-06-02 20:35:14 UTC (rev 201614)
@@ -1,3 +1,32 @@
+2016-06-02 Chris Dumez <[email protected]>
+
+ ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()> as parameter
+ https://bugs.webkit.org/show_bug.cgi?id=158309
+
+ Reviewed by Brady Eidson.
+
+ ScriptExecutionContext::Task constructor should take a NoncopyableFunction<void ()>
+ as parameter for consistency with the other constructor and because this can be
+ called cross-thread.
+
+ * Modules/webaudio/AudioContext.cpp:
+ (WebCore::AudioContext::suspend):
+ (WebCore::AudioContext::resume):
+ (WebCore::AudioContext::close):
+ (WebCore::AudioContext::suspendPlayback):
+ (WebCore::AudioContext::mayResumePlayback):
+ * Modules/webaudio/AudioDestinationNode.h:
+ (WebCore::AudioDestinationNode::resume):
+ (WebCore::AudioDestinationNode::suspend):
+ (WebCore::AudioDestinationNode::close):
+ * Modules/webaudio/DefaultAudioDestinationNode.cpp:
+ (WebCore::DefaultAudioDestinationNode::resume):
+ (WebCore::DefaultAudioDestinationNode::suspend):
+ (WebCore::DefaultAudioDestinationNode::close):
+ * Modules/webaudio/DefaultAudioDestinationNode.h:
+ * dom/ScriptExecutionContext.h:
+ (WebCore::ScriptExecutionContext::Task::Task):
+
2016-06-02 Darin Adler <[email protected]>
Fix a couple of mistakes in CSSParserValue memory management
Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp (201613 => 201614)
--- trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp 2016-06-02 20:35:14 UTC (rev 201614)
@@ -1061,9 +1061,8 @@
lazyInitialize();
- RefPtr<AudioContext> protectedThis(this);
- m_destinationNode->suspend([protectedThis] {
- protectedThis->setState(State::Suspended);
+ m_destinationNode->suspend([this, protectedThis = Ref<AudioContext>(*this)] {
+ setState(State::Suspended);
});
}
@@ -1091,9 +1090,8 @@
lazyInitialize();
- RefPtr<AudioContext> protectedThis(this);
- m_destinationNode->resume([protectedThis] {
- protectedThis->setState(State::Running);
+ m_destinationNode->resume([this, protectedThis = Ref<AudioContext>(*this)] {
+ setState(State::Running);
});
}
@@ -1113,10 +1111,9 @@
lazyInitialize();
- RefPtr<AudioContext> protectedThis(this);
- m_destinationNode->close([protectedThis] {
- protectedThis->setState(State::Closed);
- protectedThis->uninitialize();
+ m_destinationNode->close([this, protectedThis = Ref<AudioContext>(*this)] {
+ setState(State::Closed);
+ uninitialize();
});
}
@@ -1134,10 +1131,9 @@
lazyInitialize();
- RefPtr<AudioContext> protectedThis(this);
- m_destinationNode->suspend([protectedThis] {
- bool interrupted = protectedThis->m_mediaSession->state() == PlatformMediaSession::Interrupted;
- protectedThis->setState(interrupted ? State::Interrupted : State::Suspended);
+ m_destinationNode->suspend([this, protectedThis = Ref<AudioContext>(*this)] {
+ bool interrupted = m_mediaSession->state() == PlatformMediaSession::Interrupted;
+ setState(interrupted ? State::Interrupted : State::Suspended);
});
}
@@ -1156,9 +1152,8 @@
lazyInitialize();
- RefPtr<AudioContext> protectedThis(this);
- m_destinationNode->resume([protectedThis] {
- protectedThis->setState(State::Running);
+ m_destinationNode->resume([this, protectedThis = Ref<AudioContext>(*this)] {
+ setState(State::Running);
});
}
Modified: trunk/Source/WebCore/Modules/webaudio/AudioDestinationNode.h (201613 => 201614)
--- trunk/Source/WebCore/Modules/webaudio/AudioDestinationNode.h 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/Modules/webaudio/AudioDestinationNode.h 2016-06-02 20:35:14 UTC (rev 201614)
@@ -30,6 +30,7 @@
#include "AudioIOCallback.h"
#include "AudioNode.h"
#include "AudioSourceProvider.h"
+#include <wtf/NoncopyableFunction.h>
namespace WebCore {
@@ -58,9 +59,9 @@
virtual void enableInput(const String& inputDeviceId) = 0;
virtual void startRendering() = 0;
- virtual void resume(std::function<void()>) { }
- virtual void suspend(std::function<void()>) { }
- virtual void close(std::function<void()>) { }
+ virtual void resume(NoncopyableFunction<void ()>&&) { }
+ virtual void suspend(NoncopyableFunction<void ()>&&) { }
+ virtual void close(NoncopyableFunction<void ()>&&) { }
virtual bool isPlaying() { return false; }
void isPlayingDidChange() override;
Modified: trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp (201613 => 201614)
--- trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp 2016-06-02 20:35:14 UTC (rev 201614)
@@ -106,30 +106,30 @@
m_destination->start();
}
-void DefaultAudioDestinationNode::resume(std::function<void()> function)
+void DefaultAudioDestinationNode::resume(NoncopyableFunction<void ()>&& function)
{
ASSERT(isInitialized());
if (isInitialized())
m_destination->start();
if (auto scriptExecutionContext = context().scriptExecutionContext())
- scriptExecutionContext->postTask(function);
+ scriptExecutionContext->postTask(WTFMove(function));
}
-void DefaultAudioDestinationNode::suspend(std::function<void()> function)
+void DefaultAudioDestinationNode::suspend(NoncopyableFunction<void ()>&& function)
{
ASSERT(isInitialized());
if (isInitialized())
m_destination->stop();
if (auto scriptExecutionContext = context().scriptExecutionContext())
- scriptExecutionContext->postTask(function);
+ scriptExecutionContext->postTask(WTFMove(function));
}
-void DefaultAudioDestinationNode::close(std::function<void()> function)
+void DefaultAudioDestinationNode::close(NoncopyableFunction<void()>&& function)
{
ASSERT(isInitialized());
uninitialize();
if (auto scriptExecutionContext = context().scriptExecutionContext())
- scriptExecutionContext->postTask(function);
+ scriptExecutionContext->postTask(WTFMove(function));
}
unsigned long DefaultAudioDestinationNode::maxChannelCount() const
Modified: trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h (201613 => 201614)
--- trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h 2016-06-02 20:35:14 UTC (rev 201614)
@@ -50,9 +50,9 @@
// AudioDestinationNode
void enableInput(const String& inputDeviceId) override;
void startRendering() override;
- void resume(std::function<void()>) override;
- void suspend(std::function<void()>) override;
- void close(std::function<void()>) override;
+ void resume(NoncopyableFunction<void ()>&&) override;
+ void suspend(NoncopyableFunction<void ()>&&) override;
+ void close(NoncopyableFunction<void ()>&&) override;
unsigned long maxChannelCount() const override;
bool isPlaying() override;
Modified: trunk/Source/WebCore/dom/ScriptExecutionContext.h (201613 => 201614)
--- trunk/Source/WebCore/dom/ScriptExecutionContext.h 2016-06-02 20:05:08 UTC (rev 201613)
+++ trunk/Source/WebCore/dom/ScriptExecutionContext.h 2016-06-02 20:35:14 UTC (rev 201614)
@@ -140,8 +140,8 @@
{
}
- Task(std::function<void ()> task)
- : m_task([task](ScriptExecutionContext&) { task(); })
+ Task(NoncopyableFunction<void ()>&& task)
+ : m_task([task = WTFMove(task)](ScriptExecutionContext&) { task(); })
, m_isCleanupTask(false)
{
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes