]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blobdiff - libkms++/atomicreq.cpp
AtomicReq: use nonblocking commit
[android/external-libkmsxx.git] / libkms++ / atomicreq.cpp
index 236e5018876491a047651c393f2198be04ce510e..2e5d469be4d4c84d59346cca42a247860c6928af 100644 (file)
@@ -1,4 +1,5 @@
 #include <cassert>
+#include <stdexcept>
 
 #include <xf86drm.h>
 #include <xf86drmMode.h>
@@ -21,6 +22,8 @@ static inline int drmModeAtomicCommit(int, drmModeAtomicReqPtr, int, void*) { re
 
 #endif // DRM_CLIENT_CAP_ATOMIC
 
+using namespace std;
+
 namespace kms
 {
 AtomicReq::AtomicReq(Card& card)
@@ -47,6 +50,11 @@ void AtomicReq::add(DrmObject *ob, Property *prop, uint64_t value)
        add(ob->id(), prop->id(), value);
 }
 
+void AtomicReq::add(DrmObject* ob, const string& prop, uint64_t value)
+{
+       add(ob, m_card.get_prop(prop), value);
+}
+
 int AtomicReq::test()
 {
        uint32_t flags = DRM_MODE_ATOMIC_TEST_ONLY;
@@ -56,7 +64,7 @@ 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);
 }