-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WTrackMenu: Cleanup & performance regression fixes (part 2) #2684
Conversation
I don't know how to do this in C++, but I am wondering if we could create some sort of asynchronous iterator class that only keeps a single TrackPointer in memory at a time. |
I have prepared a small, internal framework for exactly this purpose, part of #2656 (which also includes the pending changes for WTrackMenu). It is not asynchronous, single tracks are still loaded in the UI thread, and all the work is done in the main thread. This is acceptable as long as we provide progress feedback and an option to abort long running operations. It saves us from managing and controlling multiple background tasks and is already a huge improvement compared to the current situation. |
Force pushed, because the last commit did not build. |
|
WTrackMenu::updateMenus() should finally be fixed. This was the most urgent issue. |
Beyond the scope of this PR, but related: I think mass actions get slowed down a lot by writing to file tags. This is unnecessary when I clear analysis settings right before reanalyzing. Maybe we can come up with a way to improve this. |
The code looks good to me. I will test it after my ongoing reanalysis finishes. |
# Conflicts: # src/widget/wtrackmenu.cpp
We don't have the facilities for managing queued background tasks. The only exception is the special case multi-threaded batch analysis. The first step towards a better user experience is to show a modal progress report and the option to abort long running tasks as demonstrated in #2656. Any non-modal extensions are out of scope yet. |
This could be done with a reanalyze action. That would also require adding a progress bar to the GUI. Then we could finally get rid of the unintuitive Analyze LibraryFeature. |
@Be-ing @hacksdump
As promised another round of optimizations for #2612. This one fixes some more regressions and also an indexing bug in a loop in updateMenu() that only considered the first element.
We need to optimize updateMenu() that still is very inefficient and able to freeze the UI longer than acceptable. This was already an open issue before extracting the WTrackMenu class.
The major regression and pain point caused by getTrackPointers() is still unresolved, I added comments. A proof-of-concept for handling those long running actions is ready for testing. Next time ;)