GStreamer plug-in installation success/failure issues
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SoundConverter |
New
|
Undecided
|
Unassigned |
Bug Description
If gstreamer.py install_plugin_cb() fails during reading of tags, because plug-in cannot be found or user aborts the search, the task is still added to the converter TaskQueue. That is because install_plugin_cb() calls done(), which in turn emits an idle callback of finished(), which in turn calls a hook method, such as found_tag_hook for tags_read(), which then adds the file to the converter.add() queue.
As a result, subsequent conversion attempts end up duplicated/
Suggested solution: gstreamer.py install_plugin_cb() should end the task differently, so finished() isn't called and e.g. self.error is set accordingly. Or finished() checks self.error if set properly.
Removed the patch, because although it worked during normal operation, it didn't prevent successful GStreamer plugin installation from calling TagReader finished() a second time. That lead to bug 1128340 (closed duplicate as to continue here):
Traceback (most recent call last): soundconverter/ python/ soundconverter/ gstreamer. py", line 467, in finished e.remove( self)
File "/usr/lib/
dontdelet
ValueError: list.remove(x): x not in list
The second callback to TagReader finished() in install_plugin_cb() happens due to TagReader and Decoder and others overriding the "finished" method instead of calling Pipeline. finished( ). As they replay the pipeline, they don't want to emit the final "finished" yet.
I'll attach a different patch.