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

Side by Side Diff: ui/ozone/platform/drm/cursor_proxy_mojo.h

Issue 2903353002: Make ozone/drm/mojo more immune to startup races (Closed)
Patch Set: make CursorProxyMojo a GpuThreadObserver Created 3 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_ 5 #ifndef UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_
6 #define UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_ 6 #define UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_
7 7
8 #include "ui/gfx/native_widget_types.h" 8 #include "ui/gfx/native_widget_types.h"
9 #include "ui/ozone/platform/drm/gpu/inter_thread_messaging_proxy.h" 9 #include "ui/ozone/platform/drm/gpu/inter_thread_messaging_proxy.h"
10 #include "ui/ozone/platform/drm/host/drm_cursor.h" 10 #include "ui/ozone/platform/drm/host/drm_cursor.h"
11 #include "ui/ozone/platform/drm/host/gpu_thread_observer.h"
11 #include "ui/ozone/public/interfaces/device_cursor.mojom.h" 12 #include "ui/ozone/public/interfaces/device_cursor.mojom.h"
12 13
13 namespace service_manager { 14 namespace service_manager {
14 class Connector; 15 class Connector;
15 } 16 }
16 17
17 namespace ui { 18 namespace ui {
18 19
19 // Ozone requires a IPC from the browser (or mus-ws) process to the gpu (or 20 // Ozone requires a IPC from the browser (or mus-ws) process to the gpu (or
20 // mus-gpu) process to control the mouse pointer. This class provides mouse 21 // mus-gpu) process to control the mouse pointer. This class provides mouse
21 // pointer control via Mojo-style IPC. This code runs only in the mus-ws (i.e. 22 // pointer control via Mojo-style IPC. This code runs only in the mus-ws (i.e.
22 // it's the client) and sends mouse pointer control messages to a less 23 // it's the client) and sends mouse pointer control messages to a less
23 // priviledged process. 24 // priviledged process.
24 class CursorProxyMojo : public DrmCursorProxy { 25 class CursorProxyMojo : public DrmCursorProxy, public GpuThreadObserver {
25 public: 26 public:
26 explicit CursorProxyMojo(service_manager::Connector* connector); 27 explicit CursorProxyMojo(service_manager::Connector* connector);
27 ~CursorProxyMojo() override; 28 ~CursorProxyMojo() override;
28 29
29 private: 30 private:
30 // DrmCursorProxy. 31 // DrmCursorProxy.
31 void CursorSet(gfx::AcceleratedWidget window, 32 void CursorSet(gfx::AcceleratedWidget window,
32 const std::vector<SkBitmap>& bitmaps, 33 const std::vector<SkBitmap>& bitmaps,
33 const gfx::Point& point, 34 const gfx::Point& point,
34 int frame_delay_ms) override; 35 int frame_delay_ms) override;
35 void Move(gfx::AcceleratedWidget window, const gfx::Point& point) override; 36 void Move(gfx::AcceleratedWidget window, const gfx::Point& point) override;
36 void InitializeOnEvdev() override; 37 void InitializeOnEvdev() override;
37 38
39 // GpuThreadObserver
40 void OnGpuProcessLaunched() override;
41 void OnGpuThreadReady() override;
42 void OnGpuThreadRetired() override;
43
38 std::unique_ptr<service_manager::Connector> connector_; 44 std::unique_ptr<service_manager::Connector> connector_;
39 45
40 // Mojo implementation of the DrmCursorProxy. 46 // Mojo implementation of the DrmCursorProxy.
41 ui::ozone::mojom::DeviceCursorPtr main_cursor_ptr_; 47 ui::ozone::mojom::DeviceCursorPtr main_cursor_ptr_;
42 ui::ozone::mojom::DeviceCursorPtr evdev_cursor_ptr_; 48 ui::ozone::mojom::DeviceCursorPtr evdev_cursor_ptr_;
43 49
44 base::PlatformThreadRef evdev_ref_; 50 base::PlatformThreadRef evdev_ref_;
51
52 bool have_gpu_thread_ = false;
45 }; 53 };
46 54
47 } // namespace ui 55 } // namespace ui
48 56
49 #endif // UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_ 57 #endif // UI_OZONE_PLATFORM_DRM_CURSOR_PROXY_MOJO_H_
OLDNEW
« no previous file with comments | « no previous file | ui/ozone/platform/drm/cursor_proxy_mojo.cc » ('j') | ui/ozone/platform/drm/ozone_platform_gbm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698