fossfreedom / coverart-browser

Browse your cover-art albums in Rhythmbox v2.96 - 3.0+
http://xpressubuntu.wordpress.com/
GNU General Public License v3.0
74 stars 19 forks source link

export coverart for tracks blocks the GUI #315

Open fossfreedom opened 10 years ago

fossfreedom commented 10 years ago

when implemented we had to use gstreamer blocking because gstreamer 0.10 did not have the capability to watch for signals on the bus.

we can now do that since we are using gstreamer 1.0

rhythmbox-spectrum gives an example how to watch on the bus - lets look to see if this can be used to prevent blocking of the UI.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2772807-export-coverart-for-tracks-blocks-the-gui?utm_campaign=plugin&utm_content=tracker%2F351726&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F351726&utm_medium=issues&utm_source=github).
fossfreedom commented 10 years ago

multiprocessing using queue - maybe useful? http://blog.pingoured.fr/index.php?post/2014/11/27/Python-multiprocessing-and-queue

fossfreedom commented 9 years ago

dbus is actually simpler here

http://stackoverflow.com/questions/22390064/use-dbus-to-just-send-a-message-in-python

thus coverart browser act as the server - we spawn a separate process that does the hard-work.

the separate process is the client - client talks to the server to get the next item to process. server controls the progress bar.

Every time the client checks for the next item, if the user has cancelled the progress bar, then the client will then quit.

The server will autoquit if the client hasnt returned within - say 40 seconds - this is to catch the case where the client process has died for whatever reason