(fix) BaseTrackCache: fix filterAndSort() to avoid unwanted extra tracks with extraFilter #15597
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Another take to fix #14873 and similar symptoms in #14687 for me.
The issue:
#14873: unrelated (older) tracks show up with the 'New' filter in the Analyze view.
With #14687 'dirty' tracks pop up in the Computer directory views that use LibraryTableModel.
Root cause:
So called "extra filters" are sent to
SearchQueryParser::parseQuery(query, extraFilter)whereextraFilteris wrapped as SqlNode.In BaseTrackCache we add dirty tracks to the current view if they are missing but match the query -- however the extraFilter
SqlNode::match(pTrack)always returns true, making the check pointless because it adds dirty tracks even if they don't belong into the view.(Quick) Fix:
Don't use
extraFilter.Actually Analyze is the only view that makes use of it for the New filter (get only tracks added during last week), so we can
match(TrackPointer)function really does a per-track matchand
QSet<TrackId>(not with a SqlNode)Works fine for me in Analyze, no dirty tracks anymore.