Undo loses the ordering of operations
@bens
Submitted by bens Assigned to Thibault Saunier @thiblahute
Description
I have found a severe bug in the undo behavior, easy to reproduce. Just add a clip to the timeline, drag the start point forward, and then click "Undo". The start point returns to its previous location, but the clip duration does not return to its original length.
After some experimentation and a whole lot of debug print statements, I believe that this bug is due to a loss of ordering of signals emitted by signalinterface.Signallable classes. I have noticed, for example, that if I do
x.property1 = 5
print "set property1"
x.property2 = 6
print "set property2"
return #To mainloop
Then the signal handlers connected to the signals associated with property1 and property2 are not called until after the return statement ... and are often called in the opposite order.
After looking at the Signallable code I have been unable to determine why calls to emit() do not trigger callbacks immediately. I would appreciate some help from someone who knows this code better.
Imported from https://bugzilla.gnome.org/show_bug.cgi?id=654323