void PaintLayerCompositor::updateIfNeededRecursive()
{
    FrameView* view = m_layoutView.frameView();
    if (view->shouldThrottleRendering())
        return;

    for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); child; child = child->tree().nextSibling()) {
        if (!child->isLocalFrame())
            continue;
        LocalFrame* localFrame = toLocalFrame(child);
        // It's possible for trusted Pepper plugins to force hit testing in situations where
        // the frame tree is in an inconsistent state, such as in the middle of frame detach.
        // TODO(bbudge) Remove this check when trusted Pepper plugins are gone.
        if (localFrame->document()->isActive())
            localFrame->contentLayoutObject()->compositor()->updateIfNeededRecursive();
    }

    TRACE_EVENT0("blink", "PaintLayerCompositor::updateIfNeededRecursive");

    ASSERT(!m_layoutView.needsLayout());

    ScriptForbiddenScope forbidScript;

    // FIXME: enableCompositingModeIfNeeded can trigger a CompositingUpdateRebuildTree,
    // which asserts that it's not InCompositingUpdate.
    enableCompositingModeIfNeeded();

    if (m_needsUpdateDescendantDependentFlags) {
        updateDescendantDependentFlagsForEntireSubtree(*rootLayer());
        m_needsUpdateDescendantDependentFlags = false;
    }

    m_layoutView.commitPendingSelection();

    lifecycle().advanceTo(DocumentLifecycle::InCompositingUpdate);
    updateIfNeeded();
    lifecycle().advanceTo(DocumentLifecycle::CompositingClean);

    DocumentAnimations::updateCompositorAnimations(m_layoutView.document());

    m_layoutView.frameView()->scrollableArea()->updateCompositorScrollAnimations();
    if (const FrameView::ScrollableAreaSet* animatingScrollableAreas = m_layoutView.frameView()->animatingScrollableAreas()) {
        for (ScrollableArea* scrollableArea : *animatingScrollableAreas)
            scrollableArea->updateCompositorScrollAnimations();
    }

#if ENABLE(ASSERT)
    ASSERT(lifecycle().state() == DocumentLifecycle::CompositingClean);
    assertNoUnresolvedDirtyBits();
    for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); child; child = child->tree().nextSibling()) {
        if (!child->isLocalFrame())
            continue;
        LocalFrame* localFrame = toLocalFrame(child);
        if (localFrame->shouldThrottleRendering())
            continue;
        localFrame->contentLayoutObject()->compositor()->assertNoUnresolvedDirtyBits();
    }
#endif
}
Esempio n. 2
0
EditorGLWidget::EditorGLWidget(QWidget *parent)
    : QGLWidget(parent)
{
    setMouseTracking(true);
    show_grid_ = false;
    radius_ = 0;
    mousex_ = 0;
    mousey_ = 0;
    camera_ = 0;
    
    parties_ = NULL;
    pick_mode_ = false;
    parties_mode_ = false;
    new_mutation_ = true;
    
    connect(&timer_, SIGNAL(timeout()), this, SLOT(updateIfNeeded()));
    timer_.start(1000/25);
}
Esempio n. 3
0
CC3Vector* CC3BillboardBoundingBoxArea::getVertices()
{
	updateIfNeeded();
	return m_vertices;
}
Esempio n. 4
0
CC3Plane* CC3BillboardBoundingBoxArea::getPlanes()
{
	updateIfNeeded();
	return m_planes;
}
Esempio n. 5
0
CC3Vector* CC3Frustum::getVertices()
{
    updateIfNeeded();
    return _vertices;
}
Esempio n. 6
0
CC3Plane* CC3Frustum::getPlanes()
{
    updateIfNeeded();
    return _planes;
}