Revert "Removing a timer that isn't running is a success."

This reverts commit 795499a529.

This breaks compatibility with SDL2 and there isn't a compelling reason to make this change.
This commit is contained in:
Sam Lantinga 2024-08-05 10:35:28 -07:00
parent d223264f17
commit d68d32e12c
2 changed files with 9 additions and 3 deletions

View file

@ -353,6 +353,7 @@ int SDL_RemoveTimer(SDL_TimerID id)
{
SDL_TimerData *data = &SDL_timer_data;
SDL_TimerMap *prev, *entry;
SDL_bool canceled = SDL_FALSE;
if (!id) {
return SDL_InvalidParamError("id");
@ -376,10 +377,15 @@ int SDL_RemoveTimer(SDL_TimerID id)
if (entry) {
if (!SDL_AtomicGet(&entry->timer->canceled)) {
SDL_AtomicSet(&entry->timer->canceled, 1);
canceled = SDL_TRUE;
}
SDL_free(entry);
}
if (canceled) {
return 0;
} else {
return SDL_SetError("Timer not found");
}
}
#else

View file

@ -142,7 +142,7 @@ static int timer_addRemoveTimer(void *arg)
/* Try to remove timer again (should be a NOOP) */
result = SDL_RemoveTimer(id);
SDLTest_AssertPass("Call to SDL_RemoveTimer()");
SDLTest_AssertCheck(result == 0, "Check result value, expected: 0, got: %i", result);
SDLTest_AssertCheck(result < 0, "Check result value, expected: <0, got: %i", result);
/* Reset state */
param = SDLTest_RandomIntegerInRange(-1024, 1024);
@ -162,7 +162,7 @@ static int timer_addRemoveTimer(void *arg)
/* Remove timer again and check that callback was called */
result = SDL_RemoveTimer(id);
SDLTest_AssertPass("Call to SDL_RemoveTimer()");
SDLTest_AssertCheck(result == 0, "Check result value, expected: 0, got: %i", result);
SDLTest_AssertCheck(result < 0, "Check result value, expected: <0, got: %i", result);
SDLTest_AssertCheck(g_timerCallbackCalled == 1, "Check callback WAS called, expected: 1, got: %i", g_timerCallbackCalled);
return TEST_COMPLETED;