- attempt to fix some of the crashes when clicking multiple things

This commit is contained in:
Mark Vejvoda 2011-04-24 06:10:30 +00:00
parent 1f3d97dbe1
commit e8897552de
2 changed files with 11 additions and 7 deletions

View File

@ -66,7 +66,7 @@ MenuStateMods::MenuStateMods(Program *program, MainMenu *mainMenu) :
Config &config = Config::getInstance(); Config &config = Config::getInstance();
modPreviewImage = NULL; modPreviewImage = NULL;
displayModPreviewImage = false; displayModPreviewImage.clear();
ftpClientThread = NULL; ftpClientThread = NULL;
selectedTechName = ""; selectedTechName = "";
@ -1651,7 +1651,7 @@ string MenuStateMods::getPreviewImageFileForMod(const ModInfo *modInfo) {
} }
void MenuStateMods::showDesription(const ModInfo *modInfo) { void MenuStateMods::showDesription(const ModInfo *modInfo) {
displayModPreviewImage = false; //displayModPreviewImage = false;
modInfoSelected = *modInfo; modInfoSelected = *modInfo;
string modText = modInfo->description; string modText = modInfo->description;
@ -1681,7 +1681,8 @@ void MenuStateMods::showDesription(const ModInfo *modInfo) {
MutexSafeWrapper safeMutexFTPProgress((ftpClientThread != NULL ? ftpClientThread->getProgressMutex() : NULL),mutexOwnerId); MutexSafeWrapper safeMutexFTPProgress((ftpClientThread != NULL ? ftpClientThread->getProgressMutex() : NULL),mutexOwnerId);
if(ftpClientThread != NULL && ftpClientThread->getProgressMutex() != NULL) ftpClientThread->getProgressMutex()->setOwnerId(mutexOwnerId); if(ftpClientThread != NULL && ftpClientThread->getProgressMutex() != NULL) ftpClientThread->getProgressMutex()->setOwnerId(mutexOwnerId);
if(fileFTPProgressList.find(tempImage) == fileFTPProgressList.end()) { if(fileFTPProgressList.find(tempImage) == fileFTPProgressList.end()) {
displayModPreviewImage = true; //displayModPreviewImage = true;
displayModPreviewImage[tempImage] = true;
} }
safeMutexFTPProgress.ReleaseLock(); safeMutexFTPProgress.ReleaseLock();
} }
@ -1769,7 +1770,9 @@ void MenuStateMods::render() {
renderer.renderButton(&buttonRemoveScenario); renderer.renderButton(&buttonRemoveScenario);
renderer.renderLabel(&modDescrLabel); renderer.renderLabel(&modDescrLabel);
if(displayModPreviewImage == true) { string tempImage = getPreviewImageFileForMod(&modInfoSelected);
if(displayModPreviewImage.find(tempImage) != displayModPreviewImage.end() &&
displayModPreviewImage[tempImage] == true) {
if(modPreviewImage == NULL) { if(modPreviewImage == NULL) {
string tempImage = getPreviewImageFileForMod(&modInfoSelected); string tempImage = getPreviewImageFileForMod(&modInfoSelected);
@ -1909,7 +1912,7 @@ void MenuStateMods::render() {
CoreData::getInstance().getDisplayFontSmall(), CoreData::getInstance().getDisplayFontSmall(),
185,progressLabelPrefix,false); 185,progressLabelPrefix,false);
yLocation -= 10; yLocation -= 14;
} }
} }
safeMutexFTPProgress.ReleaseLock(); safeMutexFTPProgress.ReleaseLock();
@ -2069,7 +2072,8 @@ void MenuStateMods::FTPClient_CallbackEvent(string itemName,
//printf("### downloaded file [%s] result = %d\n",itemName.c_str(),result.first); //printf("### downloaded file [%s] result = %d\n",itemName.c_str(),result.first);
if(result.first == ftp_crt_SUCCESS) { if(result.first == ftp_crt_SUCCESS) {
displayModPreviewImage = true; //displayModPreviewImage = true;
displayModPreviewImage[itemName] = true;
} }
// else { // else {
// curl_version_info_data *curlVersion= curl_version_info(CURLVERSION_NOW); // curl_version_info_data *curlVersion= curl_version_info(CURLVERSION_NOW);

View File

@ -120,7 +120,7 @@ private:
GraphicLabel modDescrLabel; GraphicLabel modDescrLabel;
Texture2D *modPreviewImage; Texture2D *modPreviewImage;
ModInfo modInfoSelected; ModInfo modInfoSelected;
bool displayModPreviewImage; map<string,bool> displayModPreviewImage;
int keyButtonsToRender; int keyButtonsToRender;
int keyButtonsYBase; int keyButtonsYBase;