summaryrefslogtreecommitdiff
path: root/libkms++/extframebuffer.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@iki.fi>2015-10-02 21:27:55 +0300
committerTomi Valkeinen <tomi.valkeinen@iki.fi>2015-10-03 16:59:19 +0300
commit2984c032ccef081c350f306c96e3c923126657c8 (patch)
tree9871d26164e5a93a0776cb9f71fa97c853b60f9f /libkms++/extframebuffer.cpp
parent89bfd9d567ced945bf2f4b3a927426c1ad2ee762 (diff)
Add ExtFramebuffer
Add ExtFramebuffer for cases where the buffer have been allocated externally.
Diffstat (limited to 'libkms++/extframebuffer.cpp')
-rw-r--r--libkms++/extframebuffer.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/libkms++/extframebuffer.cpp b/libkms++/extframebuffer.cpp
new file mode 100644
index 0000000..de9d737
--- /dev/null
+++ b/libkms++/extframebuffer.cpp
@@ -0,0 +1,35 @@
+
+#include <cstring>
+#include <stdexcept>
+#include <sys/mman.h>
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+
+#include "kms++.h"
+
+using namespace std;
+
+namespace kms
+{
+
+ExtFramebuffer::ExtFramebuffer(Card& card, uint32_t width, uint32_t height, uint32_t depth, uint32_t bpp, uint32_t stride, uint32_t handle)
+ :Framebuffer(card, width, height)
+{
+ uint32_t id;
+ int r = drmModeAddFB(card.fd(), width, height, depth, bpp, stride, handle, &id);
+ if (r)
+ throw invalid_argument("fob");
+ m_id = id;
+}
+
+ExtFramebuffer::~ExtFramebuffer()
+{
+ drmModeRmFB(card().fd(), id());
+}
+
+void ExtFramebuffer::print_short() const
+{
+ printf("Framebuffer %d\n", id());
+}
+
+}