summaryrefslogtreecommitdiff
path: root/libkms++/framebuffer.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2015-11-17 23:39:57 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2015-11-18 22:21:12 +0200
commitc78a869e7c00fa95fc6a9f62bbd822fa579806b2 (patch)
treec208cff9000cf5cb59ed528988ff19e2bc73d3b9 /libkms++/framebuffer.cpp
parentac362f919a2376bac1f7fd4c96f04edf24f30cff (diff)
Fb: collect fbs and destroy them in card's destructor
Diffstat (limited to 'libkms++/framebuffer.cpp')
-rw-r--r--libkms++/framebuffer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/libkms++/framebuffer.cpp b/libkms++/framebuffer.cpp
index a7e5ad6..2481561 100644
--- a/libkms++/framebuffer.cpp
+++ b/libkms++/framebuffer.cpp
@@ -1,3 +1,4 @@
+#include <algorithm>
#include <cstring>
#include <stdexcept>
#include <sys/mman.h>
@@ -14,6 +15,7 @@ namespace kms
Framebuffer::Framebuffer(Card& card, int width, int height)
: DrmObject(card, DRM_MODE_OBJECT_FB), m_width(width), m_height(height)
{
+ card.m_framebuffers.push_back(this);
}
Framebuffer::Framebuffer(Card& card, uint32_t id)
@@ -25,6 +27,16 @@ Framebuffer::Framebuffer(Card& card, uint32_t id)
m_height = fb->height;
drmModeFreeFB(fb);
+
+ card.m_framebuffers.push_back(this);
}
+Framebuffer::~Framebuffer()
+{
+ auto& fbs = card().m_framebuffers;
+ auto iter = find(fbs.begin(), fbs.end(), this);
+ card().m_framebuffers.erase(iter);
+}
+
+
}