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

Side by Side Diff: ui/ozone/platform/drm/gpu/crtc_controller.cc

Issue 1279703004: Ozone: HDC should only keep track of planes owned by it’s crtc controllers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments Created 5 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 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 "ui/ozone/platform/drm/gpu/crtc_controller.h" 5 #include "ui/ozone/platform/drm/gpu/crtc_controller.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "ui/ozone/platform/drm/gpu/drm_device.h" 9 #include "ui/ozone/platform/drm/gpu/drm_device.h"
10 #include "ui/ozone/platform/drm/gpu/page_flip_request.h" 10 #include "ui/ozone/platform/drm/gpu/page_flip_request.h"
11 #include "ui/ozone/platform/drm/gpu/scanout_buffer.h" 11 #include "ui/ozone/platform/drm/gpu/scanout_buffer.h"
12 12
13 namespace ui { 13 namespace ui {
14 14
15 CrtcController::CrtcController(const scoped_refptr<DrmDevice>& drm, 15 CrtcController::CrtcController(const scoped_refptr<DrmDevice>& drm,
16 uint32_t crtc, 16 uint32_t crtc,
17 uint32_t connector) 17 uint32_t connector)
18 : drm_(drm), 18 : drm_(drm),
19 overlay_plane_manager_(nullptr), 19 overlay_plane_manager_(nullptr),
20 crtc_(crtc), 20 crtc_(crtc),
21 connector_(connector) {} 21 connector_(connector) {}
22 22
23 CrtcController::~CrtcController() { 23 CrtcController::~CrtcController() {
24 if (!is_disabled_) { 24 if (!is_disabled_) {
25 const ScopedVector<HardwareDisplayPlane>& all_planes =
26 drm_->plane_manager()->planes();
27 for (auto* plane : all_planes) {
28 if (plane->owning_crtc() == crtc_) {
29 plane->set_owning_crtc(0);
30 plane->set_in_use(false);
31 }
32 }
33
25 SetCursor(nullptr); 34 SetCursor(nullptr);
26 drm_->DisableCrtc(crtc_); 35 drm_->DisableCrtc(crtc_);
27 SignalPageFlipRequest(); 36 SignalPageFlipRequest();
28 } 37 }
29 } 38 }
30 39
31 bool CrtcController::Modeset(const OverlayPlane& plane, drmModeModeInfo mode) { 40 bool CrtcController::Modeset(const OverlayPlane& plane, drmModeModeInfo mode) {
32 if (!drm_->SetCrtc(crtc_, plane.buffer->GetFramebufferId(), 41 if (!drm_->SetCrtc(crtc_, plane.buffer->GetFramebufferId(),
33 std::vector<uint32_t>(1, connector_), &mode)) { 42 std::vector<uint32_t>(1, connector_), &mode)) {
34 PLOG(ERROR) << "Failed to modeset: crtc=" << crtc_ 43 PLOG(ERROR) << "Failed to modeset: crtc=" << crtc_
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 // may result in a call to SchedulePageFlip(), which will override 169 // may result in a call to SchedulePageFlip(), which will override
161 // page_flip_request_ and possibly release the ref. Stash previous request 170 // page_flip_request_ and possibly release the ref. Stash previous request
162 // locally to avoid deleting the object we are making a call on. 171 // locally to avoid deleting the object we are making a call on.
163 scoped_refptr<PageFlipRequest> last_request; 172 scoped_refptr<PageFlipRequest> last_request;
164 last_request.swap(page_flip_request_); 173 last_request.swap(page_flip_request_);
165 last_request->Signal(gfx::SwapResult::SWAP_ACK); 174 last_request->Signal(gfx::SwapResult::SWAP_ACK);
166 } 175 }
167 } 176 }
168 177
169 } // namespace ui 178 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698