⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 201614 in webkit


Ignore:
Timestamp:
Jun 2, 2016, 1:35:14 PM (10 years ago)
Author:
Chris Dumez
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):

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r201608 r201614  
     12016-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
    1302016-06-02  Darin Adler  <darin@apple.com>
    231
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp

    r201482 r201614  
    10621062    lazyInitialize();
    10631063
    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);
    10671066    });
    10681067}
     
    10921091    lazyInitialize();
    10931092
    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);
    10971095    });
    10981096}
     
    11141112    lazyInitialize();
    11151113
    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();
    11201117    });
    11211118}
     
    11351132    lazyInitialize();
    11361133
    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);
    11411137    });
    11421138}
     
    11571153    lazyInitialize();
    11581154
    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);
    11621157    });
    11631158}
  • trunk/Source/WebCore/Modules/webaudio/AudioDestinationNode.h

    r197563 r201614  
    3131#include "AudioNode.h"
    3232#include "AudioSourceProvider.h"
     33#include <wtf/NoncopyableFunction.h>
    3334
    3435namespace WebCore {
     
    5960
    6061    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 ()>&&) { }
    6465
    6566    virtual bool isPlaying() { return false; }
  • trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp

    r196603 r201614  
    107107}
    108108
    109 void DefaultAudioDestinationNode::resume(std::function<void()> function)
     109void DefaultAudioDestinationNode::resume(NoncopyableFunction<void ()>&& function)
    110110{
    111111    ASSERT(isInitialized());
     
    113113        m_destination->start();
    114114    if (auto scriptExecutionContext = context().scriptExecutionContext())
    115         scriptExecutionContext->postTask(function);
     115        scriptExecutionContext->postTask(WTFMove(function));
    116116}
    117117
    118 void DefaultAudioDestinationNode::suspend(std::function<void()> function)
     118void DefaultAudioDestinationNode::suspend(NoncopyableFunction<void ()>&& function)
    119119{
    120120    ASSERT(isInitialized());
     
    122122        m_destination->stop();
    123123    if (auto scriptExecutionContext = context().scriptExecutionContext())
    124         scriptExecutionContext->postTask(function);
     124        scriptExecutionContext->postTask(WTFMove(function));
    125125}
    126126
    127 void DefaultAudioDestinationNode::close(std::function<void()> function)
     127void DefaultAudioDestinationNode::close(NoncopyableFunction<void()>&& function)
    128128{
    129129    ASSERT(isInitialized());
    130130    uninitialize();
    131131    if (auto scriptExecutionContext = context().scriptExecutionContext())
    132         scriptExecutionContext->postTask(function);
     132        scriptExecutionContext->postTask(WTFMove(function));
    133133}
    134134
  • trunk/Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.h

    r197563 r201614  
    5151    void enableInput(const String& inputDeviceId) override;
    5252    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;
    5656    unsigned long maxChannelCount() const override;
    5757    bool isPlaying() override;
  • trunk/Source/WebCore/dom/ScriptExecutionContext.h

    r201594 r201614  
    141141        }
    142142
    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(); })
    145145            , m_isCleanupTask(false)
    146146        {
Note: See TracChangeset for help on using the changeset viewer.