From 050107a90e748d780030f401020cfdbc31a8835a Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Sun, 19 Jun 2022 18:06:17 +0200 Subject: [PATCH] (Cheevos) On platforms like WiiU that have cheevos support but no threading support, it was complaining about unused variables like rcheevos_locals. The macros for slock_lock/slock_unlock seem needless anyway, so we just reference slock_lock/slock_unlock directly and put it behind HAVE_THREADS ifdefs so the user/programmer knows what is going on --- cheevos/cheevos.c | 16 +++++++++++---- cheevos/cheevos_client.c | 42 ++++++++++++++++++++++++++-------------- cheevos/cheevos_locals.h | 8 -------- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index 4ce43169be..33e8e14558 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -1913,10 +1913,14 @@ static void rcheevos_login_callback(void* userdata) /* Increment the outstanding requests counter and set the load state */ void rcheevos_begin_load_state(enum rcheevos_load_state state) { - CHEEVOS_LOCK(rcheevos_locals.load_info.request_lock); +#ifdef HAVE_THREADS + slock_lock(rcheevos_locals.load_info.request_lock); +#endif ++rcheevos_locals.load_info.outstanding_requests; rcheevos_locals.load_info.state = state; - CHEEVOS_UNLOCK(rcheevos_locals.load_info.request_lock); +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals.load_info.request_lock); +#endif } /* Decrement and return the outstanding requests counter. @@ -1925,11 +1929,15 @@ int rcheevos_end_load_state(void) { int requests = 0; - CHEEVOS_LOCK(rcheevos_locals.load_info.request_lock); +#ifdef HAVE_THREADS + slock_lock(rcheevos_locals.load_info.request_lock); +#endif if (rcheevos_locals.load_info.outstanding_requests > 0) --rcheevos_locals.load_info.outstanding_requests; requests = rcheevos_locals.load_info.outstanding_requests; - CHEEVOS_UNLOCK(rcheevos_locals.load_info.request_lock); +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals.load_info.request_lock); +#endif return requests; } diff --git a/cheevos/cheevos_client.c b/cheevos/cheevos_client.c index f4854ab61d..debe203cce 100644 --- a/cheevos/cheevos_client.c +++ b/cheevos/cheevos_client.c @@ -1425,11 +1425,15 @@ static void rcheevos_async_download_next_badge(void* userdata) static void rcheevos_async_fetch_badge_complete(rcheevos_fetch_badge_data* badge_data) { +#ifdef HAVE_THREADS const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); - CHEEVOS_LOCK(rcheevos_locals->load_info.request_lock); + slock_lock(rcheevos_locals->load_info.request_lock); +#endif badge_data->state->requested_badges[badge_data->request_index][0] = '\0'; - CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals->load_info.request_lock); +#endif if (badge_data->callback) badge_data->callback(badge_data); @@ -1517,11 +1521,12 @@ static bool rcheevos_client_fetch_badge( /* check if it's already requested */ { - const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); - int found_index = -1; int i; - - CHEEVOS_LOCK(rcheevos_locals->load_info.request_lock); + int found_index = -1; +#ifdef HAVE_THREADS + const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); + slock_lock(rcheevos_locals->load_info.request_lock); +#endif for (i = RCHEEVOS_CONCURRENT_BADGE_DOWNLOADS - 1; i >= 0; --i) { if (!state->requested_badges[i][0]) @@ -1546,8 +1551,9 @@ static bool rcheevos_client_fetch_badge( badge_fullname, sizeof(state->requested_badges[request_index])); } - CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); - +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals->load_info.request_lock); +#endif if (found_index != -1) return false; } @@ -1606,20 +1612,24 @@ static bool rcheevos_fetch_next_badge(rcheevos_fetch_badge_state* state) } else { + int active = 0; + const rcheevos_racheevo_t *cheevo = NULL; const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals(); - const rcheevos_racheevo_t* cheevo = NULL; - int active = 0; /* fetch badges for current state of achievements first */ do { - CHEEVOS_LOCK(rcheevos_locals->load_info.request_lock); +#ifdef HAVE_THREADS + slock_lock(rcheevos_locals->load_info.request_lock); +#endif if ( state->locked_badge_fetch_index < rcheevos_locals->game.achievement_count) cheevo = &rcheevos_locals->game.achievements[state->locked_badge_fetch_index++]; else cheevo = NULL; - CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals->load_info.request_lock); +#endif if (!cheevo) break; @@ -1634,13 +1644,17 @@ static bool rcheevos_fetch_next_badge(rcheevos_fetch_badge_state* state) /* then fetch badges for unlocked state so they're ready when the user unlocks something */ do { - CHEEVOS_LOCK(rcheevos_locals->load_info.request_lock); +#ifdef HAVE_THREADS + slock_lock(rcheevos_locals->load_info.request_lock); +#endif if (state->badge_fetch_index < rcheevos_locals->game.achievement_count) cheevo = &rcheevos_locals->game.achievements[state->badge_fetch_index++]; else cheevo = NULL; - CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); +#ifdef HAVE_THREADS + slock_unlock(rcheevos_locals->load_info.request_lock); +#endif if (!cheevo) break; diff --git a/cheevos/cheevos_locals.h b/cheevos/cheevos_locals.h index 7d64ed3933..0a06510aaf 100644 --- a/cheevos/cheevos_locals.h +++ b/cheevos/cheevos_locals.h @@ -190,14 +190,6 @@ bool rcheevos_load_aborted(void); void rcheevos_show_mastery_placard(void); -#ifdef HAVE_THREADS - #define CHEEVOS_LOCK(l) do { slock_lock(l); } while (0) - #define CHEEVOS_UNLOCK(l) do { slock_unlock(l); } while (0) -#else - #define CHEEVOS_LOCK(l) - #define CHEEVOS_UNLOCK(l) -#endif - RETRO_END_DECLS #endif /* __RARCH_CHEEVOS_LOCALS_H */