]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blobdiff - libkms++/crtc.cpp
Crtc: fix throw message
[android/external-libkmsxx.git] / libkms++ / crtc.cpp
index 321670c96e77556fe09fbb7149f9491db576c2d6..436cdeeba584fdc512c39ea43f7f266946d02f47 100644 (file)
@@ -18,7 +18,7 @@ struct CrtcPriv
 };
 
 Crtc::Crtc(Card &card, uint32_t id, uint32_t idx)
-       :DrmObject(card, id, DRM_MODE_OBJECT_CRTC, idx)
+       :DrmPropObject(card, id, DRM_MODE_OBJECT_CRTC, idx)
 {
        m_priv = new CrtcPriv();
        m_priv->drm_crtc = drmModeGetCrtc(this->card().fd(), this->id());
@@ -50,14 +50,6 @@ void Crtc::restore_mode(Connector* conn)
                       conns, 1, &c->mode);
 }
 
-void Crtc::print_short() const
-{
-       auto c  = m_priv->drm_crtc;
-
-       printf("Crtc %d, %d,%d %dx%d\n", id(),
-              c->x, c->y, c->width, c->height);
-}
-
 int Crtc::set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode)
 {
        uint32_t conns[] = { conn->id() };
@@ -83,6 +75,26 @@ int Crtc::set_plane(Plane* plane, Framebuffer& fb,
                               conv(src_x), conv(src_y), conv(src_w), conv(src_h));
 }
 
+int Crtc::disable_plane(Plane* plane)
+{
+       return drmModeSetPlane(card().fd(), plane->id(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+}
+
+Plane* Crtc::get_primary_plane()
+{
+       for (Plane* p : get_possible_planes()) {
+               if (p->plane_type() != PlaneType::Primary)
+                       continue;
+
+               if (p->crtc_id() != id())
+                       continue;
+
+               return p;
+       }
+
+       throw invalid_argument(string("No primary plane for crtc ") + to_string(id()));
+}
+
 int Crtc::page_flip(Framebuffer& fb, void *data)
 {
        return drmModePageFlip(card().fd(), id(), fb.id(), DRM_MODE_PAGE_FLIP_EVENT, data);