`HandleTimelineMouse` did the following
- `m_highlight.active = true` when clicked
- update range while dragging
- `m_highlight.active = false` when not dragging
This causes issues when `IsMouseClickReleased` is called somewhere else as
- `mousePotentialClickRelease` is set to true on click
- At beginning of frame, `mouseDragging` is set to `false` as long as `mousePotentialClickRelease` is `true` and mouse delta is under the drag threshold
- This means that if the mouse didn't move enough in the duration of a frame, highlight would immediately stop, even though we were still holding the mouse button down
Instead, it now only stops highlighting once the mouse is no longer down (ie: has been "released", cursor having moved or not)
This PR does the following things:
- Allow to lock the highlighted thread using left mouse click or lane popup menu
- Add more descriptions for wait reasons in View::DecodeContextSwitchReason
- Stores the Wakeup CPU so that we may display it in the CPU data view
- `QueueThreadWakeup` now contains cpu and adjust info (currently unused). Fits in the padding, no struct size change.
- `QueueContextSwitch` now also contains thread priorities information (windows+linux) and CState (windows), but currently unused by the profiler. Fits in the padding, no struct size change.
- Fixes Linux `EventWakeup` which tries to remove PERF_SAMPLE_CALLCHAIN on the wrong member. Set the whole `perf_event_attr` explicitely instead.
- Fixes Windows ReadyThread event being dropped if triggered before the thread switches out (this is confirmed to be normal behaviour, probably due to thread being switched out but context switch actually happening later)
- Bumps tracy file version and protocol versions
This gives a better error message and helps finding the correct python executable since python3 may actually be only named python on windows for example.
In Visual Studio 17.13 the STL team at Microsoft cleaned up internal includes of other public STL headers (most notably <chrono>) to increase build throughput for STL users, but now you need to include them yourself rather than rely on the indirect inclusion.