diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-04-07 21:08:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-07 21:08:16 +0200 |
| commit | b15c2bfff6941bd2072eade13177433d7ab58a00 (patch) | |
| tree | f7d10524a4db227a38cb4e3b0207d9336e12df63 /src/managers/CursorManager.hpp | |
| parent | da86db43d47141b9d7332d3cb756ff7c05dbb39a (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.hpp | 9 |
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 { |
