]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blobdiff - libkms++/atomicreq.cpp
AtomicReq: add helper to add multiple props
[android/external-libkmsxx.git] / libkms++ / atomicreq.cpp
index 0155aa04d0b0abf1c1d4eb41b5228e010eb2518a..0d895daaecb7b5de7675d3af7fbae5f024ce58a1 100644 (file)
@@ -11,6 +11,7 @@
 #ifndef DRM_CLIENT_CAP_ATOMIC
 
 #define DRM_MODE_ATOMIC_TEST_ONLY 0
+#define DRM_MODE_ATOMIC_NONBLOCK 0
 
 struct _drmModeAtomicReq;
 typedef struct _drmModeAtomicReq* drmModeAtomicReqPtr;
@@ -55,6 +56,12 @@ void AtomicReq::add(DrmObject* ob, const string& prop, uint64_t value)
        add(ob, m_card.get_prop(prop), value);
 }
 
+void AtomicReq::add(DrmObject* ob, const map<string, uint64_t>& values)
+{
+       for(const auto& kvp : values)
+               add(ob, kvp.first, kvp.second);
+}
+
 int AtomicReq::test()
 {
        uint32_t flags = DRM_MODE_ATOMIC_TEST_ONLY;
@@ -64,8 +71,15 @@ int AtomicReq::test()
 
 int AtomicReq::commit(void* data)
 {
-       uint32_t flags = DRM_MODE_PAGE_FLIP_EVENT;
+       uint32_t flags = DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_NONBLOCK;
 
        return drmModeAtomicCommit(m_card.fd(), m_req, flags, data);
 }
+
+int AtomicReq::commit_sync()
+{
+       uint32_t flags = 0;
+
+       return drmModeAtomicCommit(m_card.fd(), m_req, flags, 0);
+}
 }