1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Robert Bieber 2010-08-05 07:38:02 +00:00
parent bfc20975b0
commit 2ea1a34f98
2 changed files with 12 additions and 6 deletions

View file

@ -35,7 +35,7 @@
#include <iostream> #include <iostream>
ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
QAbstractItemModel(parent) QAbstractItemModel(parent), sbsModel(0)
{ {
this->tree = skin_parse(document); this->tree = skin_parse(document);
@ -54,6 +54,8 @@ ParseTreeModel::~ParseTreeModel()
delete root; delete root;
if(tree) if(tree)
skin_free_tree(tree); skin_free_tree(tree);
if(sbsModel)
sbsModel->deleteLater();
} }
QString ParseTreeModel::genCode() QString ParseTreeModel::genCode()
@ -324,19 +326,22 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
{ {
QFile sbs(sbsFile); QFile sbs(sbsFile);
sbs.open(QFile::ReadOnly | QFile::Text); 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);
sbsScreen = new RBScreen(sbsInfo, remote); sbsScreen = new RBScreen(sbsInfo, remote);
scene->addItem(sbsScreen); scene->addItem(sbsScreen);
sbsInfo = RBRenderInfo(&sbsModel, project, doc, &settings, sbsInfo = RBRenderInfo(sbsModel, project, doc, &settings,
device, sbsScreen); device, sbsScreen);
sbsModel.root->render(sbsInfo); sbsModel->root->render(sbsInfo);
} }
} }

View file

@ -81,6 +81,7 @@ public:
private: private:
ParseTreeNode* root; ParseTreeNode* root;
ParseTreeModel* sbsModel;
struct skin_element* tree; struct skin_element* tree;
QGraphicsScene* scene; QGraphicsScene* scene;
}; };