| Index: third_party/WebKit/Source/modules/compositorworker/AbstractAnimationWorkletThread.cpp
|
| diff --git a/third_party/WebKit/Source/modules/compositorworker/AbstractAnimationWorkletThread.cpp b/third_party/WebKit/Source/modules/compositorworker/AbstractAnimationWorkletThread.cpp
|
| index 731dd693e8691c0f3557e83829f8f74cd818d50d..c27f2944f2231daef6fe51779e0a3e3de8ec05f1 100644
|
| --- a/third_party/WebKit/Source/modules/compositorworker/AbstractAnimationWorkletThread.cpp
|
| +++ b/third_party/WebKit/Source/modules/compositorworker/AbstractAnimationWorkletThread.cpp
|
| @@ -24,10 +24,10 @@ namespace {
|
| // case.
|
| class BackingThreadHolder {
|
| public:
|
| - static BackingThreadHolder& instance()
|
| + static BackingThreadHolder* instance()
|
| {
|
| MutexLocker locker(holderInstanceMutex());
|
| - return *s_instance;
|
| + return s_instance;
|
| }
|
|
|
| static void ensureInstance()
|
| @@ -112,7 +112,24 @@ AbstractAnimationWorkletThread::~AbstractAnimationWorkletThread()
|
|
|
| WorkerBackingThread& AbstractAnimationWorkletThread::workerBackingThread()
|
| {
|
| - return *BackingThreadHolder::instance().thread();
|
| + return *BackingThreadHolder::instance()->thread();
|
| +}
|
| +
|
| +void collectAllGarbageOnThread(WaitableEvent* doneEvent)
|
| +{
|
| + blink::ThreadState::current()->collectAllGarbage();
|
| + doneEvent->signal();
|
| +}
|
| +
|
| +void AbstractAnimationWorkletThread::collectAllGarbage()
|
| +{
|
| + DCHECK(isMainThread());
|
| + WaitableEvent doneEvent;
|
| + BackingThreadHolder* instance = BackingThreadHolder::instance();
|
| + if (!instance)
|
| + return;
|
| + instance->thread()->backingThread().postTask(BLINK_FROM_HERE, crossThreadBind(&collectAllGarbageOnThread, crossThreadUnretained(&doneEvent)));
|
| + doneEvent.wait();
|
| }
|
|
|
| void AbstractAnimationWorkletThread::ensureSharedBackingThread()
|
|
|