A few more internal changes to the RangeList systems.
* No longer using a QuickAccess dictionary.
* The performance of the dictionary wasn't much faster than just doing binary searches.
* Using just binary searches allows us to take advantage of span and array returns as they're are faster than linked lists when iterating or copying the overlaps.
Small code optimizations.
Fixes a few leftover crashes.
* Slightly refactors RangeLists from the last Memory Changes MR, which fixes issue 61.
* Convert as many const size array iterators to span iterators as possible. When iterating over a const size array, every iteration created a Span, now only the first iteration does in most places.
* Now using object pooling for a few object types that were rapidly deleted and recreated.
* Converted a few flag checks to binary operations to save memory allocations.
* Refactors the RangeList and derivative classes used for handling lists of regions
* The Binary searches are now more performant, relying on edge searches instead of just returning the first matching hit and manually iterating until the edge is found
* Most look-ups now return a RangeItem, which acts as a linked list node now, instead where possible, moving away from Array copies. This should help with some specific lag spikes.
* Made IntrusiveRedBlackTreeNodes act like linked list nodes too to improve the lookup time of minimums, maximums and successors.
* Changed a few cases of HasFlag() into binary operations to save on memory allocations.
In general, [these changes] should increase frame time stability and lag spikes, but at the cost of some overhead to memory look-ups, the result being a very slightly better average fps from my testing (~1-2%).
* Rename timer interval constant
* Also cut the delay after which scrolling is considered ended in half
Co-authored-by: GreemDev <greemdev@ryujinx.app>
* PPTC version bump
* Also reset call depth when not using the unmanaged dispatch loop
* Increment call depth on function start rather than before call
* FluentAvalonia: Disabled NavigationView selection indicator animations due to bugged implementation in 2.1.0+, restoring previous behavior
* Avalonia: Fixed text on certain buttons being larger than normal
* Avalonia: Fixed ComboBox code inserting extra space to the left of selected items
This fixes https://github.com/Ryubing/Issues/issues/30
* Switch to "Release" build config (PerformanceCheck(); will only be called in Release build config)
* Enable "Trace Logs" in Ryujinx settings
* Double-click a game to launch
* Ryujinx will attempt to open a confirmation dialog box that never opens, causing UI deadlock