diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/components/viz/common/frame_sinks | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/viz/common/frame_sinks')
-rw-r--r-- | chromium/components/viz/common/frame_sinks/begin_frame_source.h | 2 | ||||
-rw-r--r-- | chromium/components/viz/common/frame_sinks/copy_output_request.cc | 28 |
2 files changed, 18 insertions, 12 deletions
diff --git a/chromium/components/viz/common/frame_sinks/begin_frame_source.h b/chromium/components/viz/common/frame_sinks/begin_frame_source.h index 8be3ad72924..2ca5c252021 100644 --- a/chromium/components/viz/common/frame_sinks/begin_frame_source.h +++ b/chromium/components/viz/common/frame_sinks/begin_frame_source.h @@ -10,8 +10,8 @@ #include <string> +#include "base/check.h" #include "base/containers/flat_set.h" -#include "base/logging.h" #include "base/macros.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" diff --git a/chromium/components/viz/common/frame_sinks/copy_output_request.cc b/chromium/components/viz/common/frame_sinks/copy_output_request.cc index 1a10284b8af..ef836fb3a44 100644 --- a/chromium/components/viz/common/frame_sinks/copy_output_request.cc +++ b/chromium/components/viz/common/frame_sinks/copy_output_request.cc @@ -6,6 +6,8 @@ #include "base/bind.h" #include "base/check_op.h" +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" #include "base/trace_event/trace_event.h" #include "components/viz/common/frame_sinks/copy_output_result.h" #include "third_party/skia/include/core/SkBitmap.h" @@ -53,20 +55,24 @@ void CopyOutputRequest::SetUniformScaleRatio(int scale_from, int scale_to) { } void CopyOutputRequest::SendResult(std::unique_ptr<CopyOutputResult> result) { - TRACE_EVENT_NESTABLE_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)); - } + TRACE_EVENT_NESTABLE_ASYNC_END2( + "viz", "CopyOutputRequest", this, "success", !result->IsEmpty(), + "has_provided_task_runner", !!result_task_runner_); + // Serializing the result requires an expensive copy, so to not block the + // any important thread we PostTask onto the threadpool by default, but if the + // user has provided a task runner use that instead. + auto runner = + result_task_runner_ + ? result_task_runner_ + : base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}); + runner->PostTask(FROM_HERE, base::BindOnce(std::move(result_callback_), + std::move(result))); + // Remove the reference to the task runner (no-op if we didn't have one). + result_task_runner_ = nullptr; } bool CopyOutputRequest::SendsResultsInCurrentSequence() const { - return !result_task_runner_ || + return result_task_runner_ && result_task_runner_->RunsTasksInCurrentSequence(); } |