Stop freeing memory twice, also clear signs correctly

This commit is contained in:
Simon Robertshaw
2012-01-27 22:01:22 +00:00
parent 07525180c2
commit 58ba7f8800
3 changed files with 13 additions and 7 deletions

View File

@@ -25,7 +25,9 @@ PreviewView::PreviewView():
v->c->Exit(); v->c->Exit();
} }
}; };
openButton = new ui::Button(ui::Point(0, Size.Y-16), ui::Point(100, 16), "Open"); openButton = new ui::Button(ui::Point(0, Size.Y-16), ui::Point(75, 16), "Open");
openButton->SetAlignment(AlignLeft, AlignMiddle);
openButton->SetIcon(IconOpen);
openButton->SetActionCallback(new OpenAction(this)); openButton->SetActionCallback(new OpenAction(this));
AddComponent(openButton); AddComponent(openButton);
@@ -33,7 +35,7 @@ PreviewView::PreviewView():
saveNameLabel->SetAlignment(AlignLeft, AlignBottom); saveNameLabel->SetAlignment(AlignLeft, AlignBottom);
AddComponent(saveNameLabel); AddComponent(saveNameLabel);
authorDateLabel = new ui::Label(ui::Point(5, (YRES/2)+5+16), ui::Point(100, 16), ""); authorDateLabel = new ui::Label(ui::Point(5, (YRES/2)+5+14), ui::Point(100, 16), "");
authorDateLabel->SetAlignment(AlignLeft, AlignBottom); authorDateLabel->SetAlignment(AlignLeft, AlignBottom);
AddComponent(authorDateLabel); AddComponent(authorDateLabel);
} }
@@ -52,6 +54,7 @@ void PreviewView::OnDraw()
g->draw_image(savePreview->Data, (Position.X+1)+(((XRES/2)-savePreview->Size.X)/2), (Position.Y+1)+(((YRES/2)-savePreview->Size.Y)/2), savePreview->Size.X, savePreview->Size.Y, 255); g->draw_image(savePreview->Data, (Position.X+1)+(((XRES/2)-savePreview->Size.X)/2), (Position.Y+1)+(((YRES/2)-savePreview->Size.Y)/2), savePreview->Size.X, savePreview->Size.Y, 255);
} }
g->drawrect(Position.X, Position.Y, XRES/2, YRES/2, 255, 255, 255, 100); g->drawrect(Position.X, Position.Y, XRES/2, YRES/2, 255, 255, 255, 100);
g->draw_line(Position.X+XRES/2, Position.Y, Position.X+XRES/2, Position.Y+Size.Y, 255, 255, 255, XRES+BARSIZE);
} }
void PreviewView::OnMouseDown(int x, int y, unsigned button) void PreviewView::OnMouseDown(int x, int y, unsigned button)
@@ -66,10 +69,12 @@ void PreviewView::NotifySaveChanged(PreviewModel * sender)
if(save) if(save)
{ {
saveNameLabel->SetText(save->name); saveNameLabel->SetText(save->name);
authorDateLabel->SetText("\bgAuthor:\bw " + save->userName + " \bgDate:\bw ");
} }
else else
{ {
saveNameLabel->SetText(""); saveNameLabel->SetText("");
authorDateLabel->SetText("");
} }
} }
@@ -89,7 +94,5 @@ void PreviewView::NotifyPreviewChanged(PreviewModel * sender)
} }
PreviewView::~PreviewView() { PreviewView::~PreviewView() {
delete openButton;
delete saveNameLabel;
} }

View File

@@ -12,10 +12,9 @@ public:
OpenCallback(SearchController * cc_) { cc = cc_; } OpenCallback(SearchController * cc_) { cc = cc_; }
virtual void ControllerExit() virtual void ControllerExit()
{ {
if(cc->activePreview->GetDoOpen()) if(cc->activePreview->GetDoOpen() && cc->activePreview->GetSave())
{ {
cc->searchModel->SetLoadedSave(new Save(*(cc->activePreview->GetSave()))); cc->searchModel->SetLoadedSave(new Save(*(cc->activePreview->GetSave())));
cc->Exit();
} }
} }
}; };
@@ -48,6 +47,10 @@ void SearchController::Update()
{ {
delete activePreview; delete activePreview;
activePreview = NULL; activePreview = NULL;
if(searchModel->GetLoadedSave())
{
Exit();
}
} }
} }

View File

@@ -861,7 +861,7 @@ void Simulation::clear_sim(void)
{ {
int i, x, y; int i, x, y;
if(signs) if(signs)
memset(signs, 0, sizeof(signs)); memset(signs, 0, sizeof(sign)*MAXSIGNS);
memset(bmap, 0, sizeof(bmap)); memset(bmap, 0, sizeof(bmap));
memset(emap, 0, sizeof(emap)); memset(emap, 0, sizeof(emap));
memset(parts, 0, sizeof(Particle)*NPART); memset(parts, 0, sizeof(Particle)*NPART);