QmlProfiler: Convert the render pass state into a pure interface

Like that we don't have to expose any private members and we don't have
to care about QSGNodes we'll never create in a render pass.

Change-Id: I4e71da24c85de8f8f73d58fc2e76dc5e82ee31ae
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
This commit is contained in:
Ulf Hermann
2014-12-09 12:44:23 +01:00
parent 35204e1147
commit 2b143cf810
7 changed files with 108 additions and 54 deletions

View File

@@ -47,24 +47,34 @@ QSGSimpleRectNode *createSelectionNode()
return selectionNode;
}
struct TimelineSelectionRenderPassState : public TimelineRenderPass::State {
QSGSimpleRectNode *m_expandedOverlay;
QSGSimpleRectNode *m_collapsedOverlay;
QSGNode *expandedOverlay() const { return m_expandedOverlay; }
QSGNode *collapsedOverlay() const { return m_collapsedOverlay; }
};
TimelineRenderPass::State *TimelineSelectionRenderPass::update(const TimelineRenderer *renderer,
const TimelineRenderState *parentState, State *state, int firstIndex, int lastIndex,
const TimelineRenderState *parentState, State *oldState, int firstIndex, int lastIndex,
bool stateChanged, qreal spacing) const
{
Q_UNUSED(stateChanged);
if (state == 0)
state = new TimelineRenderPass::State;
TimelineSelectionRenderPassState *state;
if (state->expandedOverlay == 0) {
state->expandedOverlay = createSelectionNode();
state->collapsedOverlay = createSelectionNode();
if (oldState == 0) {
state = new TimelineSelectionRenderPassState;
state->m_expandedOverlay = createSelectionNode();
state->m_collapsedOverlay = createSelectionNode();
} else {
state = static_cast<TimelineSelectionRenderPassState *>(oldState);
}
const TimelineModel *model = renderer->model();
QSGSimpleRectNode *selectionNode = static_cast<QSGSimpleRectNode *>(model->expanded() ?
state->expandedOverlay :
state->collapsedOverlay);
state->m_expandedOverlay :
state->m_collapsedOverlay);
QSGSimpleRectNode *child = static_cast<QSGSimpleRectNode *>(selectionNode->firstChild());
int selectedItem = renderer->selectedItem();