summaryrefslogtreecommitdiff
path: root/src/managers/CursorManager.hpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-04-07 21:08:16 +0200
committerGitHub <noreply@github.com>2025-04-07 21:08:16 +0200
commitb15c2bfff6941bd2072eade13177433d7ab58a00 (patch)
treef7d10524a4db227a38cb4e3b0207d9336e12df63 /src/managers/CursorManager.hpp
parentda86db43d47141b9d7332d3cb756ff7c05dbb39a (diff)
CursorManager: Store cursor pixel data retrieved from X/HC as a copy (#9986)
Instead of storing pointers as refs (which could randomly get invalid very easily) copy the data.
Diffstat (limited to 'src/managers/CursorManager.hpp')
-rw-r--r--src/managers/CursorManager.hpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/managers/CursorManager.hpp b/src/managers/CursorManager.hpp
index c5ded5da..30741a62 100644
--- a/src/managers/CursorManager.hpp
+++ b/src/managers/CursorManager.hpp
@@ -17,7 +17,7 @@ AQUAMARINE_FORWARD(IBuffer);
class CCursorBuffer : public Aquamarine::IBuffer {
public:
CCursorBuffer(cairo_surface_t* surf, const Vector2D& size, const Vector2D& hotspot);
- CCursorBuffer(uint8_t* pixelData, const Vector2D& size, const Vector2D& hotspot);
+ CCursorBuffer(const uint8_t* pixelData, const Vector2D& size, const Vector2D& hotspot);
~CCursorBuffer() = default;
virtual Aquamarine::eBufferCapability caps();
@@ -30,10 +30,9 @@ class CCursorBuffer : public Aquamarine::IBuffer {
virtual void endDataPtr();
private:
- Vector2D hotspot;
- cairo_surface_t* surface = nullptr;
- uint8_t* pixelData = nullptr;
- size_t stride = 0;
+ Vector2D m_hotspot;
+ std::vector<uint8_t> m_data;
+ size_t m_stride = 0;
};
class CCursorManager {