# HG changeset patch # User Chris Cannam # Date 1291125110 0 # Node ID a7dbc8e5b69d555acc5de11c3881c54d22c27360 # Parent a4044b4b3e35945500de1f7aebd21a95e4e66cbb * Minor adjustment to scene lifecycle, delete old scene before creating new one to use less memory &c diff -r a4044b4b3e35 -r a7dbc8e5b69d historywidget.cpp --- a/historywidget.cpp Tue Nov 30 13:51:27 2010 +0000 +++ b/historywidget.cpp Tue Nov 30 13:51:50 2010 +0000 @@ -122,10 +122,15 @@ void HistoryWidget::addChangesets(Changesets csets) { m_newIds.clear(); + + if (csets.empty()) return; + foreach (Changeset *cs, csets) { m_newIds.insert(cs->id()); } + DEBUG << "addChangesets: " << csets.size() << " new changesets" << endl; + csets << m_changesets; m_changesets = csets; } @@ -137,6 +142,18 @@ ChangesetScene *scene = new ChangesetScene(); ChangesetItem *tipItem = 0; + QGraphicsScene *oldScene = m_panned->scene(); + + // detach m_uncommitted from old scene so it doesn't get deleted + if (oldScene && (m_uncommitted->scene() == oldScene)) { + oldScene->removeItem(m_uncommitted); + } + + m_panned->setScene(0); + m_panner->setScene(0); + + delete oldScene; + if (!m_changesets.empty()) { Grapher g(scene); try { @@ -149,12 +166,6 @@ << m_changesets[0]->id() << endl; } - QGraphicsScene *oldScene = m_panned->scene(); - - // detach m_uncommitted from old scene so it doesn't get deleted - if (oldScene && (m_uncommitted->scene() == oldScene)) { - oldScene->removeItem(m_uncommitted); - } if (m_uncommittedVisible) { scene->addItem(m_uncommitted); } @@ -162,8 +173,6 @@ m_panned->setScene(scene); m_panner->setScene(scene); - if (oldScene) delete oldScene; - updateNewAndCurrentItems(); if (m_uncommittedVisible) {