QML2 in Qt 5.4 is broken



  • This is a duplicate-like post of the reported qt bug.

    Some people may have noticed increased speed in the qml2 applications by random coefficient on systems which has Qt5 >= 5.4.0.
    Briefly say, Qt developers broke source code compatibility between older Qt5 versions (less than 5.4.0) and newer versions (>= 5.4.0) but the Qt has just closed the bug without any sorry about what they did.

    The problem can be reproduced on any system which has Qt >= 5.4.0 installed in any QML2 application. Shortly, each qml Timer object, each animation now has increased speed, on my pc it is like 5x faster and my project works incorrect because, for example, in my project Timer object should do some stuff each 10 seconds but it does that stuff each 2 seconds which makes an error.

    The solution is really unacceptable because it is needs client-side modifications.
    First solution is to set environment variable QSG_RENDER_LOOP=basic before running application. So, to be able to run application which was actually successfully worked before we have an additional launcher script (which is not crossplatform because of unix shell's sh and windows bat at least). So, it needs non-crossplatform work client-side modifications just to be able to run NORMALLY.
    Next solution is to turn vsync=on on the client system that is really unacceptable - why should we tell the user what to do to run the application? Application should run normally without any client-side modifications.

    So, is here any one who can tell me why Qt developers just close the bugs instead of fixing it actually?
    For example, they could leave this variable handler old (in means of using basic value) and to provide c++ source code interface to change it. This would save backward compatibility. Otherwise, if they changed it from basic to threaded so they should have a c++ api to change it back and to save us of creating custom applications launchers which are using environment variable. For example like:

    QQmlEngine::setRenderLoop(QmlRenderLoop::Basic);

  • Lifetime Qt Champion

    Hi,

    This is a matter best discussed on the development mailing list. You'll find there Qt's developers/maintainers. This forum is more user oriented.



  • Note that you can call "setenv" in your app before creating your QApplication object which wouldn't require you to create different launcher scripts.



  • @jbache I know, but this is not a proper solution. We, then, could set each flag for Qt in setenv but we have a normal API like static methods among others. So they have to create a way to set this through normal Qt interface but not from the environment only. I am very tired of this hacky-like code.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.