diff options
Diffstat (limited to 'kms++/src')
-rw-r--r-- | kms++/src/crtc.cpp | 22 |
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() }; |