diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2026-08-11 18:40:18 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-11 18:40:18 -0600 |
| commit | 701d877dbbec50ad75df824bf8e7b297aeac2202 (patch) | |
| tree | b44b6ff3e84eaf45e02ef2b97c77ab87c37a7433 /src/engine | |
| parent | 33817cd1100ab560b16e19af34488de3b5a6b7eb (diff) | |
Fix Track Invocation Spam (#738)
* Update main.c
* Update TrackBrowser.cpp
* Add TrackBrowser_ResetSelectedTrack function declaration
* Add void keyword to function declarations
* Rename global track variable for clarity
* Update TrackBrowser.h
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/TrackBrowser.cpp | 14 | ||||
| -rw-r--r-- | src/engine/TrackBrowser.h | 5 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/engine/TrackBrowser.cpp b/src/engine/TrackBrowser.cpp index 7d7b958c8..d7c3907c0 100644 --- a/src/engine/TrackBrowser.cpp +++ b/src/engine/TrackBrowser.cpp @@ -80,8 +80,18 @@ extern "C" void TrackBrowser_SetTrack(const char* name) { TrackBrowser::Instance->SetTrack(std::string(name)); } -extern "C" void TrackBrowser_SetTrackFromCup() { - TrackBrowser::Instance->SetTrack(GetWorld()->GetCurrentCup()->GetTrack()); +static std::string sCurrentlySelectedTrack = ""; +extern "C" void TrackBrowser_SetTrackFromCup(void) { + const std::string& track = GetWorld()->GetCurrentCup()->GetTrack(); + // Prevent repeated invoke spams + if (track != sCurrentlySelectedTrack) { + sCurrentlySelectedTrack = track; + TrackBrowser::Instance->SetTrack(track); + } +} + +extern "C" void TrackBrowser_ResetSelectedTrack(void) { + sCurrentlySelectedTrack = ""; } extern "C" void TrackBrowser_NextTrack(void) { diff --git a/src/engine/TrackBrowser.h b/src/engine/TrackBrowser.h index 89dec2f00..0a8f95ef9 100644 --- a/src/engine/TrackBrowser.h +++ b/src/engine/TrackBrowser.h @@ -59,7 +59,7 @@ public: ); } - void SetTrack(std::string name) { + void SetTrack(const std::string& name) { if (gTrackRegistry.Find(name)) { gTrackRegistry.Invoke(name); } else { @@ -191,6 +191,7 @@ extern "C" { #endif // __cplusplus void TrackBrowser_SetTrack(const char* name); void TrackBrowser_SetTrackFromCup(void); // <-- Not in TrackBrowser class +void TrackBrowser_ResetSelectedTrack(void); void TrackBrowser_NextTrack(void); void TrackBrowser_PreviousTrack(void); size_t TrackBrowser_GetTrackIndex(void); @@ -206,4 +207,4 @@ const char* TrackBrowser_GetMinimapTextureByIdx(size_t trackIndex); } #endif // __cplusplus -#endif // TRACKBROWSER_H
\ No newline at end of file +#endif // TRACKBROWSER_H |
