![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
Single-writer seqlock around the record. More...
#include <dev_geometry.h>
Collaboration diagram for dt_dev_geometry_store_t:Data Fields | |
| dt_atomic_uint64 | generation |
| dt_dev_image_geometry_t | value |
Single-writer seqlock around the record.
generation is odd while a publication is in flight and even once it has settled. A reader copies the value, re-reads the generation and retries on a mismatch, so a pipeline thread can never observe a new width paired with an old height – which is the failure this record exists to remove, the pair having been two independent unlocked stores before.
Deliberately not a mutex: one here would create a lock-ordering obligation against history_mutex and the pipe's busy_mutex, both of which are already held across reads of these values.
Definition at line 74 of file dev_geometry.h.
| dt_atomic_uint64 dt_dev_geometry_store_t::generation |
Definition at line 76 of file dev_geometry.h.
Referenced by dt_dev_geometry_init().
| dt_dev_image_geometry_t dt_dev_geometry_store_t::value |
Definition at line 77 of file dev_geometry.h.
Referenced by dt_dev_geometry_init(), dt_dev_geometry_set_processed_size(), and dt_dev_geometry_set_raw_size().