GNOME Bugzilla – Bug 416702
Moving clips in simple view is broken
Last modified: 2007-04-13 16:41:15 UTC
Please describe the problem: If you add two or more clips to the simple view, randomly re-aranging them causes crashes. Steps to reproduce: 1. Add at least two clips to the simple timeline 2. Move the first source after the end source 3. Now move it back again. Actual results: The application goes into some kind of deadlock. The clip's d&d thumbnail stops tracking cursor movement. The application fails to respond to Ctrl-C, or xkill. The only way to stop it is to manually kill the python intepreter Expected results: I would expect the sources to end up in the right place Does this happen every time? Almost always. Other information: Last few dozen lines of debug output 0:00:27.113268000 13078 0x82ad060 DEBUG python viewer.py:332:_timelineDurationChangedCb: duration : 15575166666 0:00:27.113657000 13078 0x82ad060 DEBUG python singledecodebin.py:281:do_change_state:<pitivi+elements+singledecodebin+singledecodebin2> transition:<enum 27 of type GstStateChange> 0:00:27.113874000 13078 0x82ad060 DEBUG python singledecodebin.py:281:do_change_state:<pitivi+elements+singledecodebin+singledecodebin0> transition:<enum 27 of type GstStateChange> 0:00:27.149213000 13078 0x82ad060 DEBUG python singledecodebin.py:281:do_change_state:<pitivi+elements+singledecodebin+singledecodebin0> transition:<enum 27 of type GstStateChange> 0:00:27.250925000 13078 0x82ad060 INFO python objects.py:201:_setStartDurationTime:<source-file:///home/dotsony/Desktop/Test%20Movies/100_2850.MOV-audio2> start:0:00:00.000000000 , duration:CLOCK_TIME_NONE 0:00:27.251179000 13078 0x82ad060 DEBUG python objects.py:217:_startDurationChangedCb:<source-file:///home/dotsony/Desktop/Test%20Movies/100_2850.MOV-audio2> property:start 0:00:27.251339000 13078 0x82ad060 INFO python complexinterface.py:115:startDurationChanged: start/duration changed 0:00:27.251506000 13078 0x82ad060 DEBUG python tracklayer.py:199:_childStartDurationChangedCb: <TimelineFileSource file:///home/dotsony/Desktop/Test%20Movies/100_2850.MOV> start:0:00:00.000000000 duration:0:00:05.990333333 0:00:27.251791000 13078 0x86613f8 LOG python viewer.py:176:_videosinkCapsNotifyCb: caps:video/x-raw-yuv, width=(int)320, height=(int)240, framerate=(fraction)360000/17971, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 0:00:27.252087000 13078 0x86613f8 LOG python viewer.py:176:_videosinkCapsNotifyCb: caps:video/x-raw-yuv, width=(int)320, height=(int)240, framerate=(fraction)360000/17971, format=(fourcc)I420, pixel-aspect-ratio=(fraction)1/1 0:00:27.252507000 13078 0x82ad060 LOG python complexinterface.py:71:getPixelPosition: Got start time 0:00:00.000000000, returning offset 0 0:00:27.252856000 13078 0x82ad060 DEBUG python objects.py:217:_startDurationChangedCb:<composition-audiocomp> property:duration 0:00:27.252974000 13078 0x82ad060 DEBUG python objects.py:231:_startDurationChangedCb:<composition-audiocomp> duration changed:0:00:15.575166666 0:00:27.253101000 13078 0x82ad060 INFO python complexinterface.py:115:startDurationChanged: start/duration changed 0:00:27.253395000 13078 0x82ad060 LOG python complexinterface.py:60:getPixelWidth: Got time 0:00:15.575166666, returning width : 155 0:00:27.253488000 13078 0x82ad060 INFO python tracklayer.py:88:_compStartDurationChangedCb: setting width-request to 165 0:00:27.253657000 13078 0x82ad060 LOG python complexinterface.py:60:getPixelWidth: Got time 0:00:15.575166666, returning width : 155 0:00:27.253859000 13078 0x82ad060 LOG python complexinterface.py:60:getPixelWidth: Got time 0:00:15.575166666, returning width : 155 0:00:27.253979000 13078 0x82ad060 INFO python complexinterface.py:115:startDurationChanged: start/duration changed 0:00:27.254584000 13078 0x82ad060 DEBUG python singledecodebin.py:281:do_change_state:<pitivi+elements+singledecodebin+singledecodebin3> transition:<enum 27 of type GstStateChange> 0:00:27.254813000 13078 0x82ad060 DEBUG python singledecodebin.py:281:do_change_state:<pitivi+elements+singledecodebin+singledecodebin1> transition:<enum 27 of type GstStateChange>
I can confirm this. To reproduce on my side: 1- add 3 clips on the timeline 2- move #3 at position #2, and move it back at #3 again
Same thing in svn. It's in fact completely broken. This is a good example of something for which we need unit tests in order to test whether adding/removing/moving sources in timeline is correct.
Fixed along with unit tests to make sure it doesn't happen again. 2007-04-13 Edward Hervey <edward@fluendo.com> * pitivi/timeline/composition.py: Adjust the new position of the source when moving it further in time only. Fixes #416702 * tests/test_timeline_composition.py: Unit tests for composition.moveSource().