Michael Goderbauer 08961f8ec5 Format all c-like sources with clang-format (#4088)
* format

* license script adaptions

* updated licenses

* review comments
2017-09-12 15:36:20 -07:00

47 lines
1.0 KiB
C++

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "flutter/lib/ui/painting/utils.h"
#include "flutter/common/threads.h"
namespace blink {
namespace {
constexpr fxl::TimeDelta kDrainDelay = fxl::TimeDelta::FromMilliseconds(250);
} // anonymous namespace
SkiaUnrefQueue::SkiaUnrefQueue() : drain_pending_(false) {}
SkiaUnrefQueue SkiaUnrefQueue::instance_;
SkiaUnrefQueue& SkiaUnrefQueue::Get() {
return instance_;
}
void SkiaUnrefQueue::Unref(SkRefCnt* object) {
fxl::MutexLocker lock(&mutex_);
objects_.push_back(object);
if (!drain_pending_) {
drain_pending_ = true;
Threads::IO()->PostDelayedTask([this] { Drain(); }, kDrainDelay);
}
}
void SkiaUnrefQueue::Drain() {
std::deque<SkRefCnt*> skia_objects;
{
fxl::MutexLocker lock(&mutex_);
objects_.swap(skia_objects);
drain_pending_ = false;
}
for (SkRefCnt* skia_object : skia_objects) {
skia_object->unref();
}
}
} // namespace blink