From 2ea1a34f981fec971057c4df23791e3cf70a1b0c Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Thu, 5 Aug 2010 07:38:02 +0000 Subject: Theme Editor: Stopped bug that caused segfault if SBS element was moved from within a WPS preview git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27712 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/models/parsetreemodel.cpp | 17 +++++++++++------ utils/themeeditor/models/parsetreemodel.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'utils/themeeditor') diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index f83443a..e30d0be 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp @@ -35,7 +35,7 @@ #include ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): - QAbstractItemModel(parent) + QAbstractItemModel(parent), sbsModel(0) { this->tree = skin_parse(document); @@ -54,6 +54,8 @@ ParseTreeModel::~ParseTreeModel() delete root; if(tree) skin_free_tree(tree); + if(sbsModel) + sbsModel->deleteLater(); } QString ParseTreeModel::genCode() @@ -324,19 +326,22 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, { QFile sbs(sbsFile); sbs.open(QFile::ReadOnly | QFile::Text); - ParseTreeModel sbsModel(QString(sbs.readAll()).toAscii()); - if(sbsModel.root != 0) + if(sbsModel) + sbsModel->deleteLater(); + sbsModel = new ParseTreeModel(QString(sbs.readAll()).toAscii()); + + if(sbsModel->root != 0) { - RBRenderInfo sbsInfo(&sbsModel, project, doc, &settings, device, + RBRenderInfo sbsInfo(sbsModel, project, doc, &settings, device, sbsScreen); sbsScreen = new RBScreen(sbsInfo, remote); scene->addItem(sbsScreen); - sbsInfo = RBRenderInfo(&sbsModel, project, doc, &settings, + sbsInfo = RBRenderInfo(sbsModel, project, doc, &settings, device, sbsScreen); - sbsModel.root->render(sbsInfo); + sbsModel->root->render(sbsInfo); } } diff --git a/utils/themeeditor/models/parsetreemodel.h b/utils/themeeditor/models/parsetreemodel.h index 3c20a8e..2c762f3 100644 --- a/utils/themeeditor/models/parsetreemodel.h +++ b/utils/themeeditor/models/parsetreemodel.h @@ -81,6 +81,7 @@ public: private: ParseTreeNode* root; + ParseTreeModel* sbsModel; struct skin_element* tree; QGraphicsScene* scene; }; -- cgit v1.1