- added more NULL pointer checking to see if it helps deal with a potential timing issue during game shutdown (deleting cells issue)

This commit is contained in:
Mark Vejvoda 2010-07-03 05:20:03 +00:00
parent eda2e84aee
commit 087c6c87b1
3 changed files with 16 additions and 42 deletions

View File

@ -54,8 +54,7 @@ MainWindow::MainWindow()
, enabledGroup(ctHeight) , enabledGroup(ctHeight)
, fileModified(false) , fileModified(false)
, menuBar(NULL) , menuBar(NULL)
, panel(NULL) , panel(NULL) {
, timer(NULL) {
this->panel = new wxPanel(this, wxID_ANY); this->panel = new wxPanel(this, wxID_ANY);
@ -305,10 +304,6 @@ MainWindow::MainWindow()
lastPaintEvent.start(); lastPaintEvent.start();
//#ifndef WIN32
//timer = new wxTimer(this);
//timer->Start(250);
//#endif
glCanvas->SetFocus(); glCanvas->SetFocus();
} }
@ -333,18 +328,10 @@ void MainWindow::init(string fname) {
} }
void MainWindow::onClose(wxCloseEvent &event) { void MainWindow::onClose(wxCloseEvent &event) {
if(timer != NULL) timer->Stop();
if(timer != NULL) delete timer;
timer = NULL;
delete this; delete this;
} }
MainWindow::~MainWindow() { MainWindow::~MainWindow() {
if(timer != NULL) timer->Stop();
if(timer != NULL) delete timer;
timer = NULL;
delete glCanvas; delete glCanvas;
delete program; delete program;
} }
@ -378,14 +365,6 @@ void MainWindow::setExtension() {
} }
} }
void MainWindow::onTimer(wxTimerEvent &event) {
wxPaintEvent paintEvent;
onPaint(paintEvent);
#ifdef WIN32
//Update();
#endif
}
void MainWindow::onMouseDown(wxMouseEvent &event, int x, int y) { void MainWindow::onMouseDown(wxMouseEvent &event, int x, int y) {
if (event.LeftIsDown()) { if (event.LeftIsDown()) {
program->setUndoPoint(enabledGroup); program->setUndoPoint(enabledGroup);
@ -433,8 +412,8 @@ void MainWindow::onMouseMove(wxMouseEvent &event, int x, int y) {
} }
void MainWindow::onPaint(wxPaintEvent &event) { void MainWindow::onPaint(wxPaintEvent &event) {
if(lastPaintEvent.getMillis() < 100) { if(lastPaintEvent.getMillis() < 70) {
sleep(5); sleep(1);
return; return;
} }
lastPaintEvent.start(); lastPaintEvent.start();
@ -870,8 +849,6 @@ void MainWindow::uncheckRadius() {
BEGIN_EVENT_TABLE(MainWindow, wxFrame) BEGIN_EVENT_TABLE(MainWindow, wxFrame)
EVT_TIMER(-1, MainWindow::onTimer)
EVT_CLOSE(MainWindow::onClose) EVT_CLOSE(MainWindow::onClose)
// these are 'handled' by GlCanvas and funneled to these handlers // these are 'handled' by GlCanvas and funneled to these handlers

View File

@ -135,8 +135,6 @@ private:
wxPanel *panel; wxPanel *panel;
wxTimer *timer;
wxMenuBar *menuBar; wxMenuBar *menuBar;
wxMenu *menuFile; wxMenu *menuFile;
wxMenu *menuEdit; wxMenu *menuEdit;
@ -215,8 +213,6 @@ public:
void onToolPlayer(wxCommandEvent &event); void onToolPlayer(wxCommandEvent &event);
void onTimer(wxTimerEvent &event);
void change(int x, int y); void change(int x, int y);
void uncheckBrush(); void uncheckBrush();

View File

@ -479,19 +479,20 @@ void Window::handleMouseDown(SDL_Event event) {
int n = (int) button; int n = (int) button;
assert(n >= 0 && n < mbCount); assert(n >= 0 && n < mbCount);
if(n >= 0 && n < mbCount) {
if(ticks - lastMouseDown[n] < DOUBLECLICKTIME if(ticks - lastMouseDown[n] < DOUBLECLICKTIME
&& abs(lastMouseX[n] - event.button.x) < DOUBLECLICKDELTA && abs(lastMouseX[n] - event.button.x) < DOUBLECLICKDELTA
&& abs(lastMouseY[n] - event.button.y) < DOUBLECLICKDELTA) { && abs(lastMouseY[n] - event.button.y) < DOUBLECLICKDELTA) {
eventMouseDown(event.button.x, event.button.y, button); eventMouseDown(event.button.x, event.button.y, button);
eventMouseDoubleClick(event.button.x, event.button.y, button); eventMouseDoubleClick(event.button.x, event.button.y, button);
}
else {
eventMouseDown(event.button.x, event.button.y, button);
}
lastMouseDown[n] = ticks;
lastMouseX[n] = event.button.x;
lastMouseY[n] = event.button.y;
} }
else {
eventMouseDown(event.button.x, event.button.y, button);
}
lastMouseDown[n] = ticks;
lastMouseX[n] = event.button.x;
lastMouseY[n] = event.button.y;
} }
MouseButton Window::getMouseButton(int sdlButton) { MouseButton Window::getMouseButton(int sdlButton) {