Ensure that sprite aligner click to pick sprites is thread safe

Use a mutex for list of sprite IDs found in (threaded) draw jobs
This commit is contained in:
Jonathan G Rennison
2024-02-04 00:31:11 +00:00
parent 736539280b
commit 3365efa5b2
4 changed files with 29 additions and 5 deletions

View File

@@ -24,9 +24,15 @@ enum NewGrfDebugSpritePickerMode {
/** Spritepicker of SpriteAligner */
struct NewGrfDebugSpritePicker {
NewGrfDebugSpritePickerMode mode; ///< Current state
void *clicked_pixel; ///< Clicked pixel (pointer to blitter buffer)
std::vector<SpriteID> sprites; ///< Sprites found
NewGrfDebugSpritePickerMode mode = SPM_NONE; ///< Current state
void *clicked_pixel = nullptr; ///< Clicked pixel (pointer to blitter buffer)
std::vector<SpriteID> sprites; ///< Sprites found
void DrawingComplete();
void FoundSpriteDuringDrawing(SpriteID sprite);
private:
std::vector<SpriteID> draw_found_sprites; ///< Sprites found (used from threaded drawing jobs, mutex must be held for all accesses)
};
extern NewGrfDebugSpritePicker _newgrf_debug_sprite_picker;