summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2026-08-11 18:40:18 -0600
committerGitHub <noreply@github.com>2026-08-11 18:40:18 -0600
commit701d877dbbec50ad75df824bf8e7b297aeac2202 (patch)
treeb44b6ff3e84eaf45e02ef2b97c77ab87c37a7433 /src/engine
parent33817cd1100ab560b16e19af34488de3b5a6b7eb (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.cpp14
-rw-r--r--src/engine/TrackBrowser.h5
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