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:
parent
bfc20975b0
commit
2ea1a34f98
2 changed files with 12 additions and 6 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue