1. 10 Nov, 2014 - 1 commit
  2. 22 Oct, 2014 - 1 commit
    • Laszlo Agocs's avatar
      Fix disfunctional QQuickRenderControl with multiple screens · 9b965f3f
      Laszlo Agocs authored
      
      Having a retina and non-retina screen connected resulted in getting
      no output from QQuickRenderControl and QQuickWidget on the
      non-retina screen.
      
      This is caused by the fact that Quick is blindly calling
      QWindow::devicePixelRatio(). This approach is wrong when using
      QQuickRenderControl since the QQuickWindow does not have an actual
      native window and so devicePixelRatio() merely returns some default value
      which will definitely be wrong for one of the screens.
      
      The patch fixes the problem by introducing
      QQuickWindow::effectiveDevicePixelRatio(), which, via
      QQuickRenderControl::renderWindowFor, supports the redirected case too.
      
      Task-number: QTBUG-42114
      Change-Id: I057e01f0a00758dde438fc9b10af3a435b06bb0b
      Reviewed-by: default avatarPaul Olav Tvete <paul.tvete@digia.com>
      9b965f3f
  3. 24 Sep, 2014 - 1 commit
    • Gunnar Sletta's avatar
      Fix cleanup of non-threaded render loops. · c2706491
      Gunnar Sletta authored
      
      They would unconditionally call cleanupNodesOnShutdown on hide(), but
      QQuickWindow::sceneGraphInvalidated would only be emitted if this was
      the last window being hidden, leading to an inconsistent state in the
      application.
      
      Since the non-threaded render loops do not support releasing resources
      (there is one OpenGL context and one QSGRenderContext shared between
      all windows) we delay cleanup until the window is destroyed.
      
      This change also make the render loops track the windows until they
      are destroyed, similar to what the threaded one does. The purpose of
      this is to, in the case of dangling windows, only trigger invalidation
      of the scene graph when the last QQuickWindow is destroyed through
      QSGRenderLoop::cleanup().
      
      Task-number: QTBUG-41210
      Change-Id: I7e12a4f726ebb3e7935c822b6046abb3590c583a
      Reviewed-by: default avatarUlf Hermann <ulf.hermann@digia.com>
      Reviewed-by: default avatarLaszlo Agocs <laszlo.agocs@digia.com>
      c2706491
  4. 11 Sep, 2014 - 1 commit
    • Ulf Hermann's avatar
      Select specific features to be recorded when profiling QML · 1de6e7b8
      Ulf Hermann authored
      
      Some features, like the memory profiler, create huge amounts of data.
      Often enough, we're not actually interested in all the data available
      from the profiler and collecting it all can lead to excessive memory
      consumption. This change enables us to optionally turn various aspects
      of QML profiling off.
      
      Task-number: QTBUG-41118
      Change-Id: I7bb223414e24eb903124ffa6e0896af6ce974e49
      Reviewed-by: default avatarGunnar Sletta <gunnar@sletta.org>
      1de6e7b8
  5. 25 Aug, 2014 - 1 commit
  6. 05 Aug, 2014 - 1 commit
  7. 02 Jul, 2014 - 1 commit
  8. 01 Jul, 2014 - 1 commit
  9. 05 May, 2014 - 1 commit
  10. 25 Apr, 2014 - 1 commit
  11. 04 Apr, 2014 - 1 commit
  12. 20 Mar, 2014 - 1 commit
  13. 17 Mar, 2014 - 1 commit
    • Gunnar Sletta's avatar
      Fix potential crash during shutdown for QQuickWindows · 3f362cdf
      Gunnar Sletta authored
      
      The cleanup() function would deregister the render loop from all
      windows the render loop had seen, but the render loop doesn't see
      windows until the window gets a showEvent and for some implementations
      it was removed as a result of hideEvent. So add explicit tracking to
      QSGRenderLoop which is managed by QQuickWindow's constructor and
      destructor. With this, we no longer need the lists from the
      subclasses, so these functions are removed again.
      
      Change-Id: I05e5507ad57e23c80bacd99752654cc7d0890dc1
      Reviewed-by: default avatarPaul Olav Tvete <paul.tvete@digia.com>
      3f362cdf
  14. 14 Mar, 2014 - 1 commit
    • Gunnar Sletta's avatar
      Make sure QSGRenderLoop is cleaned up cleanly. · 1656d600
      Gunnar Sletta authored
      e13547c5
      
       used a global static to clean
      up QSGRenderLoop which is triggered very late, potentially after
      SG backend API plugins have been unloaded. This results in crashes
      when used in combination with scenegraph-playgrounds's customcontext.
      
      Partially revert the change and instead clean up at the time of
      QApp::aboutToQuit and make sure we also disconnect cleanly from
      all QQuickWindows.
      
      This change also ensures that QSGRenderLoop::windowDestroyed() gets
      called for all QQuickWindows registered with the render loop. This
      ensures that rendering stops and that scene graph nodes and resources
      will be cleaned up regardless of whether the application has
      remembered to delete the window or not. This is a good thing as it
      makes the scene graph shutdown a bit cleaner.
      
      Change-Id: I9cb9093979f8eac05542f118a6ff9cfe5c84f745
      Reviewed-by: default avatarPaul Olav Tvete <paul.tvete@digia.com>
      1656d600
  15. 13 Mar, 2014 - 1 commit
  16. 04 Mar, 2014 - 1 commit
  17. 25 Feb, 2014 - 1 commit
    • Gunnar Sletta's avatar
      Introduced a few more signals to QQuickWindow. · aaea2370
      Gunnar Sletta authored
      
      Also marked the new afterAnimation() signal as \since 5.3 and
      introduced proper revisioning on the new signals.
      
      [Changelog][QtQuick] Added QQuickWindow::afterSynchronizing(),
      openglContextCreated(), sceneGraphAboutToStop(). Useful for
      deeper integration with the rendering.
      
      Change-Id: I5532b310506c2432325595e55ef9307b8934abee
      Reviewed-by: default avatarLaszlo Agocs <laszlo.agocs@digia.com>
      aaea2370
  18. 21 Feb, 2014 - 1 commit
    • Laszlo Agocs's avatar
      Add an error signal to QQuickWindow · bbf1ec42
      Laszlo Agocs authored
      
      When nothing is connected to this signal, an error will be printed or,
      in case of Windows, a message box will be shown. If there is something
      connected, it is up to the application to handle the error.
      
      [ChangeLog] Added a new sceneGraphError() signal to QQuickWindow
      which applications can use to detect errors like OpenGL context creation
      failures and react in their own custom ways.
      
      Task-number: QTBUG-36138
      Change-Id: I33b1e5e0e3f25872af67c5bb5ae937e3470b25f3
      Reviewed-by: default avatarFriedemann Kleint <Friedemann.Kleint@digia.com>
      bbf1ec42
  19. 20 Feb, 2014 - 1 commit
  20. 15 Feb, 2014 - 1 commit
  21. 04 Feb, 2014 - 1 commit
  22. 22 Jan, 2014 - 2 commits
  23. 07 Jan, 2014 - 1 commit
  24. 12 Dec, 2013 - 1 commit
  25. 03 Dec, 2013 - 1 commit
  26. 19 Nov, 2013 - 1 commit
  27. 18 Nov, 2013 - 1 commit
  28. 01 Nov, 2013 - 1 commit
  29. 30 Oct, 2013 - 1 commit
    • Gunnar Sletta's avatar
      Use one render loop per QQuickWindow · 906d5c5c
      Gunnar Sletta authored
      
      See the task for the full reasoning behind this patch.
      
      The threaded renderloop has been refactored to have one window per
      thread. This is mostly a simplification of the current code path where
      for loops over multiple windows are turned into if (window).
      
      The QSGContext has been split into two classes, QSGRenderContext
      for which there is one per OpenGLContext.
      
      The rest of the patch is name changes and a couple of cleanups
      in the hopes of simplifying this change.
      
      Task-number: QTBUG-33993
      
      Change-Id: I31c81f9694d7da7474a72333169be38de62613c4
      Reviewed-by: default avatarSean Harmer <sean.harmer@kdab.com>
      906d5c5c
  30. 30 Sep, 2013 - 1 commit
  31. 07 Jun, 2013 - 1 commit
    • Alan Alpert's avatar
      Set incubation controller when a Window{} is loaded via QQmlApplicationEngine · 9d75626b
      Alan Alpert authored
      
      This was the one convenience that was lost when transitioning templates
      from QQuickView + Item{} to QQmlApplicationEngine + Window{}.
      
      As the default window incubation controller was tied to the first
      window's frameSwapped, we could easily run into a situation where
      a secondary window required incubation while the first window
      was idle. This would then starve the incubation controller. Instead
      make it so that the renderloop emits "timeToIncubate" once it
      is done with a renderpass over all windows, so the incubator
      gets to run once and exactly once per vsync when animating.
      
      The incubator logic was also flawed in that it could post
      a lot of events to itself as a result of incubatingObjectCountChanged
      and thus starve system events while processing incubation requests.
      Now we start a timer and don't start it again until we have
      completed an incubation pass.
      
      Task-number: QTBUG-31203
      Change-Id: Iea9e2c81efb46bb7875c70ccda0cdc4b3b3e58e7
      Reviewed-by: default avatarAlan Alpert <aalpert@blackberry.com>
      Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@digia.com>
      9d75626b
  32. 06 May, 2013 - 1 commit
  33. 24 Apr, 2013 - 1 commit
    • Gunnar Sletta's avatar
      Renderloop for Windows · 73d8bcda
      Gunnar Sletta authored
      
      The normal GUI thread render loop has several problems on windows.
      It does not do vsync animations and on some hardware, where the
      vsync delta is higher than the time it takes to fire a 16ms timer,
      the eventloop will always contain at least one event and we never
      return to processing non-client area events, like resize.
      
      Also, threaded OpenGL seems rather unstable, so the threaded renderer
      is not a stable option.
      
      So we introduce a windows based renderloop. It is fully cross platform
      but written to make the most out of the limitations which exist.
      
      The overall goal is:
        - vsync animations when allowed by the system. We get this by
          using an animation driver and advancing in sync with rendering
        - Keep system load low and allow for NC processing. The maybeUpdate
          function will start a short timer which will let the renderloop
          idle for few ms, allowing the eventloop to pick up system events.
          (this is similar to what the threaded renderer also does, btw)
      
      Change-Id: Ic192fd0ed7d5ecdaa2c887c08cbeb42c5de6b8a8
      Reviewed-by: default avatarFriedemann Kleint <Friedemann.Kleint@digia.com>
      Reviewed-by: default avatarSamuel Rødal <samuel.rodal@digia.com>
      73d8bcda