After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 613960 - Dragging an SVG to the timeline fails
Dragging an SVG to the timeline fails
Status: RESOLVED FIXED
Product: pitivi
Classification: Other
Component: Timeline
Git
Other Linux
: Normal normal
: 0.14
Assigned To: Pitivi maintainers
Pitivi maintainers
Depends on:
Blocks:
 
 
Reported: 2010-03-25 21:35 UTC by Chris Ball
Modified: 2010-10-01 11:55 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Chris Ball 2010-03-25 21:35:04 UTC
Hi,

When I drag a movie from the clip library to the timeline, _padEventCb() fires and sets self.pending_newsegment to something useful.

When I drag a static SVG file from the clip library to the timeline, _padEventCb() is not called for some reason, and so self.pending_newsegment is not set to anything other than the "False" value that it was initialized with.  We then see various tracebacks including:


Traceback (most recent call last):
  • File "pitivi/elements/singledecodebin.py", line 322 in _padBlockedCb
    self._srcpad.push_event(self.pending_newsegment)
TypeError: GstPad.push_event() argument 1 must be gst.Event, not bool

---

Traceback (most recent call last):
  File "pitivi/timeline/track.py", line 991, in _videoInputPriorityChangedCb
    mixer.update_priority(pad, priority)
  File "pitivi/elements/mixer.py", line 148, in update_priority
    a,b,c,sinkpad = self.inputs[pad.get_name()]
AttributeError: 'NoneType' object has no attribute 'get_name'

---

ERROR [25178] [0x7faad9055700] "<Pipeline at 0x2336450>"        pipeline          Mar 25 17:23:33      _errorObject: error from /GnlSource:gnlsource: VideoTestSourceFactory47/GstBin:bin49/GstVideoTestSrc:videotestsrc19 (__main__.GstVideoTestSrc): GStreamer encountered a general stream error. (gstbasesrc.c(2507): gst_base_src_loop (): /GstPipeline:pipeline0/GstBin:bin0/GnlComposition:gnlcomposition0/GnlSource:gnlsource: VideoTestSourceFactory47/GstBin:bin49/GstVideoTestSrc:videotestsrc19:
streaming task paused, reason not-linked (-1)) (pitivi/log/loggable.py:30)
Comment 1 Chris Ball 2010-03-25 21:36:48 UTC
(Oh -- I'm running Git master as of today, which is fad58f95e..)
Comment 2 Chris Ball 2010-03-25 21:50:46 UTC
Well, this is weird.

When I drag a non-SVG movie to the timeline, nothing happens until I release the drag.  When I release the drag, we go to _blockPad(), register _padEventCb(), _padEventCb() fires, we store the pending_newsegment, we get to _padBlockedCb() with blocked == False, and we push the newsegment event to the pad.

When I drag an SVG to the timeline, as soon as my drag hits the timeline, even though I haven't let go of the mouse button yet, _blockPad() fires.  _padEventCb() doesn't get called, but _padBlockedCb() does, first with blocked == True and then with blocked == False, and at that point it attempts to push pending_newsegment, which hasn't been assigned yet and is still False because _padEventCb() (which would assign it) was never called.

So, to try and be more precise:  when you drag an SVG to the timeline, everything happens while you're still dragging rather than when you've stopped, _padEventCb() is not called for unknown reasons, and so self.pending_newsegment is never set and we crash.
Comment 3 Jean-François Fortin Tam 2010-09-16 00:19:41 UTC
Getting this now:

Traceback (most recent call last):
  • File "pitivi/elements/singledecodebin.py", line 323 in _padBlockedCb
    self._srcpad.push_event(self.pending_newsegment)
TypeError: GstPad.push_event() argument 1 must be gst.Event, not bool

Comment 4 Alessandro Decina 2010-10-01 11:55:09 UTC
commit 239e2fde2ea77db2c5a56afdd80badae5147b88d
Author: Alessandro Decina <alessandro.d@gmail.com>
Date:   Fri Oct 1 13:52:55 2010 +0200

    singledecodebin: initialize pending_newsegment to None. Fixes #613960.