Merge remote-tracking branch 'origin/5.4' into dev
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Wed, 29 Oct 2014 09:48:54 +0000 (10:48 +0100)
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Wed, 29 Oct 2014 09:48:54 +0000 (10:48 +0100)
Conflicts:
src/quick/items/qquickaccessibleattached_p.h
src/quick/items/qquickwindow.cpp
src/quick/scenegraph/qsgthreadedrenderloop.cpp

Change-Id: I8bf07487a75f9d1b0d6efa5914dd06875fc9654d

14 files changed:
1  2 
src/particles/qquickparticlesystem.cpp
src/quick/items/qquickflickable.cpp
src/quick/items/qquickitem.cpp
src/quick/items/qquickitem_p.h
src/quick/items/qquickspriteengine.cpp
src/quick/items/qquickspritesequence.cpp
src/quick/items/qquickwindow.cpp
src/quick/items/qquickwindow.h
src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
src/quick/scenegraph/qsgcontext.cpp
src/quick/scenegraph/qsgrenderloop.cpp
src/quick/scenegraph/qsgthreadedrenderloop.cpp
src/quick/scenegraph/qsgwindowsrenderloop.cpp
src/quick/util/qquickanimatorjob.cpp

Simple merge
Simple merge
Simple merge
@@@ -364,22 -364,19 +364,21 @@@ void QQuickWindowPrivate::renderSceneGr
      animationController->advance();
      emit q->beforeRendering();
      runAndClearJobs(&beforeRenderingJobs);
 -    int fboId = 0;
 -    const qreal devicePixelRatio = q->effectiveDevicePixelRatio();
 -    renderer->setDeviceRect(QRect(QPoint(0, 0), size * devicePixelRatio));
 -    if (renderTargetId) {
 -        fboId = renderTargetId;
 -        renderer->setViewportRect(QRect(QPoint(0, 0), renderTargetSize));
 -    } else {
 -        renderer->setViewportRect(QRect(QPoint(0, 0), size * devicePixelRatio));
 -    }
 -    renderer->setProjectionMatrixToRect(QRect(QPoint(0, 0), size));
 -    renderer->setDevicePixelRatio(devicePixelRatio);
 +    if (!customRenderStage || !customRenderStage->render()) {
 +        int fboId = 0;
-         const qreal devicePixelRatio = q->devicePixelRatio();
++        const qreal devicePixelRatio = q->effectiveDevicePixelRatio();
 +        renderer->setDeviceRect(QRect(QPoint(0, 0), size * devicePixelRatio));
 +        if (renderTargetId) {
 +            fboId = renderTargetId;
 +            renderer->setViewportRect(QRect(QPoint(0, 0), renderTargetSize));
 +        } else {
 +            renderer->setViewportRect(QRect(QPoint(0, 0), size * devicePixelRatio));
 +        }
 +        renderer->setProjectionMatrixToRect(QRect(QPoint(0, 0), size));
-         renderer->setDevicePixelRatio(q->devicePixelRatio());
++        renderer->setDevicePixelRatio(devicePixelRatio);
  
 -    context->renderNextFrame(renderer, fboId);
 +        context->renderNextFrame(renderer, fboId);
 +    }
      emit q->afterRendering();
      runAndClearJobs(&afterRenderingJobs);
  }
Simple merge
Simple merge
@@@ -355,10 -370,9 +371,10 @@@ void QSGGuiThreadRenderLoop::renderWind
  
      if (profileFrames)
          renderTime = renderTimer.nsecsElapsed();
 +    Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame);
  
      if (data.grabOnly) {
-         grabContent = qt_gl_read_framebuffer(window->size() * window->devicePixelRatio(), false, false);
+         grabContent = qt_gl_read_framebuffer(window->size() * window->effectiveDevicePixelRatio(), false, false);
          data.grabOnly = false;
      }
  
@@@ -534,19 -544,20 +534,24 @@@ void QSGRenderThread::syncAndRender(
      qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "syncAndRender()";
  
      syncResultedInChanges = false;
 +    QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
  
 -    uint pending = pendingUpdate;
 +    bool repaintRequested = (pendingUpdate & RepaintRequest) || d->customRenderStage;
 +    bool syncRequested = pendingUpdate & SyncRequest;
 +    bool exposeRequested = (pendingUpdate & ExposeRequest) == ExposeRequest;
      pendingUpdate = 0;
  
 -    if (pending & SyncRequest) {
 +    if (syncRequested) {
          qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- updatePending, doing sync";
 -        sync(pending == ExposeRequest);
 +        sync(exposeRequested);
      }
+ #ifndef QSG_NO_RENDER_TIMING
+     if (profileFrames)
+         syncTime = threadTimer.nsecsElapsed();
+ #endif
++    Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame);
  
 -    if (!syncResultedInChanges && ((pending & RepaintRequest) == 0)) {
 +    if (!syncResultedInChanges && !repaintRequested) {
          qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- no changes, render aborted";
          int waitTime = vsyncDelta - (int) waitTimer.elapsed();
          if (waitTime > 0)
          return;
      }
  
-     if (profileFrames)
-         syncTime = threadTimer.nsecsElapsed();
-     Q_QUICK_SG_PROFILE_RECORD(QQuickProfiler::SceneGraphRenderLoopFrame);
      qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- rendering started";
  
 -    QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
  
      if (animatorDriver->isRunning()) {
          d->animationController->lock();
Simple merge