summaryrefslogtreecommitdiff
path: root/kms++/src/crtc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kms++/src/crtc.cpp')
-rw-r--r--kms++/src/crtc.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/kms++/src/crtc.cpp b/kms++/src/crtc.cpp
index c391f69..f94216f 100644
--- a/kms++/src/crtc.cpp
+++ b/kms++/src/crtc.cpp
@@ -58,6 +58,28 @@ void Crtc::restore_mode(Connector* conn)
conns, 1, &c->mode);
}
+int Crtc::set_mode(Connector* conn, const Videomode& mode)
+{
+ AtomicReq req(card());
+
+ unique_ptr<Blob> blob = mode.to_blob(card());
+
+ req.add(conn, {
+ { "CRTC_ID", this->id() },
+ });
+
+ req.add(this, {
+ { "ACTIVE", 1 },
+ { "MODE_ID", blob->id() },
+ });
+
+ int r = req.commit_sync(true);
+
+ refresh();
+
+ return r;
+}
+
int Crtc::set_mode(Connector* conn, Framebuffer& fb, const Videomode& mode)
{
uint32_t conns[] = { conn->id() };