diff options
Diffstat (limited to 'libkms++/extframebuffer.cpp')
-rw-r--r-- | libkms++/extframebuffer.cpp | 35 |
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()); +} + +} |