diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h
index 3b1118d1..e6c769b4 100644
--- a/include/libcamera/framebuffer.h
+++ b/include/libcamera/framebuffer.h
@@ -46,7 +46,7 @@ private:
 	std::vector<Plane> planes_;
 };
 
-class FrameBuffer final : public Extensible
+class FrameBuffer : public Extensible
 {
 	LIBCAMERA_DECLARE_PRIVATE()
 
@@ -61,6 +61,7 @@ public:
 	FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie = 0);
 	FrameBuffer(std::unique_ptr<Private> d,
 		    const std::vector<Plane> &planes, unsigned int cookie = 0);
+	virtual ~FrameBuffer() {}
 
 	const std::vector<Plane> &planes() const { return planes_; }
 	Request *request() const;
