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:
parent
da86db43d4
commit
b15c2bfff6
2 changed files with 12 additions and 9 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue