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

Unified Diff: services/ui/ws/frame_generator.cc

Issue 2281583003: services/ui: Split GpuServiceInternal into gpu vs. ws pieces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@DONE_2016.08.24_mus-ws-gpu-refactor
Patch Set: tot merge 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: services/ui/ws/frame_generator.cc
diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc
index 9f0e5222e1340a5f7e0113a8f1c7aec27ee2c208..61ce701db0a47e32e7f4e1ccc351155dd212acbd 100644
--- a/services/ui/ws/frame_generator.cc
+++ b/services/ui/ws/frame_generator.cc
@@ -10,7 +10,7 @@
#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/shared_quad_state.h"
#include "cc/quads/surface_draw_quad.h"
-#include "services/ui/gpu/gpu_service_internal.h"
+#include "gpu/ipc/client/gpu_channel_host.h"
#include "services/ui/surfaces/display_compositor.h"
#include "services/ui/ws/frame_generator_delegate.h"
#include "services/ui/ws/server_window.h"
@@ -37,6 +37,17 @@ FrameGenerator::~FrameGenerator() {
display_compositor_.reset();
}
+void FrameGenerator::OnGpuChannelEstablished(
+ scoped_refptr<gpu::GpuChannelHost> channel) {
+ if (widget_ != gfx::kNullAcceleratedWidget) {
+ display_compositor_.reset(
+ new DisplayCompositor(base::ThreadTaskRunnerHandle::Get(), widget_,
+ std::move(channel), surfaces_state_));
+ } else {
+ gpu_channel_ = std::move(channel);
+ }
+}
+
void FrameGenerator::RequestRedraw(const gfx::Rect& redraw_region) {
dirty_rect_.Union(redraw_region);
WantToDraw();
@@ -44,11 +55,11 @@ void FrameGenerator::RequestRedraw(const gfx::Rect& redraw_region) {
void FrameGenerator::OnAcceleratedWidgetAvailable(
gfx::AcceleratedWidget widget) {
- if (widget != gfx::kNullAcceleratedWidget) {
- display_compositor_.reset(new DisplayCompositor(
- base::ThreadTaskRunnerHandle::Get(), widget,
- GpuServiceInternal::GetInstance()->gpu_channel_local(),
- surfaces_state_));
+ widget_ = widget;
+ if (gpu_channel_) {
+ display_compositor_.reset(
+ new DisplayCompositor(base::ThreadTaskRunnerHandle::Get(), widget_,
+ std::move(gpu_channel_), surfaces_state_));
}
}
@@ -85,8 +96,8 @@ void FrameGenerator::Draw() {
// is submitted 'soon'.
}
}
- frame_pending_ = true;
if (display_compositor_) {
+ frame_pending_ = true;
display_compositor_->SubmitCompositorFrame(
std::move(frame),
base::Bind(&FrameGenerator::DidDraw, weak_factory_.GetWeakPtr()));

Powered by Google App Engine
This is Rietveld 408576698