#pragma once #include #include #include struct _drmModeAtomicReq; #include "decls.h" namespace kms { class AtomicReq { public: AtomicReq(Card& card); ~AtomicReq(); AtomicReq(const AtomicReq& other) = delete; AtomicReq& operator=(const AtomicReq& other) = delete; void add(uint32_t ob_id, uint32_t prop_id, uint64_t value); void add(DrmPropObject *ob, Property *prop, uint64_t value); void add(DrmPropObject *ob, const std::string& prop, uint64_t value); void add(DrmPropObject *ob, const std::map& values); void add_display(Connector* conn, Crtc* crtc, Blob* videomode, Plane* primary, Framebuffer* fb); int test(bool allow_modeset = false); int commit(void* data, bool allow_modeset = false); int commit_sync(bool allow_modeset = false); private: Card& m_card; _drmModeAtomicReq* m_req; }; }