mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.43k stars 1.27k forks source link

can't remove track color (set 'no color') in track table #12758

Open Eve00000 opened 7 months ago

Eve00000 commented 7 months ago

Bug Description

Reset color back to default in 'search selection' hangs (not directly working), Changing to another color is ok, back to default does not work although it's indicated in metadata. After closing and restarting Mixxx the default color is shown.

Version

2.5-alpha-229-g7b3e48544a (main)

OS

win 10

daschuer commented 7 months ago

The major difference between 2.5-alpha and 2.4-beta is the updated Qt version Qt 5.15 -> Qt 6.5 With this and similar bugs, it would be great if you can cross-check 2.4-alpha and sort out a Qt issue.

Eve00000 commented 7 months ago

for the moment I haven no free test computer anymore, I'll try later with a virtual one

ronso0 commented 7 months ago

I just noticed this (once) with Mixxx 2.4 in the Playlist feature. Sometimes the repaint is done only when the selection changes, but even switching to another feature and back didn't help (tested with a one-track playlist).

Eve00000 commented 7 months ago

Hi, I'm glad you've noticed it too.

ronso0 commented 7 months ago

This is happening rarely, but when it does happen with a specific track it is repeatable forever.

In this screencast you can see

I suspect this is some sort of caching issue. It looks like the color update process stops in at compareAndSet() in Track::setColor, for some reason new and old color are considered equal. https://github.com/mixxxdj/mixxx/blob/7c6324ee463c4398aab0d6ebe15a82108facd1ee/src/track/track.cpp#L774-L780

track-color-reset-issue.webm


Interestingly, I ran into a DEBUG ASSERT (with another track where the color got stuck) during shutdown:

debug [Main] GlobalTrackCache - Evicting track  TrackRef {"some/music/file.flac","some/music/file.flac",7426} Track(0x55cd84a54ba0)
DEBUG ASSERT: "pTrack->getDateAdded().isValid()" in function TrackCollectionManager::SaveTrackResult TrackCollectionManager::saveTrack(Track*, TrackMetadataExportMode) const at ./src/library/trackcollectionmanager.cpp:205