diff --git a/src/client/Client.cpp b/src/client/Client.cpp index 5ecb8ac00..116fa02d3 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -371,7 +371,7 @@ SaveFile * Client::GetStamp(string stampID) stampFile.read((char *)tempData, fileSize); stampFile.close(); - SaveFile * file = new SaveFile(string(STAMPS_DIR PATH_SEP + stampID + ".stm").c_str()); + SaveFile * file = new SaveFile(string(stampID).c_str()); GameSave * tempSave = new GameSave((char *)tempData, fileSize); file->SetGameSave(tempSave); return file; @@ -388,7 +388,12 @@ void Client::DeleteStamp(string stampID) { if((*iterator) == stampID) { - remove(string(STAMPS_DIR PATH_SEP + stampID + ".stm").c_str()); + stringstream stampFilename; + stampFilename << STAMPS_DIR; + stampFilename << PATH_SEP; + stampFilename << stampID; + stampFilename << ".stm"; + remove(stampFilename.str().c_str()); stampIDs.erase(iterator); return; } diff --git a/src/localbrowser/LocalBrowserController.cpp b/src/localbrowser/LocalBrowserController.cpp index 47f02bb12..28a7c648f 100644 --- a/src/localbrowser/LocalBrowserController.cpp +++ b/src/localbrowser/LocalBrowserController.cpp @@ -65,8 +65,9 @@ void LocalBrowserController::removeSelectedC() class RemoveSavesTask : public Task { std::vector saves; + LocalBrowserController * c; public: - RemoveSavesTask(std::vector saves_) { saves = saves_; } + RemoveSavesTask(LocalBrowserController * c, std::vector saves_) : c(c) { saves = saves_; } virtual bool doWork() { for(int i = 0; i < saves.size(); i++) @@ -80,10 +81,18 @@ void LocalBrowserController::removeSelectedC() } return true; } + virtual void after() + { + c->RefreshSavesList(); + } }; std::vector selected = browserModel->GetSelected(); - new TaskWindow("Removing saves", new RemoveSavesTask(selected)); + new TaskWindow("Removing saves", new RemoveSavesTask(this, selected)); +} + +void LocalBrowserController::RefreshSavesList() +{ ClearSelection(); browserModel->UpdateSavesList(browserModel->GetPageNum()); } diff --git a/src/localbrowser/LocalBrowserController.h b/src/localbrowser/LocalBrowserController.h index 233ff9c0f..1f81ab6f7 100644 --- a/src/localbrowser/LocalBrowserController.h +++ b/src/localbrowser/LocalBrowserController.h @@ -27,6 +27,7 @@ public: void removeSelectedC(); void ClearSelection(); void Selected(std::string stampID, bool selected); + void RefreshSavesList(); void OpenSave(SaveFile * stamp); void SetStamp(); void NextPage(); diff --git a/src/tasks/Task.cpp b/src/tasks/Task.cpp index b2ded163c..8ab0dedcd 100644 --- a/src/tasks/Task.cpp +++ b/src/tasks/Task.cpp @@ -86,16 +86,15 @@ void Task::Poll() notifyStatusMain(); } - if(done) - { - pthread_join(doWorkThread, NULL); - pthread_mutex_destroy(&taskMutex); - after(); - } - if(newDone!=done) { done = newDone; + + pthread_join(doWorkThread, NULL); + pthread_mutex_destroy(&taskMutex); + + after(); + notifyDoneMain(); } }