From 078f3bfbdaa3800aa8ff85a95c8da183d1b5ba4f Mon Sep 17 00:00:00 2001 From: pouillot Date: Wed, 2 Feb 2011 22:36:28 +0000 Subject: [PATCH] Re #313 (Split Windows installer) Make SD work with only 1 track git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@3303 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 9ef8ae39e52fb214074d1963d4cef11e119c41f8 Former-commit-id: cc0f1bd16b865c21de062f56b88b2e6371e0587e --- src/libs/raceengineclient/racemanmenu.cpp | 2 +- src/libs/tgfdata/racemanagers.cpp | 7 ++++--- src/libs/tgfdata/tracks.cpp | 5 +++-- src/libs/tgfdata/tracks.h | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libs/raceengineclient/racemanmenu.cpp b/src/libs/raceengineclient/racemanmenu.cpp index fdc04f9e..a54ad77c 100644 --- a/src/libs/raceengineclient/racemanmenu.cpp +++ b/src/libs/raceengineclient/racemanmenu.cpp @@ -136,7 +136,7 @@ reOnRaceDataChanged() { const GfRaceManager* pRaceMan = ReGetRace()->getManager(); - // Get the current track. + // Get the currently selected track for the race (should never fail, unless no track at all). const GfTrack* pTrack = ReGetRace()->getTrack(); // Set title (race type + track name). diff --git a/src/libs/tgfdata/racemanagers.cpp b/src/libs/tgfdata/racemanagers.cpp index 92421cf6..2e31278e 100755 --- a/src/libs/tgfdata/racemanagers.cpp +++ b/src/libs/tgfdata/racemanagers.cpp @@ -316,9 +316,10 @@ GfTrack* GfRaceManager::getCurrentEventTrack() { GfTrack* pTrack; - // If the current event track is not usable, step to the next event (an so on). - while (!(pTrack = GfTracks::self()->getTrack(_vecEventTrackIds[_nCurrentEventInd])) - && stepToNextEvent()); + // If the current event track is not usable, take the first usable one. + pTrack = GfTracks::self()->getTrack(_vecEventTrackIds[_nCurrentEventInd]); + if (!pTrack) + pTrack = GfTracks::self()->getFirstUsableTrack(); return pTrack; } diff --git a/src/libs/tgfdata/tracks.cpp b/src/libs/tgfdata/tracks.cpp index 25f32b17..339da345 100755 --- a/src/libs/tgfdata/tracks.cpp +++ b/src/libs/tgfdata/tracks.cpp @@ -297,8 +297,9 @@ GfTrack* GfTracks::getFirstUsableTrack(const std::string& strCatId, nSearchDir = nSearchDir > 0 ? +1 : -1; // Check category. - if (std::find(_pPrivate->vecCatIds.begin(), _pPrivate->vecCatIds.end(), strCatId) - == _pPrivate->vecCatIds.end()) + if (!strCatId.empty() + && std::find(_pPrivate->vecCatIds.begin(), _pPrivate->vecCatIds.end(), strCatId) + == _pPrivate->vecCatIds.end()) { GfLogError("GfTracks::getFirstUsableTrack : No such category %s\n", strCatId.c_str()); return 0; diff --git a/src/libs/tgfdata/tracks.h b/src/libs/tgfdata/tracks.h index 084df7b2..80a726c7 100755 --- a/src/libs/tgfdata/tracks.h +++ b/src/libs/tgfdata/tracks.h @@ -113,7 +113,7 @@ public: std::vector getTrackIdsInCategory(const std::string& strCatId = "") const; std::vector getTrackNamesInCategory(const std::string& strCatId = "") const; - GfTrack* getFirstUsableTrack(const std::string& strCatId, + GfTrack* getFirstUsableTrack(const std::string& strCatId = "", const std::string& strFromTrackId = "", int nSearchDir = +1, bool bSkipFrom = false) const; GfTrack* getFirstUsableTrack(const std::string& strFromCatId,