diff --git a/app/settings/mappingfetcher.cpp b/app/settings/mappingfetcher.cpp index ded9c9eb..bbd3ee29 100644 --- a/app/settings/mappingfetcher.cpp +++ b/app/settings/mappingfetcher.cpp @@ -32,8 +32,13 @@ void MappingFetcher::start() // Only download the file if it's newer than what we have QFileInfo existingFileInfo = Path::getCacheFileInfo("gamecontrollerdb.txt"); - if (existingFileInfo.exists() && existingFileInfo.size() > 0) { - request.setHeader(QNetworkRequest::IfModifiedSinceHeader, existingFileInfo.lastModified().toUTC()); + if (existingFileInfo.exists()) { + if (existingFileInfo.size() > 0) { + request.setHeader(QNetworkRequest::IfModifiedSinceHeader, existingFileInfo.lastModified().toUTC()); + } + else { + Path::deleteCacheFile("gamecontrollerdb.txt"); + } } // We'll get a callback when this is finished diff --git a/app/settings/mappingmanager.cpp b/app/settings/mappingmanager.cpp index 8835e844..e9a4bf6e 100644 --- a/app/settings/mappingmanager.cpp +++ b/app/settings/mappingmanager.cpp @@ -72,16 +72,26 @@ void MappingManager::applyMappings() if (!mappingData.isEmpty()) { int newMappings = SDL_GameControllerAddMappingsFromRW( SDL_RWFromConstMem(mappingData.constData(), mappingData.size()), 1); - if (newMappings < 0) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, - "Error loading gamepad mappings: %s", - SDL_GetError()); - } - else { + + if (newMappings > 0) { SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Loaded %d new gamepad mappings", newMappings); } + else { + if (newMappings < 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, + "Error loading gamepad mappings: %s", + SDL_GetError()); + } + else if (newMappings == 0) { + SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION, + "0 new mappings found in gamecontrollerdb.txt. Is it corrupt?"); + } + + // Try deleting the cached mapping list just in case it's corrupt + Path::deleteCacheFile("gamecontrollerdb.txt"); + } } else { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,