| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | 1. Calling valueChanged didn't invoke machinery in
   value<t>, only base_value aka value_.
   There's a fast path in value<t>::type() despite the
   pessimization.
2. Split global scope stuff into options::globals from
   the options::globals stuff
3. Adjust usages | 
|  |  | 
|  | No visible changes (hopefully). | 
|  |  | 
|  | Reported-by: Artem Sobolev | 
|  |  | 
|  | Issue: #748 | 
|  |  | 
|  | Issue: #748 | 
|  |  | 
|  | - use `static constexpr inline' to avoid requiring
  explicit declarations in object code
- use `const Foo* const' to maybe put into readonly
  binary segment (at least for ELF DSOs)
- `constexpr' in function scope has storage, avoid
  `static'
- don't use `constexpr' where there's no advantage,
  like arrays
We'd like to avoid overhead of atomic initialization
for each function call. No idea how `static constexpr'
requiring storage in the standard plays with atomic
initialization requirement. Hearsay points that
`constexpr' without `static' in block scope behaves
more to our liking. It's all hazy though.
I'm not 100% sure if `static inline constexpr' has any
storage. Hopefully none, like a #define, and stuff
bigger than registers gets coalesced within the same
module, with small stuff being immediates. | 
|  | Adjust usages. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | We're going to base opentrack derivatives on the same branch. Previously
merges were a living hell. Modularizing the UI code and having
continuously-built executables will do a lot.
First opentrack variant in progress is a TrackHat device for mouse and
scrolling control for people with spine and hand/arm disabilities. |