[Qt-interest] QSlider::setValue() causing delays in QTimer event delivery

Josiah Bryan jbryan at productiveconcepts.com
Tue Feb 16 18:08:19 CET 2010


Hey all -

I've got an odd problem. See, I've got a video player (using ffmpeg as 
the backend) that sets a QTimer to trigger the next frame update.

I've also got a QSlider on the GUI that polls the video decoder for the 
clock position and updates a QSlider with the current video position via 
setValue. The polling of the video decoder is also done via a QTimer.

Alright, so that's the scenario - quite simple - video playing, and 
QSlider to show the position in the video. Easy, right?

The problem is that the call to QSlider::setValue() causes the video 
timer to take longer than requested by an extreme amount - often by 
100ms or longer (timer set for, say, 23ms, but timer actually takes 
144ms to deliver the signal.) This is very repeatable - after every 
setValue call, timer event is late.

Yes, I did narrow it down to the QSlider::setValue() call in the polling 
logic - with setValue() commented out, video never misses a beat. With 
setValue() called, the Video timer always is late right after the 
setValue() call.

I've tried calling QSlider::blockSignals(true) (and setting back to 
false after setValue) - but with no effect.

Any suggestions for troubleshooting this odd problem? I'm confused as to 
where to go from here or what to check.

System Info:
* Qt 4.6.1
* Linux - FC8
* Kernel 2.6.23.9-85.fc8
* KDE 3.5.8-7.fc8
* Quadro NVS 290 graphics, 4-head (Xinerama)
* NVidia Driver version 190.42

Thanks!
-josiah

--

-=-=-=-=-=-=-=-=-=-=-=-=-
Josiah Bryan
Productive Concepts, Inc.
jbryan at pciint.com
(765) 964-6009, ext. 224




More information about the Qt-interest-old mailing list