OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "ui/ozone/platform/drm/gpu/drm_thread_proxy.h" |
| 6 |
| 7 namespace ui { |
| 8 |
| 9 DrmThreadProxy::DrmThreadProxy() : drm_thread_("DrmThread") {} |
| 10 |
| 11 void DrmThreadProxy::Initialize() { |
| 12 // The DRM thread needs to be started late since we need to wait for the |
| 13 // sandbox to start. |
| 14 drm_thread_->Start(); |
| 15 } |
| 16 |
| 17 void DrmThreadProxy::OnCreateWindow(gfx::AcceleratedWidget widget) { |
| 18 DCHECK(drm_thread_->IsRunning()); |
| 19 drm_thread_->task_runner()->PostTask( |
| 20 FROM_HERE, base::Bind(DrmThread::OnCreateWindow, |
| 21 base::Unretained(&drm_thread_), widget)); |
| 22 } |
| 23 |
| 24 void DrmThreadProxy::OnDestroyWindow(gfx::AcceleratedWidget widget) { |
| 25 DCHECK(drm_thread_->IsRunning()); |
| 26 drm_thread_->task_runner()->PostTask( |
| 27 FROM_HERE, base::Bind(DrmThread::OnDestroyWindow, |
| 28 base::Unretained(&drm_thread_), widget)); |
| 29 } |
| 30 |
| 31 void DrmThreadProxy::OnWindowBoundsChanged(gfx::AcceleratedWidget widget, |
| 32 const gfx::Rect& bounds) { |
| 33 DCHECK(drm_thread_->IsRunning()); |
| 34 drm_thread_->task_runner()->PostTask( |
| 35 FROM_HERE, base::Bind(DrmThread::OnWindowBoundsChanged, |
| 36 base::Unretained(&drm_thread_), widget, bounds)); |
| 37 } |
| 38 |
| 39 void DrmThreadProxy::OnCursorSet(gfx::AcceleratedWidget widget, |
| 40 const std::vector<SkBitmap>& bitmaps, |
| 41 const gfx::Point& location, |
| 42 int frame_delay_ms) { |
| 43 DCHECK(drm_thread_->IsRunning()); |
| 44 drm_thread_->task_runner()->PostTask( |
| 45 FROM_HERE, |
| 46 base::Bind(DrmThread::OnCursorSet, base::Unretained(&drm_thread_), widget, |
| 47 bitmaps, location, frame_delay_ms)); |
| 48 } |
| 49 |
| 50 void DrmThreadProxy::OnCursorMove(gfx::AcceleratedWidget widget, |
| 51 const gfx::Point& location) { |
| 52 DCHECK(drm_thread_->IsRunning()); |
| 53 drm_thread_->task_runner()->PostTask( |
| 54 FROM_HERE, base::Bind(DrmThread::OnCursorMove, |
| 55 base::Unretained(&drm_thread_), widget, location)); |
| 56 } |
| 57 |
| 58 void DrmThreadProxy::OnCheckOverlayCapabilities( |
| 59 gfx::AcceleratedWidget widget, |
| 60 const std::vector<OverlayCheck_Params>& overlays, |
| 61 const base::Callback<void(gfx::AcceleratedWidget, bool)>& callback) { |
| 62 DCHECK(drm_thread_->IsRunning()); |
| 63 drm_thread_->task_runner()->PostTask( |
| 64 FROM_HERE, base::Bind(DrmThread::OnCheckOverlayCapabilities, |
| 65 base::Unretained(&drm_thread_), widget, overlays, |
| 66 CreateSafeCallback(callback))); |
| 67 } |
| 68 |
| 69 void DrmThreadProxy::OnRefreshNativeDisplays( |
| 70 const base::Callback<void(const std::vector<DisplaySnapshot_Params>&)>& |
| 71 callback) { |
| 72 DCHECK(drm_thread_->IsRunning()); |
| 73 drm_thread_->task_runner()->PostTask( |
| 74 FROM_HERE, |
| 75 base::Bind(DrmThread::OnRefreshNativeDisplays, |
| 76 base::Unretained(&drm_thread_), CreateSafeCallback(callback))); |
| 77 } |
| 78 |
| 79 void DrmThreadProxy::OnConfigureNativeDisplay( |
| 80 int64_t id, |
| 81 const DisplayMode_Params& mode, |
| 82 const gfx::Point& origin, |
| 83 const base::Callback<void(int64_t, bool)>& callback) { |
| 84 DCHECK(drm_thread_->IsRunning()); |
| 85 drm_thread_->task_runner()->PostTask( |
| 86 FROM_HERE, base::Bind(DrmThread::OnConfigureNativeDisplay, |
| 87 base::Unretained(&drm_thread_), id, mode, origin, |
| 88 CreateSafeCallback(callback))); |
| 89 } |
| 90 |
| 91 void DrmThreadProxy::OnDisableNativeDisplay( |
| 92 int64_t id, |
| 93 const base::Callback<void(int64_t, bool)>& callback) { |
| 94 DCHECK(drm_thread_->IsRunning()); |
| 95 drm_thread_->task_runner()->PostTask( |
| 96 FROM_HERE, base::Bind(DrmThread::OnDisableNativeDisplay, |
| 97 base::Unretained(&drm_thread_), id, |
| 98 CreateSafeCallback(callback))); |
| 99 } |
| 100 |
| 101 void DrmThreadProxy::OnTakeDisplayControl( |
| 102 const base::Callback<void(bool)>& callback) { |
| 103 DCHECK(drm_thread_->IsRunning()); |
| 104 drm_thread_->task_runner()->PostTask( |
| 105 FROM_HERE, |
| 106 base::Bind(DrmThread::OnTakeDisplayControl, |
| 107 base::Unretained(&drm_thread_), CreateSafeCallback(callback))); |
| 108 } |
| 109 |
| 110 void DrmThreadProxy::OnRelinquishDisplayControl( |
| 111 const base::Callback<void(bool)>& callback) { |
| 112 DCHECK(drm_thread_->IsRunning()); |
| 113 drm_thread_->task_runner()->PostTask( |
| 114 FROM_HERE, |
| 115 base::Bind(DrmThread::OnRelinquishDisplayControl, |
| 116 base::Unretained(&drm_thread_), CreateSafeCallback(callback))); |
| 117 } |
| 118 |
| 119 void DrmThreadProxy::OnAddGraphicsDevice(const base::FilePath& path, |
| 120 const base::FileDescriptor& fd) { |
| 121 DCHECK(drm_thread_->IsRunning()); |
| 122 drm_thread_->task_runner()->PostTask( |
| 123 FROM_HERE, base::Bind(DrmThread::OnAddGraphicsDevice, |
| 124 base::Unretained(&drm_thread_), path, fd)); |
| 125 } |
| 126 |
| 127 void DrmThreadProxy::OnRemoveGraphicsDevice(const base::FilePath& path) { |
| 128 DCHECK(drm_thread_->IsRunning()); |
| 129 drm_thread_->task_runner()->PostTask( |
| 130 FROM_HERE, base::Bind(DrmThread::OnRemoveGraphicsDevice, |
| 131 base::Unretained(&drm_thread_), path)); |
| 132 } |
| 133 |
| 134 void DrmThreadProxy::OnGetHDCPState( |
| 135 int64_t display_id, |
| 136 const base::Callback<void(int64_t, bool, HDCPState>& callback) { |
| 137 DCHECK(drm_thread_->IsRunning()); |
| 138 drm_thread_->task_runner()->PostTask( |
| 139 FROM_HERE, |
| 140 base::Bind(DrmThread::OnGetHDCPState, base::Unretained(&drm_thread_), |
| 141 display_id, CreateSafeCallback(callback))); |
| 142 } |
| 143 |
| 144 void DrmThreadProxy::OnSetHDCPState( |
| 145 int64_t display_id, HDCPState state, |
| 146 const base::Callback<void(int64_t, bool>& callback) { |
| 147 DCHECK(drm_thread_->IsRunning()); |
| 148 drm_thread_->task_runner()->PostTask( |
| 149 FROM_HERE, |
| 150 base::Bind(DrmThread::OnSetHDCPState, base::Unretained(&drm_thread_), |
| 151 display_id, state, CreateSafeCallback(callback))); |
| 152 } |
| 153 |
| 154 void DrmThreadProxy::OnSetGammaRamp(int64_t id, |
| 155 const std::vector<GammaRampRGBEntry>& lut) { |
| 156 DCHECK(drm_thread_->IsRunning()); |
| 157 drm_thread_->task_runner()->PostTask( |
| 158 FROM_HERE, base::Bind(DrmThread::OnSetGammaRamp, |
| 159 base::Unretained(&drm_thread_), id, lut)); |
| 160 } |
| 161 |
| 162 } // namespace ui |
OLD | NEW |