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

Side by Side Diff: components/mus/ws/platform_display.cc

Issue 2008193002: Change mojo geometry structs from using type converters to StructTraits. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/mus/ws/platform_display.h" 5 #include "components/mus/ws/platform_display.h"
6 6
7 #include "base/numerics/safe_conversions.h" 7 #include "base/numerics/safe_conversions.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "cc/output/compositor_frame.h" 9 #include "cc/output/compositor_frame.h"
10 #include "cc/output/copy_output_request.h" 10 #include "cc/output/copy_output_request.h"
11 #include "cc/output/delegated_frame_data.h" 11 #include "cc/output/delegated_frame_data.h"
12 #include "cc/quads/render_pass.h" 12 #include "cc/quads/render_pass.h"
13 #include "cc/quads/shared_quad_state.h" 13 #include "cc/quads/shared_quad_state.h"
14 #include "cc/quads/surface_draw_quad.h" 14 #include "cc/quads/surface_draw_quad.h"
15 #include "components/mus/gles2/gpu_state.h" 15 #include "components/mus/gles2/gpu_state.h"
16 #include "components/mus/public/interfaces/gpu.mojom.h" 16 #include "components/mus/public/interfaces/gpu.mojom.h"
17 #include "components/mus/public/interfaces/quads.mojom.h" 17 #include "components/mus/public/interfaces/quads.mojom.h"
18 #include "components/mus/surfaces/display_compositor.h" 18 #include "components/mus/surfaces/display_compositor.h"
19 #include "components/mus/surfaces/surfaces_state.h" 19 #include "components/mus/surfaces/surfaces_state.h"
20 #include "components/mus/ws/platform_display_factory.h" 20 #include "components/mus/ws/platform_display_factory.h"
21 #include "components/mus/ws/server_window.h" 21 #include "components/mus/ws/server_window.h"
22 #include "components/mus/ws/server_window_surface.h" 22 #include "components/mus/ws/server_window_surface.h"
23 #include "components/mus/ws/server_window_surface_manager.h" 23 #include "components/mus/ws/server_window_surface_manager.h"
24 #include "components/mus/ws/window_coordinate_conversions.h" 24 #include "components/mus/ws/window_coordinate_conversions.h"
25 #include "mojo/converters/geometry/geometry_type_converters.h"
26 #include "mojo/converters/input_events/input_events_type_converters.h" 25 #include "mojo/converters/input_events/input_events_type_converters.h"
27 #include "mojo/converters/input_events/mojo_extended_key_event_data.h" 26 #include "mojo/converters/input_events/mojo_extended_key_event_data.h"
28 #include "mojo/converters/surfaces/surfaces_type_converters.h" 27 #include "mojo/converters/surfaces/surfaces_type_converters.h"
29 #include "mojo/converters/surfaces/surfaces_utils.h" 28 #include "mojo/converters/surfaces/surfaces_utils.h"
30 #include "mojo/converters/transform/transform_type_converters.h" 29 #include "mojo/converters/transform/transform_type_converters.h"
31 #include "services/shell/public/cpp/connection.h" 30 #include "services/shell/public/cpp/connection.h"
32 #include "services/shell/public/cpp/connector.h" 31 #include "services/shell/public/cpp/connector.h"
33 #include "third_party/skia/include/core/SkXfermode.h" 32 #include "third_party/skia/include/core/SkXfermode.h"
34 #include "ui/base/cursor/cursor_loader.h" 33 #include "ui/base/cursor/cursor_loader.h"
35 #include "ui/display/display.h" 34 #include "ui/display/display.h"
36 #include "ui/events/event.h" 35 #include "ui/events/event.h"
37 #include "ui/events/event_utils.h" 36 #include "ui/events/event_utils.h"
38 #include "ui/platform_window/platform_ime_controller.h" 37 #include "ui/platform_window/platform_ime_controller.h"
39 #include "ui/platform_window/platform_window.h" 38 #include "ui/platform_window/platform_window.h"
40 39
41 #if defined(OS_WIN) 40 #if defined(OS_WIN)
42 #include "ui/platform_window/win/win_window.h" 41 #include "ui/platform_window/win/win_window.h"
43 #elif defined(USE_X11) 42 #elif defined(USE_X11)
44 #include "ui/platform_window/x11/x11_window.h" 43 #include "ui/platform_window/x11/x11_window.h"
45 #elif defined(OS_ANDROID) 44 #elif defined(OS_ANDROID)
46 #include "ui/platform_window/android/platform_window_android.h" 45 #include "ui/platform_window/android/platform_window_android.h"
47 #elif defined(USE_OZONE) 46 #elif defined(USE_OZONE)
48 #include "ui/ozone/public/ozone_platform.h" 47 #include "ui/ozone/public/ozone_platform.h"
49 #endif 48 #endif
50 49
51 using mojo::Rect;
52 using mojo::Size;
53
54 namespace mus { 50 namespace mus {
55 51
56 namespace ws { 52 namespace ws {
57 namespace { 53 namespace {
58 54
59 // DrawWindowTree recursively visits ServerWindows, creating a SurfaceDrawQuad 55 // DrawWindowTree recursively visits ServerWindows, creating a SurfaceDrawQuad
60 // for each that lacks one. A ServerWindow may hold a CompositorFrame that 56 // for each that lacks one. A ServerWindow may hold a CompositorFrame that
61 // references other ServerWindows in SurfaceDrawQuads. We should not create new 57 // references other ServerWindows in SurfaceDrawQuads. We should not create new
62 // SurfaceDrawQuads for these |referenced_window_ids|. Instead, 58 // SurfaceDrawQuads for these |referenced_window_ids|. Instead,
63 // cc::SurfaceAggregator will do the heavy lifting here by expanding those 59 // cc::SurfaceAggregator will do the heavy lifting here by expanding those
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 const PlatformDisplayInitParams& init_params) 164 const PlatformDisplayInitParams& init_params)
169 : gpu_state_(init_params.gpu_state), 165 : gpu_state_(init_params.gpu_state),
170 surfaces_state_(init_params.surfaces_state), 166 surfaces_state_(init_params.surfaces_state),
171 delegate_(nullptr), 167 delegate_(nullptr),
172 draw_timer_(false, false), 168 draw_timer_(false, false),
173 frame_pending_(false), 169 frame_pending_(false),
174 #if !defined(OS_ANDROID) 170 #if !defined(OS_ANDROID)
175 cursor_loader_(ui::CursorLoader::Create()), 171 cursor_loader_(ui::CursorLoader::Create()),
176 #endif 172 #endif
177 weak_factory_(this) { 173 weak_factory_(this) {
178 metrics_.size_in_pixels = mojo::Size::New(); 174 metrics_.size_in_pixels.SetSize(init_params.display_bounds.width(),
179 metrics_.size_in_pixels->width = init_params.display_bounds.width(); 175 init_params.display_bounds.height());
180 metrics_.size_in_pixels->height = init_params.display_bounds.height();
181 // TODO(rjkroege): Preserve the display_id when Ozone platform can use it. 176 // TODO(rjkroege): Preserve the display_id when Ozone platform can use it.
182 } 177 }
183 178
184 void DefaultPlatformDisplay::Init(PlatformDisplayDelegate* delegate) { 179 void DefaultPlatformDisplay::Init(PlatformDisplayDelegate* delegate) {
185 delegate_ = delegate; 180 delegate_ = delegate;
186 181
187 gfx::Rect bounds(metrics_.size_in_pixels.To<gfx::Size>()); 182 gfx::Rect bounds(metrics_.size_in_pixels);
188 #if defined(OS_WIN) 183 #if defined(OS_WIN)
189 platform_window_.reset(new ui::WinWindow(this, bounds)); 184 platform_window_.reset(new ui::WinWindow(this, bounds));
190 #elif defined(USE_X11) 185 #elif defined(USE_X11)
191 platform_window_.reset(new ui::X11Window(this)); 186 platform_window_.reset(new ui::X11Window(this));
192 #elif defined(OS_ANDROID) 187 #elif defined(OS_ANDROID)
193 platform_window_.reset(new ui::PlatformWindowAndroid(this)); 188 platform_window_.reset(new ui::PlatformWindowAndroid(this));
194 #elif defined(USE_OZONE) 189 #elif defined(USE_OZONE)
195 platform_window_ = 190 platform_window_ =
196 ui::OzonePlatform::GetInstance()->CreatePlatformWindow(this, bounds); 191 ui::OzonePlatform::GetInstance()->CreatePlatformWindow(this, bounds);
197 #else 192 #else
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 // TODO(rjkroege): Use vblank to kick off Draw. 307 // TODO(rjkroege): Use vblank to kick off Draw.
313 draw_timer_.Start( 308 draw_timer_.Start(
314 FROM_HERE, base::TimeDelta(), 309 FROM_HERE, base::TimeDelta(),
315 base::Bind(&DefaultPlatformDisplay::Draw, weak_factory_.GetWeakPtr())); 310 base::Bind(&DefaultPlatformDisplay::Draw, weak_factory_.GetWeakPtr()));
316 } 311 }
317 312
318 void DefaultPlatformDisplay::UpdateMetrics(const gfx::Size& size, 313 void DefaultPlatformDisplay::UpdateMetrics(const gfx::Size& size,
319 float device_pixel_ratio) { 314 float device_pixel_ratio) {
320 if (display::Display::HasForceDeviceScaleFactor()) 315 if (display::Display::HasForceDeviceScaleFactor())
321 device_pixel_ratio = display::Display::GetForcedDeviceScaleFactor(); 316 device_pixel_ratio = display::Display::GetForcedDeviceScaleFactor();
322 if (metrics_.size_in_pixels.To<gfx::Size>() == size && 317 if (metrics_.size_in_pixels == size &&
323 metrics_.device_pixel_ratio == device_pixel_ratio) 318 metrics_.device_pixel_ratio == device_pixel_ratio)
324 return; 319 return;
325 mojom::ViewportMetrics old_metrics; 320 mojom::ViewportMetrics old_metrics;
326 old_metrics.size_in_pixels = metrics_.size_in_pixels.Clone(); 321 old_metrics.size_in_pixels = metrics_.size_in_pixels;
327 old_metrics.device_pixel_ratio = metrics_.device_pixel_ratio; 322 old_metrics.device_pixel_ratio = metrics_.device_pixel_ratio;
328 323
329 metrics_.size_in_pixels = mojo::Size::From(size); 324 metrics_.size_in_pixels = size;
330 metrics_.device_pixel_ratio = device_pixel_ratio; 325 metrics_.device_pixel_ratio = device_pixel_ratio;
331 326
332 delegate_->OnViewportMetricsChanged(old_metrics, metrics_); 327 delegate_->OnViewportMetricsChanged(old_metrics, metrics_);
333 } 328 }
334 329
335 std::unique_ptr<cc::CompositorFrame> 330 std::unique_ptr<cc::CompositorFrame>
336 DefaultPlatformDisplay::GenerateCompositorFrame() { 331 DefaultPlatformDisplay::GenerateCompositorFrame() {
337 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); 332 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
338 render_pass->damage_rect = dirty_rect_; 333 render_pass->damage_rect = dirty_rect_;
339 render_pass->output_rect = gfx::Rect(metrics_.size_in_pixels.To<gfx::Size>()); 334 render_pass->output_rect = gfx::Rect(metrics_.size_in_pixels);
340 335
341 std::set<WindowId> referenced_window_ids; 336 std::set<WindowId> referenced_window_ids;
342 DrawWindowTree(render_pass.get(), delegate_->GetRootWindow(), gfx::Vector2d(), 337 DrawWindowTree(render_pass.get(), delegate_->GetRootWindow(), gfx::Vector2d(),
343 1.0f, &referenced_window_ids); 338 1.0f, &referenced_window_ids);
344 339
345 std::unique_ptr<cc::DelegatedFrameData> frame_data( 340 std::unique_ptr<cc::DelegatedFrameData> frame_data(
346 new cc::DelegatedFrameData); 341 new cc::DelegatedFrameData);
347 frame_data->device_scale_factor = metrics_.device_pixel_ratio; 342 frame_data->device_scale_factor = metrics_.device_pixel_ratio;
348 frame_data->render_pass_list.push_back(std::move(render_pass)); 343 frame_data->render_pass_list.push_back(std::move(render_pass));
349 344
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 } 411 }
417 412
418 void DefaultPlatformDisplay::OnAcceleratedWidgetAvailable( 413 void DefaultPlatformDisplay::OnAcceleratedWidgetAvailable(
419 gfx::AcceleratedWidget widget, 414 gfx::AcceleratedWidget widget,
420 float device_pixel_ratio) { 415 float device_pixel_ratio) {
421 if (widget != gfx::kNullAcceleratedWidget) { 416 if (widget != gfx::kNullAcceleratedWidget) {
422 display_compositor_.reset( 417 display_compositor_.reset(
423 new DisplayCompositor(base::ThreadTaskRunnerHandle::Get(), widget, 418 new DisplayCompositor(base::ThreadTaskRunnerHandle::Get(), widget,
424 gpu_state_, surfaces_state_)); 419 gpu_state_, surfaces_state_));
425 } 420 }
426 UpdateMetrics(metrics_.size_in_pixels.To<gfx::Size>(), device_pixel_ratio); 421 UpdateMetrics(metrics_.size_in_pixels, device_pixel_ratio);
427 } 422 }
428 423
429 void DefaultPlatformDisplay::OnAcceleratedWidgetDestroyed() { 424 void DefaultPlatformDisplay::OnAcceleratedWidgetDestroyed() {
430 NOTREACHED(); 425 NOTREACHED();
431 } 426 }
432 427
433 void DefaultPlatformDisplay::OnActivationChanged(bool active) {} 428 void DefaultPlatformDisplay::OnActivationChanged(bool active) {}
434 429
435 void DefaultPlatformDisplay::RequestCopyOfOutput( 430 void DefaultPlatformDisplay::RequestCopyOfOutput(
436 std::unique_ptr<cc::CopyOutputRequest> output_request) { 431 std::unique_ptr<cc::CopyOutputRequest> output_request) {
437 if (display_compositor_) 432 if (display_compositor_)
438 display_compositor_->RequestCopyOfOutput(std::move(output_request)); 433 display_compositor_->RequestCopyOfOutput(std::move(output_request));
439 } 434 }
440 435
441 } // namespace ws 436 } // namespace ws
442 437
443 } // namespace mus 438 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698