OSDN Git Service

drm_hwcomposer: Use mode vrefresh if provided
[android-x86/external-drm_hwcomposer.git] / drmcrtc.cpp
index a7b17c4..c2e1d6a 100644 (file)
  * limitations under the License.
  */
 
+#define LOG_TAG "hwc-drm-crtc"
+
 #include "drmcrtc.h"
 #include "drmresources.h"
 
 #include <stdint.h>
 #include <xf86drmMode.h>
 
+#include <cutils/log.h>
+
 namespace android {
 
-DrmCrtc::DrmCrtc(drmModeCrtcPtr c, unsigned pipe)
-    : id_(c->crtc_id),
+DrmCrtc::DrmCrtc(DrmResources *drm, drmModeCrtcPtr c, unsigned pipe)
+    : drm_(drm),
+      id_(c->crtc_id),
       pipe_(pipe),
       display_(-1),
-      requires_modeset_(true),
       x_(c->x),
       y_(c->y),
       width_(c->width),
       height_(c->height),
       mode_(&c->mode),
-      modeValid_(c->mode_valid) {
+      mode_valid_(c->mode_valid) {
 }
 
 DrmCrtc::~DrmCrtc() {
 }
 
+int DrmCrtc::Init() {
+  int ret = drm_->GetCrtcProperty(*this, "ACTIVE", &active_property_);
+  if (ret) {
+    ALOGE("Failed to get ACTIVE property");
+    return ret;
+  }
+
+  ret = drm_->GetCrtcProperty(*this, "MODE_ID", &mode_property_);
+  if (ret) {
+    ALOGE("Failed to get MODE_ID property");
+    return ret;
+  }
+  return 0;
+}
+
 uint32_t DrmCrtc::id() const {
   return id_;
 }
@@ -46,24 +65,23 @@ unsigned DrmCrtc::pipe() const {
   return pipe_;
 }
 
-bool DrmCrtc::requires_modeset() const {
-  return requires_modeset_;
-}
-
-void DrmCrtc::set_requires_modeset(bool requires_modeset) {
-  requires_modeset_ = requires_modeset;
-}
-
 int DrmCrtc::display() const {
   return display_;
 }
 
 void DrmCrtc::set_display(int display) {
   display_ = display;
-  requires_modeset_ = true;
 }
 
 bool DrmCrtc::can_bind(int display) const {
   return display_ == -1 || display_ == display;
 }
+
+const DrmProperty &DrmCrtc::active_property() const {
+  return active_property_;
+}
+
+const DrmProperty &DrmCrtc::mode_property() const {
+  return mode_property_;
+}
 }