(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
This commit is contained in:
libretroadmin 2022-06-19 18:06:17 +02:00
parent f0e340fd23
commit 050107a90e
3 changed files with 40 additions and 26 deletions

View File

@ -1913,10 +1913,14 @@ static void rcheevos_login_callback(void* userdata)
/* Increment the outstanding requests counter and set the load state */ /* Increment the outstanding requests counter and set the load state */
void rcheevos_begin_load_state(enum rcheevos_load_state 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.outstanding_requests;
rcheevos_locals.load_info.state = state; 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. /* Decrement and return the outstanding requests counter.
@ -1925,11 +1929,15 @@ int rcheevos_end_load_state(void)
{ {
int requests = 0; 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) if (rcheevos_locals.load_info.outstanding_requests > 0)
--rcheevos_locals.load_info.outstanding_requests; --rcheevos_locals.load_info.outstanding_requests;
requests = 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; return requests;
} }

View File

@ -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) 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(); 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'; 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) if (badge_data->callback)
badge_data->callback(badge_data); badge_data->callback(badge_data);
@ -1517,11 +1521,12 @@ static bool rcheevos_client_fetch_badge(
/* check if it's already requested */ /* check if it's already requested */
{ {
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
int found_index = -1;
int i; int i;
int found_index = -1;
CHEEVOS_LOCK(rcheevos_locals->load_info.request_lock); #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) for (i = RCHEEVOS_CONCURRENT_BADGE_DOWNLOADS - 1; i >= 0; --i)
{ {
if (!state->requested_badges[i][0]) if (!state->requested_badges[i][0])
@ -1546,8 +1551,9 @@ static bool rcheevos_client_fetch_badge(
badge_fullname, badge_fullname,
sizeof(state->requested_badges[request_index])); 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) if (found_index != -1)
return false; return false;
} }
@ -1606,20 +1612,24 @@ static bool rcheevos_fetch_next_badge(rcheevos_fetch_badge_state* state)
} }
else else
{ {
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
const rcheevos_racheevo_t* cheevo = NULL;
int active = 0; int active = 0;
const rcheevos_racheevo_t *cheevo = NULL;
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
/* fetch badges for current state of achievements first */ /* fetch badges for current state of achievements first */
do 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 if ( state->locked_badge_fetch_index
< rcheevos_locals->game.achievement_count) < rcheevos_locals->game.achievement_count)
cheevo = &rcheevos_locals->game.achievements[state->locked_badge_fetch_index++]; cheevo = &rcheevos_locals->game.achievements[state->locked_badge_fetch_index++];
else else
cheevo = NULL; cheevo = NULL;
CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); #ifdef HAVE_THREADS
slock_unlock(rcheevos_locals->load_info.request_lock);
#endif
if (!cheevo) if (!cheevo)
break; 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 */ /* then fetch badges for unlocked state so they're ready when the user unlocks something */
do 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) if (state->badge_fetch_index < rcheevos_locals->game.achievement_count)
cheevo = &rcheevos_locals->game.achievements[state->badge_fetch_index++]; cheevo = &rcheevos_locals->game.achievements[state->badge_fetch_index++];
else else
cheevo = NULL; cheevo = NULL;
CHEEVOS_UNLOCK(rcheevos_locals->load_info.request_lock); #ifdef HAVE_THREADS
slock_unlock(rcheevos_locals->load_info.request_lock);
#endif
if (!cheevo) if (!cheevo)
break; break;

View File

@ -190,14 +190,6 @@ bool rcheevos_load_aborted(void);
void rcheevos_show_mastery_placard(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 RETRO_END_DECLS
#endif /* __RARCH_CHEEVOS_LOCALS_H */ #endif /* __RARCH_CHEEVOS_LOCALS_H */