GUI freeze trying to add ~100 songs to playlist/crate
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Undecided
|
Max Linke |
Bug Description
using r 3250 the GUI freezes for some time if you add ~100 and more songs to a playlist or crate when mixxx was just started.
So until all songs are added to the playlist/crate the GUI is frozen and non responsive this and it takes several seconds (up to minutes) until mixxx respoinds again. A similar behaviour can be observed emptying a large auto-Dj queue.
If the songs have already been added to a playlist/crate while mixxx is running everything is fine and i just experiance a freeze of about 0.5 sec.
I think this could be a problem if you want to add a large playlist to Auto-DJ at the beginning of the set or delete a old queue.
For someone new to mixxx this could look like it's crashed although it's actually running fine
Here are some debug messages I repeatedly get during a GUI freeze
Debug [Main]: TrackDAO(0x1d25810) addTracks took 2 ms to add 0 tracks
Debug [Main]: CrateFeature:
Debug [Main]: Location "/home/
Debug [Main]: Committing transaction on "qt_sql_
Debug [Main]: Committing transaction on "qt_sql_
Debug [Main]: BeatFactory:
Debug [Main]: Committing transaction on "qt_sql_
Debug [Main]: TrackDAO(0xfbb7e0) addTracks took 1 ms to add 0 tracks
Debug [Main]: Committing transaction on "qt_sql_
Debug [Main]: Location "/home/
Related branches
Changed in mixxx: | |
status: | New → In Progress |
assignee: | nobody → Max Linke (max-linke) |
Changed in mixxx: | |
status: | In Progress → Fix Committed |
Changed in mixxx: | |
status: | Fix Committed → Fix Released |
Hi Max,
I think you hit a problem, caused by the way the database is handled in Mixxx. It is itching on all edges where we have long database transactions. I think if you search for bugs, you will find many similar ones.
This problem is partly solved by doing some long transactions like collecting songs from Rhythmbox xml file in a separate thread.
But I would prefer to adapt the common solution from many mediaplayers like Banshee and Clementine to move all database transaction in an own dedicated GUI thread.
This was one reason for starting my Reuse Clementine code Project. I think it will be best to copy there ideas how to handle a database, but it will have been a deep impact to Mixxx.
Kind reagrds,
Daniel