Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4178)

Unified Diff: blimp/client/core/compositor/blimp_compositor_dependencies.cc

Issue 2274323002: Expose Blimp dependencies to the embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@khushal_baseline_1
Patch Set: Fix linux build break Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: blimp/client/core/compositor/blimp_compositor_dependencies.cc
diff --git a/blimp/client/core/compositor/blimp_compositor_dependencies.cc b/blimp/client/core/compositor/blimp_compositor_dependencies.cc
new file mode 100644
index 0000000000000000000000000000000000000000..134b47a0457cb84e5e5a3e9f6e7b19bb908b186c
--- /dev/null
+++ b/blimp/client/core/compositor/blimp_compositor_dependencies.cc
@@ -0,0 +1,83 @@
+// Copyright 2016 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 "blimp/client/core/compositor/blimp_compositor_dependencies.h"
+
+#include "base/bind.h"
+#include "base/location.h"
+#include "base/memory/ptr_util.h"
+#include "base/threading/simple_thread.h"
+#include "base/threading/thread.h"
+#include "blimp/client/core/compositor/blob_image_serialization_processor.h"
+#include "blimp/client/public/compositor/compositor_dependencies.h"
+#include "cc/raster/single_thread_task_graph_runner.h"
+
+namespace blimp {
+namespace client {
+
+namespace {
+class BlimpTaskGraphRunner : public cc::SingleThreadTaskGraphRunner {
+ public:
+ BlimpTaskGraphRunner() {
+ Start("BlimpCompositorWorker",
+ base::SimpleThread::Options(base::ThreadPriority::BACKGROUND));
+ }
+
+ ~BlimpTaskGraphRunner() override { Shutdown(); }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BlimpTaskGraphRunner);
+};
+} // namespace
+
+BlimpCompositorDependencies::BlimpCompositorDependencies(
+ std::unique_ptr<CompositorDependencies> embedder_dependencies)
+ : embedder_dependencies_(std::move(embedder_dependencies)) {
+ DCHECK(embedder_dependencies_);
+}
+
+BlimpCompositorDependencies::~BlimpCompositorDependencies() {
+ if (compositor_impl_thread_)
+ compositor_impl_thread_->Stop();
+}
+
+CompositorDependencies* BlimpCompositorDependencies::GetEmbedderDependencies() {
+ return embedder_dependencies_.get();
+}
+
+cc::TaskGraphRunner* BlimpCompositorDependencies::GetTaskGraphRunner() {
+ if (!task_graph_runner_)
+ task_graph_runner_ = base::MakeUnique<BlimpTaskGraphRunner>();
+
+ return task_graph_runner_.get();
+}
+
+scoped_refptr<base::SingleThreadTaskRunner>
+BlimpCompositorDependencies::GetCompositorTaskRunner() {
+ if (!compositor_impl_thread_) {
+ // Lazily build the compositor thread.
+ base::Thread::Options thread_options;
+#if defined(OS_ANDROID)
+ thread_options.priority = base::ThreadPriority::DISPLAY;
+#endif
+ compositor_impl_thread_ =
+ base::MakeUnique<base::Thread>("Blimp Compositor Impl");
+ compositor_impl_thread_->StartWithOptions(thread_options);
+
+ compositor_impl_thread_->task_runner()->PostTask(
+ FROM_HERE,
+ base::Bind(base::IgnoreResult(&base::ThreadRestrictions::SetIOAllowed),
+ false));
+ }
+
+ return compositor_impl_thread_->task_runner();
+}
+
+cc::ImageSerializationProcessor*
+BlimpCompositorDependencies::GetImageSerializationProcessor() {
+ return BlobImageSerializationProcessor::current();
+}
+
+} // namespace client
+} // namespace blimp
« no previous file with comments | « blimp/client/core/compositor/blimp_compositor_dependencies.h ('k') | blimp/client/feature/compositor/blimp_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698