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.
This commit is contained in:
Vaxry 2025-04-07 21:08:16 +02:00 committed by GitHub
parent da86db43d4
commit b15c2bfff6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 9 deletions

View file

@ -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 {