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

Side by Side Diff: ui/ozone/platform/drm/host/drm_display_host.cc

Issue 1661783002: Centralize all gbm ozone host IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 10 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ui/ozone/platform/drm/host/drm_display_host.h" 5 #include "ui/ozone/platform/drm/host/drm_display_host.h"
6 6
7 #include "base/location.h"
7 #include "base/thread_task_runner_handle.h" 8 #include "base/thread_task_runner_handle.h"
8 #include "ui/ozone/common/display_snapshot_proxy.h" 9 #include "ui/ozone/common/display_snapshot_proxy.h"
9 #include "ui/ozone/common/display_util.h" 10 #include "ui/ozone/common/display_util.h"
10 #include "ui/ozone/common/gpu/ozone_gpu_messages.h" 11 #include "ui/ozone/platform/drm/host/gpu_thread_adapter.h"
11 #include "ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h"
12 12
13 namespace ui { 13 namespace ui {
14 14
15 DrmDisplayHost::DrmDisplayHost(DrmGpuPlatformSupportHost* sender, 15 DrmDisplayHost::DrmDisplayHost(GpuThreadAdapter* sender,
16 const DisplaySnapshot_Params& params, 16 const DisplaySnapshot_Params& params,
17 bool is_dummy) 17 bool is_dummy)
18 : sender_(sender), 18 : sender_(sender),
19 snapshot_(new DisplaySnapshotProxy(params)), 19 snapshot_(new DisplaySnapshotProxy(params)),
20 is_dummy_(is_dummy) { 20 is_dummy_(is_dummy) {
21 sender_->AddGpuThreadObserver(this); 21 sender_->AddGpuThreadObserver(this);
22 } 22 }
23 23
24 DrmDisplayHost::~DrmDisplayHost() { 24 DrmDisplayHost::~DrmDisplayHost() {
25 sender_->RemoveGpuThreadObserver(this); 25 sender_->RemoveGpuThreadObserver(this);
26 ClearCallbacks(); 26 ClearCallbacks();
27 } 27 }
28 28
29 void DrmDisplayHost::UpdateDisplaySnapshot( 29 void DrmDisplayHost::UpdateDisplaySnapshot(
30 const DisplaySnapshot_Params& params) { 30 const DisplaySnapshot_Params& params) {
31 snapshot_ = make_scoped_ptr(new DisplaySnapshotProxy(params)); 31 snapshot_ = make_scoped_ptr(new DisplaySnapshotProxy(params));
32 } 32 }
33 33
34 void DrmDisplayHost::Configure(const DisplayMode* mode, 34 void DrmDisplayHost::Configure(const DisplayMode* mode,
35 const gfx::Point& origin, 35 const gfx::Point& origin,
36 const ConfigureCallback& callback) { 36 const ConfigureCallback& callback) {
37 if (is_dummy_) { 37 if (is_dummy_) {
38 callback.Run(true); 38 callback.Run(true);
39 return; 39 return;
40 } 40 }
41 41
42 configure_callback_ = callback; 42 configure_callback_ = callback;
43 bool status = false; 43 bool status = false;
44 if (mode) { 44 if (mode) {
45 status = sender_->Send(new OzoneGpuMsg_ConfigureNativeDisplay( 45 status = sender_->GpuConfigureNativeDisplay(
46 snapshot_->display_id(), GetDisplayModeParams(*mode), origin)); 46 snapshot_->display_id(), GetDisplayModeParams(*mode), origin);
47 } else { 47 } else {
48 status = sender_->Send( 48 status = sender_->GpuDisableNativeDisplay(snapshot_->display_id());
49 new OzoneGpuMsg_DisableNativeDisplay(snapshot_->display_id()));
50 } 49 }
51 50
52 if (!status) 51 if (!status)
53 OnDisplayConfigured(false); 52 OnDisplayConfigured(false);
54 } 53 }
55 54
56 void DrmDisplayHost::OnDisplayConfigured(bool status) { 55 void DrmDisplayHost::OnDisplayConfigured(bool status) {
57 if (!configure_callback_.is_null()) { 56 if (!configure_callback_.is_null()) {
58 base::ThreadTaskRunnerHandle::Get()->PostTask( 57 base::ThreadTaskRunnerHandle::Get()->PostTask(
59 FROM_HERE, base::Bind(configure_callback_, status)); 58 FROM_HERE, base::Bind(configure_callback_, status));
60 } else { 59 } else {
61 LOG(ERROR) << "Got unexpected event for display " 60 LOG(ERROR) << "Got unexpected event for display "
62 << snapshot_->display_id(); 61 << snapshot_->display_id();
63 } 62 }
64 63
65 configure_callback_.Reset(); 64 configure_callback_.Reset();
66 } 65 }
67 66
68 void DrmDisplayHost::GetHDCPState(const GetHDCPStateCallback& callback) { 67 void DrmDisplayHost::GetHDCPState(const GetHDCPStateCallback& callback) {
69 get_hdcp_callback_ = callback; 68 get_hdcp_callback_ = callback;
70 if (!sender_->Send(new OzoneGpuMsg_GetHDCPState(snapshot_->display_id()))) 69 if (!sender_->GpuGetHDCPState(snapshot_->display_id()))
71 OnHDCPStateReceived(false, HDCP_STATE_UNDESIRED); 70 OnHDCPStateReceived(false, HDCP_STATE_UNDESIRED);
72 } 71 }
73 72
74 void DrmDisplayHost::OnHDCPStateReceived(bool status, HDCPState state) { 73 void DrmDisplayHost::OnHDCPStateReceived(bool status, HDCPState state) {
75 if (!get_hdcp_callback_.is_null()) { 74 if (!get_hdcp_callback_.is_null()) {
76 base::ThreadTaskRunnerHandle::Get()->PostTask( 75 base::ThreadTaskRunnerHandle::Get()->PostTask(
77 FROM_HERE, base::Bind(get_hdcp_callback_, status, state)); 76 FROM_HERE, base::Bind(get_hdcp_callback_, status, state));
78 } else { 77 } else {
79 LOG(ERROR) << "Got unexpected event for display " 78 LOG(ERROR) << "Got unexpected event for display "
80 << snapshot_->display_id(); 79 << snapshot_->display_id();
81 } 80 }
82 81
83 get_hdcp_callback_.Reset(); 82 get_hdcp_callback_.Reset();
84 } 83 }
85 84
86 void DrmDisplayHost::SetHDCPState(HDCPState state, 85 void DrmDisplayHost::SetHDCPState(HDCPState state,
87 const SetHDCPStateCallback& callback) { 86 const SetHDCPStateCallback& callback) {
88 set_hdcp_callback_ = callback; 87 set_hdcp_callback_ = callback;
89 if (!sender_->Send( 88 if (!sender_->GpuSetHDCPState(snapshot_->display_id(), state))
90 new OzoneGpuMsg_SetHDCPState(snapshot_->display_id(), state)))
91 OnHDCPStateUpdated(false); 89 OnHDCPStateUpdated(false);
92 } 90 }
93 91
94 void DrmDisplayHost::OnHDCPStateUpdated(bool status) { 92 void DrmDisplayHost::OnHDCPStateUpdated(bool status) {
95 if (!set_hdcp_callback_.is_null()) { 93 if (!set_hdcp_callback_.is_null()) {
96 base::ThreadTaskRunnerHandle::Get()->PostTask( 94 base::ThreadTaskRunnerHandle::Get()->PostTask(
97 FROM_HERE, base::Bind(set_hdcp_callback_, status)); 95 FROM_HERE, base::Bind(set_hdcp_callback_, status));
98 } else { 96 } else {
99 LOG(ERROR) << "Got unexpected event for display " 97 LOG(ERROR) << "Got unexpected event for display "
100 << snapshot_->display_id(); 98 << snapshot_->display_id();
101 } 99 }
102 100
103 set_hdcp_callback_.Reset(); 101 set_hdcp_callback_.Reset();
104 } 102 }
105 103
106 void DrmDisplayHost::SetGammaRamp(const std::vector<GammaRampRGBEntry>& lut) { 104 void DrmDisplayHost::SetGammaRamp(const std::vector<GammaRampRGBEntry>& lut) {
107 sender_->Send(new OzoneGpuMsg_SetGammaRamp(snapshot_->display_id(), lut)); 105 sender_->GpuSetGammaRamp(snapshot_->display_id(), lut);
108 } 106 }
109 107
110 void DrmDisplayHost::OnGpuThreadReady() { 108 void DrmDisplayHost::OnGpuThreadReady() {
111 is_dummy_ = false; 109 is_dummy_ = false;
112 110
113 // Note: These responses are done here since the OnChannelDestroyed() is 111 // Note: These responses are done here since the OnChannelDestroyed() is
114 // called after OnChannelEstablished(). 112 // called after OnChannelEstablished().
115 ClearCallbacks(); 113 ClearCallbacks();
116 } 114 }
117 115
118 void DrmDisplayHost::OnGpuThreadRetired() {} 116 void DrmDisplayHost::OnGpuThreadRetired() {}
119 117
120 void DrmDisplayHost::ClearCallbacks() { 118 void DrmDisplayHost::ClearCallbacks() {
121 if (!configure_callback_.is_null()) 119 if (!configure_callback_.is_null())
122 OnDisplayConfigured(false); 120 OnDisplayConfigured(false);
123 if (!get_hdcp_callback_.is_null()) 121 if (!get_hdcp_callback_.is_null())
124 OnHDCPStateReceived(false, HDCP_STATE_UNDESIRED); 122 OnHDCPStateReceived(false, HDCP_STATE_UNDESIRED);
125 if (!set_hdcp_callback_.is_null()) 123 if (!set_hdcp_callback_.is_null())
126 OnHDCPStateUpdated(false); 124 OnHDCPStateUpdated(false);
127 } 125 }
128 126
129 } // namespace ui 127 } // namespace ui
OLDNEW
« no previous file with comments | « ui/ozone/platform/drm/host/drm_display_host.h ('k') | ui/ozone/platform/drm/host/drm_display_host_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698