exaile / exaile

:notes: Cross-platform music player
https://www.exaile.org
GNU General Public License v2.0
360 stars 81 forks source link

Do I/O operations async where possible #94

Open genodeftest opened 9 years ago

genodeftest commented 9 years ago

With a huge music collection it takes quite long to e.g. load or save a playlist, replace a playlist's contents with a folder structure etc. During this time exaile is unresponsive to user input and does not repaint the progress bar. For better user experience it would be useful to do I/O operations asynchronously where possible. See also #83

virtuald commented 9 years ago

And #84

genodeftest commented 8 years ago

This also affects the search function. When searching in a huge playlist exaile freezes for some time. In my case I just run into a freeze of ~1…2 minutes in a playlist of ~6000 songs. UI was completely unresponsive while searching, I couldn't abort the search. All I got was a "Application is not responding" dialog from gnome-shell.

virtuald commented 8 years ago

That didn't used to happen... I'll have to dig into this more. I'm also experiencing a similar problem.

virtuald commented 8 years ago

As far as the async file operations go, I've created a little library to make doing it via Gio a bit easier. I still need to figure out the best way to integrate cancellation though.

https://github.com/virtuald/pygi-gio-coroutines

genodeftest commented 8 years ago

Adding files from Files panel or Collection panel into a playlist happens synchronously in the main thread. This will block for seconds up to hours on large music collections. Probably a candidate for making async too.

sbrubes commented 6 years ago

Adding files from Files panel or Collection panel into a playlist happens synchronously in the main thread.

@genodeftest As it's true, this DnD structure should consider doing it asynchronously.

virtuald commented 6 years ago

Should this issue be pushed until after Exaile 4? I think so.

sjohannes commented 6 years ago

There seems to be a few different cases mentioned in this report. I think it's better to split them up so we can track and triage them individually. But in general I don't mind pushing this to after 4.0.