summaryrefslogtreecommitdiff
path: root/chromium/components/viz/common/quads/copy_output_request.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-20 10:33:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-22 11:45:12 +0000
commitbe59a35641616a4cf23c4a13fa0632624b021c1b (patch)
tree9da183258bdf9cc413f7562079d25ace6955467f /chromium/components/viz/common/quads/copy_output_request.cc
parentd702e4b6a64574e97fc7df8fe3238cde70242080 (diff)
downloadqtwebengine-chromium-be59a35641616a4cf23c4a13fa0632624b021c1b.tar.gz
BASELINE: Update Chromium to 62.0.3202.101
Change-Id: I2d5eca8117600df6d331f6166ab24d943d9814ac Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/components/viz/common/quads/copy_output_request.cc')
-rw-r--r--chromium/components/viz/common/quads/copy_output_request.cc68
1 files changed, 68 insertions, 0 deletions
diff --git a/chromium/components/viz/common/quads/copy_output_request.cc b/chromium/components/viz/common/quads/copy_output_request.cc
new file mode 100644
index 00000000000..de505d68c32
--- /dev/null
+++ b/chromium/components/viz/common/quads/copy_output_request.cc
@@ -0,0 +1,68 @@
+// Copyright 2013 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 "components/viz/common/quads/copy_output_request.h"
+
+#include "base/bind.h"
+#include "base/logging.h"
+#include "base/trace_event/trace_event.h"
+#include "components/viz/common/quads/copy_output_result.h"
+#include "components/viz/common/quads/texture_mailbox.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+
+namespace viz {
+
+CopyOutputRequest::CopyOutputRequest() : force_bitmap_result_(false) {}
+
+CopyOutputRequest::CopyOutputRequest(bool force_bitmap_result,
+ CopyOutputRequestCallback result_callback)
+ : force_bitmap_result_(force_bitmap_result),
+ result_callback_(std::move(result_callback)) {
+ DCHECK(!result_callback_.is_null());
+ TRACE_EVENT_ASYNC_BEGIN0("viz", "CopyOutputRequest", this);
+}
+
+CopyOutputRequest::~CopyOutputRequest() {
+ if (!result_callback_.is_null())
+ SendResult(CopyOutputResult::CreateEmptyResult());
+}
+
+void CopyOutputRequest::SendResult(std::unique_ptr<CopyOutputResult> result) {
+ TRACE_EVENT_ASYNC_END1("viz", "CopyOutputRequest", this, "success",
+ !result->IsEmpty());
+ if (result_task_runner_) {
+ result_task_runner_->PostTask(
+ FROM_HERE,
+ base::BindOnce(std::move(result_callback_), std::move(result)));
+ result_task_runner_ = nullptr;
+ } else {
+ std::move(result_callback_).Run(std::move(result));
+ }
+}
+
+void CopyOutputRequest::SendEmptyResult() {
+ SendResult(CopyOutputResult::CreateEmptyResult());
+}
+
+void CopyOutputRequest::SendBitmapResult(std::unique_ptr<SkBitmap> bitmap) {
+ SendResult(CopyOutputResult::CreateBitmapResult(std::move(bitmap)));
+}
+
+void CopyOutputRequest::SendTextureResult(
+ const gfx::Size& size,
+ const TextureMailbox& texture_mailbox,
+ std::unique_ptr<SingleReleaseCallback> release_callback) {
+ DCHECK(texture_mailbox.IsTexture());
+ SendResult(CopyOutputResult::CreateTextureResult(
+ size, texture_mailbox, std::move(release_callback)));
+}
+
+void CopyOutputRequest::SetTextureMailbox(
+ const TextureMailbox& texture_mailbox) {
+ DCHECK(!force_bitmap_result_);
+ DCHECK(texture_mailbox.IsTexture());
+ texture_mailbox_ = texture_mailbox;
+}
+
+} // namespace viz