drm_hwcomposer: Purge drm_ from drmdisplaycompositor
Having DrmDevice as a member in DrmDisplayCompositor is redundant,
since that could be always retrieved by calling:
resource_manager_->GetDrmDevice(display_)
Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com>
diff --git a/drmdisplaycompositor.cpp b/drmdisplaycompositor.cpp
index 0d00bc0..7276bb5 100644
--- a/drmdisplaycompositor.cpp
+++ b/drmdisplaycompositor.cpp
@@ -40,7 +40,6 @@
DrmDisplayCompositor::DrmDisplayCompositor()
: resource_manager_(NULL),
- drm_(NULL),
display_(-1),
initialized_(false),
active_(false),
@@ -60,11 +59,11 @@
int ret = pthread_mutex_lock(&lock_);
if (ret)
ALOGE("Failed to acquire compositor lock %d", ret);
-
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
if (mode_.blob_id)
- drm_->DestroyPropertyBlob(mode_.blob_id);
+ drm->DestroyPropertyBlob(mode_.blob_id);
if (mode_.old_blob_id)
- drm_->DestroyPropertyBlob(mode_.old_blob_id);
+ drm->DestroyPropertyBlob(mode_.old_blob_id);
active_composition_.reset();
@@ -75,12 +74,13 @@
pthread_mutex_destroy(&lock_);
}
-int DrmDisplayCompositor::Init(ResourceManager *resource_manager,
- DrmDevice *drm, int display) {
+int DrmDisplayCompositor::Init(ResourceManager *resource_manager, int display) {
resource_manager_ = resource_manager;
- drm_ = drm;
display_ = display;
-
+ if (!resource_manager_->GetDrmDevice(display)) {
+ ALOGE("Could not find drmdevice for display");
+ return -EINVAL;
+ }
int ret = pthread_mutex_init(&lock_, NULL);
if (ret) {
ALOGE("Failed to initialize drm compositor lock %d\n", ret);
@@ -98,7 +98,8 @@
std::tuple<uint32_t, uint32_t, int>
DrmDisplayCompositor::GetActiveModeResolution() {
- DrmConnector *connector = drm_->GetConnectorForDisplay(display_);
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
+ DrmConnector *connector = drm->GetConnectorForDisplay(display_);
if (connector == NULL) {
ALOGE("Failed to determine display mode: no connector for display %d",
display_);
@@ -131,8 +132,8 @@
return ret;
}
}
-
- ret = drmModeAtomicCommit(drm_->fd(), pset, 0, drm_);
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
+ ret = drmModeAtomicCommit(drm->fd(), pset, 0, drm);
if (ret) {
ALOGE("Failed to commit pset ret=%d\n", ret);
drmModeAtomicFree(pset);
@@ -152,14 +153,15 @@
std::vector<DrmHwcLayer> &layers = display_comp->layers();
std::vector<DrmCompositionPlane> &comp_planes =
display_comp->composition_planes();
- uint64_t out_fences[drm_->crtcs().size()];
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
+ uint64_t out_fences[drm->crtcs().size()];
- DrmConnector *connector = drm_->GetConnectorForDisplay(display_);
+ DrmConnector *connector = drm->GetConnectorForDisplay(display_);
if (!connector) {
ALOGE("Could not locate connector for display %d", display_);
return -ENODEV;
}
- DrmCrtc *crtc = drm_->GetCrtcForDisplay(display_);
+ DrmCrtc *crtc = drm->GetCrtcForDisplay(display_);
if (!crtc) {
ALOGE("Could not locate crtc for display %d", display_);
return -ENODEV;
@@ -353,7 +355,7 @@
if (test_only)
flags |= DRM_MODE_ATOMIC_TEST_ONLY;
- ret = drmModeAtomicCommit(drm_->fd(), pset, flags, drm_);
+ ret = drmModeAtomicCommit(drm->fd(), pset, flags, drm);
if (ret) {
if (!test_only)
ALOGE("Failed to commit pset ret=%d\n", ret);
@@ -365,7 +367,7 @@
drmModeAtomicFree(pset);
if (!test_only && mode_.needs_modeset) {
- ret = drm_->DestroyPropertyBlob(mode_.old_blob_id);
+ ret = drm->DestroyPropertyBlob(mode_.old_blob_id);
if (ret) {
ALOGE("Failed to destroy old mode property blob %" PRIu32 "/%d",
mode_.old_blob_id, ret);
@@ -393,14 +395,15 @@
}
int DrmDisplayCompositor::ApplyDpms(DrmDisplayComposition *display_comp) {
- DrmConnector *conn = drm_->GetConnectorForDisplay(display_);
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
+ DrmConnector *conn = drm->GetConnectorForDisplay(display_);
if (!conn) {
ALOGE("Failed to get DrmConnector for display %d", display_);
return -ENODEV;
}
const DrmProperty &prop = conn->dpms_property();
- int ret = drmModeConnectorSetProperty(drm_->fd(), conn->id(), prop.id(),
+ int ret = drmModeConnectorSetProperty(drm->fd(), conn->id(), prop.id(),
display_comp->dpms_mode());
if (ret) {
ALOGE("Failed to set DPMS property for connector %d", conn->id());
@@ -416,8 +419,9 @@
mode.ToDrmModeModeInfo(&drm_mode);
uint32_t id = 0;
- int ret = drm_->CreatePropertyBlob(&drm_mode,
- sizeof(struct drm_mode_modeinfo), &id);
+ DrmDevice *drm = resource_manager_->GetDrmDevice(display_);
+ int ret = drm->CreatePropertyBlob(&drm_mode, sizeof(struct drm_mode_modeinfo),
+ &id);
if (ret) {
ALOGE("Failed to create mode property blob %d", ret);
return std::make_tuple(ret, 0);
@@ -495,7 +499,8 @@
case DRM_COMPOSITION_TYPE_MODESET:
mode_.mode = composition->display_mode();
if (mode_.blob_id)
- drm_->DestroyPropertyBlob(mode_.blob_id);
+ resource_manager_->GetDrmDevice(display_)
+ ->DestroyPropertyBlob(mode_.blob_id);
std::tie(ret, mode_.blob_id) = CreateModeBlob(mode_.mode);
if (ret) {
ALOGE("Failed to create mode blob for display %d", display_);