GNOME Bugzilla – Bug 350041
Saying "No" to file overwrite when ripping a CD hangs the GUI
Last modified: 2008-11-18 11:54:59 UTC
1. Rip a CD. 2. Quit and restart rhythmbox 3. Attempt to re-rip same CD. Since there is already a file from previous rip, a dialog box is produced "do you want to overwrite the file?" 4. Select "No", produces another dialog box behind the first one with "could not open vfs file <uri>: file exists". 5. At this point the interface hangs and RB requires a restart. (saying "Yes" is fine it proceeds to overwrites old file). Upon investigation it appears that the encoder is going to the next track, because I can see in the debug log: "rb_shell_transfer_progress_cb] rhythmbox/shell/rb-shell.c:1798: transferred 1 tracks out of 12" meaning that the encoder thinks it has handled the track (it's gone from 0 to 1), but the dialog from the error callback hangs the GUI. On IRC Doc suggested gnomevfs_allow_overwrite_cb() probably needs to use GDK_THREADS I managed a workaround by including gdk_threads_init(); then GDK_THREADS_ENTER(); at the beginning of the above function function, and a GDK_THREADS_LEAVE(); at the end, but it still generates those gnomevfs "error" dialogs which have to be dismissed *after* all of the "Skip this track?" dialogs are acted on. Doc later suggested that: > probably need to set a flag when we cancel, and make it not propagate the > error from gstreamer if it's set and: > in fact, RBEncoder should probably have an "overwrite" signal, and the dialog > stuff done above it and further that you would need: > a boolean true-stops-signal accumulator
This works properly now.