summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ac362f9)
raw | patch | inline | side by side (parent: ac362f9)
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | |
Tue, 17 Nov 2015 21:39:57 +0000 (23:39 +0200) | ||
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | |
Wed, 18 Nov 2015 20:21:12 +0000 (22:21 +0200) |
libkms++/card.cpp | patch | blob | history | |
libkms++/card.h | patch | blob | history | |
libkms++/framebuffer.cpp | patch | blob | history | |
libkms++/framebuffer.h | patch | blob | history |
diff --git a/libkms++/card.cpp b/libkms++/card.cpp
index a0e395eb19acf40eb5ff8f76073d37444cfdd8b2..48ab560747993b187e64042ac91c88bf46733316 100644 (file)
--- a/libkms++/card.cpp
+++ b/libkms++/card.cpp
{
restore_modes();
+ while (m_framebuffers.size() > 0)
+ delete m_framebuffers.back();
+
for (auto pair : m_obmap)
delete pair.second;
diff --git a/libkms++/card.h b/libkms++/card.h
index bbe34e28a15c65e9d09e5c6f812e92143c0333aa..1bc6af74436ef54545b9272564f1798bd9c6d585 100644 (file)
--- a/libkms++/card.h
+++ b/libkms++/card.h
{
class Card
{
+ friend class Framebuffer;
public:
Card();
~Card();
std::vector<Crtc*> m_crtcs;
std::vector<Plane*> m_planes;
std::vector<Property*> m_properties;
+ std::vector<Framebuffer*> m_framebuffers;
int m_fd;
bool m_master;
index a7e5ad6921f7ad45dadbda4f53e9af0cb5949154..2481561622b4d27b22af3557a0f653f802316665 100644 (file)
--- a/libkms++/framebuffer.cpp
+++ b/libkms++/framebuffer.cpp
+#include <algorithm>
#include <cstring>
#include <stdexcept>
#include <sys/mman.h>
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)
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);
+}
+
+
}
diff --git a/libkms++/framebuffer.h b/libkms++/framebuffer.h
index 12374ae87118054f5ec42134afa31bff8756cab9..77a6c3291e81075b29731941df658634024980e2 100644 (file)
--- a/libkms++/framebuffer.h
+++ b/libkms++/framebuffer.h
{
public:
Framebuffer(Card& card, uint32_t id);
- virtual ~Framebuffer() { }
+ virtual ~Framebuffer();
uint32_t width() const { return m_width; }
uint32_t height() const { return m_height; }