dep/rcheevos: Bumpt a4b9156 + #492

And remove some local patches that are now unnecessary.
This commit is contained in:
Stenzek
2026-01-17 14:38:10 +10:00
parent 2c8647d348
commit e2266cd617
9 changed files with 13 additions and 127 deletions

View File

@@ -657,7 +657,7 @@ RC_EXPORT void RC_CCONV rc_client_destroy_leaderboard_list(rc_client_leaderboard
/**
* Returns non-zero if the current game has any leaderboards.
*/
RC_EXPORT int RC_CCONV rc_client_has_leaderboards(rc_client_t* client, int include_hidden);
RC_EXPORT int RC_CCONV rc_client_has_leaderboards(rc_client_t* client);
typedef struct rc_client_leaderboard_entry_t {
const char* user;
@@ -749,12 +749,6 @@ RC_EXPORT int RC_CCONV rc_client_has_rich_presence(rc_client_t* client);
*/
RC_EXPORT size_t RC_CCONV rc_client_get_rich_presence_message(rc_client_t* client, char buffer[], size_t buffer_size);
/**
* Returns a list of all possible rich presence strings.
* The list is terminated by NULL.
*/
RC_EXPORT int RC_CCONV rc_client_get_rich_presence_strings(rc_client_t* client, const char** buffer, size_t buffer_size, size_t* count);
/*****************************************************************************\
| Processing |
\*****************************************************************************/

View File

@@ -100,7 +100,6 @@ RC_EXPORT int RC_CCONV rc_runtime_format_lboard_value(char* buffer, int size, in
RC_EXPORT int RC_CCONV rc_runtime_activate_richpresence(rc_runtime_t* runtime, const char* script, void* unused_L, int unused_funcs_idx);
RC_EXPORT int RC_CCONV rc_runtime_get_richpresence(const rc_runtime_t* runtime, char* buffer, size_t buffersize, rc_runtime_peek_t peek, void* peek_ud, void* unused_L);
RC_EXPORT int RC_CCONV rc_runtime_get_richpresence_strings(const rc_runtime_t* runtime, const char** buffer, size_t buffersize, size_t* count);
enum {
RC_RUNTIME_EVENT_ACHIEVEMENT_ACTIVATED, /* from WAITING, PAUSED, or PRIMED to ACTIVE */

View File

@@ -446,7 +446,6 @@ RC_EXPORT int RC_CCONV rc_evaluate_richpresence(rc_richpresence_t* richpresence,
RC_EXPORT void RC_CCONV rc_update_richpresence(rc_richpresence_t* richpresence, rc_peek_t peek, void* peek_ud, void* unused_L);
RC_EXPORT int RC_CCONV rc_get_richpresence_display_string(rc_richpresence_t* richpresence, char* buffer, size_t buffersize, rc_peek_t peek, void* peek_ud, void* unused_L);
RC_EXPORT void RC_CCONV rc_reset_richpresence(rc_richpresence_t* self);
RC_EXPORT int RC_CCONV rc_get_richpresence_strings(rc_richpresence_t* richpresence, const char** buffer, size_t buffersize, size_t* count);
RC_END_C_DECLS

View File

@@ -4886,10 +4886,10 @@ void rc_client_destroy_leaderboard_list(rc_client_leaderboard_list_t* list)
free(list);
}
int rc_client_has_leaderboards(rc_client_t* client, int include_hidden)
int rc_client_has_leaderboards(rc_client_t* client)
{
rc_client_subset_info_t* subset;
int i, result;
int result;
if (!client)
return 0;
@@ -4912,20 +4912,8 @@ int rc_client_has_leaderboards(rc_client_t* client, int include_hidden)
continue;
if (subset->public_.num_leaderboards > 0) {
if (!include_hidden) {
for (i = 0; i < subset->public_.num_leaderboards; i++) {
if (subset->leaderboards[i].hidden)
continue;
result = 1;
break;
}
if (result)
break;
} else {
result = 1;
break;
}
result = 1;
break;
}
}
@@ -5549,18 +5537,6 @@ size_t rc_client_get_rich_presence_message(rc_client_t* client, char buffer[], s
return result;
}
int rc_client_get_rich_presence_strings(rc_client_t* client, const char** buffer, size_t buffer_size, size_t* count) {
int result;
if (!client || !client->game || !buffer)
return RC_INVALID_STATE;
rc_mutex_lock(&client->state.mutex);
result = rc_runtime_get_richpresence_strings(&client->game->runtime, buffer, buffer_size, count);
rc_mutex_unlock(&client->state.mutex);
return result;
}
/* ===== Processing ===== */
void rc_client_set_event_handler(rc_client_t* client, rc_client_event_handler_t handler)

View File

@@ -510,6 +510,7 @@ static void rc_combine_ranges(uint32_t* min_val, uint32_t* max_val, uint8_t oper
break;
case RC_OPERATOR_ADD:
case RC_OPERATOR_ADD_ACCUMULATOR:
if (*min_val > *max_val) { /* underflow occurred */
*max_val += oper_max_val;
}
@@ -522,6 +523,7 @@ static void rc_combine_ranges(uint32_t* min_val, uint32_t* max_val, uint8_t oper
break;
case RC_OPERATOR_SUB:
case RC_OPERATOR_SUB_ACCUMULATOR:
*min_val -= oper_max_val;
*max_val -= oper_min_val;
break;

View File

@@ -920,78 +920,3 @@ void rc_reset_richpresence(rc_richpresence_t* self) {
rc_reset_richpresence_triggers(self);
rc_reset_values(self->values);
}
static int rc_get_richpresence_strings_has_string(const char** buffer, size_t written, const char* search) {
for (size_t i = 0; i < written; i++) {
if (buffer[i] == search)
return 1;
}
return 0;
}
static int rc_get_richpresence_strings_recurse(const rc_richpresence_lookup_item_t* item, const char** buffer, size_t buffersize, size_t* written) {
size_t len;
int err;
if (!rc_get_richpresence_strings_has_string(buffer, *written, item->label)) {
if (*written == buffersize)
return RC_INSUFFICIENT_BUFFER;
buffer[(*written)++] = item->label;
}
if (item->left && (err = rc_get_richpresence_strings_recurse(item->left, buffer, buffersize, written)) != RC_OK)
return err;
if (item->right && (err = rc_get_richpresence_strings_recurse(item->right, buffer, buffersize, written)) != RC_OK)
return err;
return RC_OK;
}
int rc_get_richpresence_strings(rc_richpresence_t* richpresence, const char** buffer, size_t buffersize, size_t* count) {
const rc_richpresence_display_t* display;
const rc_richpresence_display_part_t* part;
size_t written;
size_t len;
int err;
written = 0;
for (display = richpresence->first_display; display; display = display->next) {
for (part = display->display; part; part = part->next) {
switch (part->display_type) {
case RC_FORMAT_STRING:
if (!rc_get_richpresence_strings_has_string(buffer, written, part->text)) {
if (written == buffersize)
return RC_INSUFFICIENT_BUFFER;
buffer[written++] = part->text;
}
break;
case RC_FORMAT_LOOKUP:
if (part->lookup->default_label && !rc_get_richpresence_strings_has_string(buffer, written, part->lookup->default_label)) {
if (written == buffersize)
return RC_INSUFFICIENT_BUFFER;
buffer[written++] = part->lookup->default_label;
}
if ((err = rc_get_richpresence_strings_recurse(part->lookup->root, buffer, buffersize, &written)) != RC_OK)
return err;
break;
default:
break;
}
}
}
if (written == buffersize)
return RC_INSUFFICIENT_BUFFER;
*count = written;
buffer[written++] = NULL; /* terminate list */
return RC_OK;
}

View File

@@ -508,17 +508,6 @@ int rc_runtime_get_richpresence(const rc_runtime_t* self, char* buffer, size_t b
return 0;
}
int rc_runtime_get_richpresence_strings(const rc_runtime_t* self, const char** buffer, size_t buffersize, size_t* count) {
int err = RC_INVALID_STATE;
if (self->richpresence && self->richpresence->richpresence)
err = rc_get_richpresence_strings(self->richpresence->richpresence, buffer, buffersize, count);
if (err != RC_OK)
*buffer = '\0';
return err;
}
void rc_runtime_do_frame(rc_runtime_t* self, rc_runtime_event_handler_t event_handler, rc_runtime_peek_t peek, void* ud, void* unused_L) {
rc_runtime_event_t runtime_event;
int i;

View File

@@ -180,9 +180,11 @@ static void rc_parse_legacy_value(rc_value_t* self, const char** memaddr, rc_par
return;
}
if (!rc_operator_is_modifying(cond->oper)) {
parse->offset = RC_INVALID_OPERATOR;
return;
if (cond->type == RC_CONDITION_MEASURED && !rc_operator_is_modifying(cond->oper)) {
/* ignore non-modifying operator on measured clause. if it were parsed as an AddSource
* or SubSource, that would have already happened in rc_parse_condition_internal, and
* legacy formatted values are essentially a series of AddSources. */
cond->oper = RC_OPERATOR_NONE;
}
rc_condition_update_parse_state(cond, parse);

View File

@@ -1201,7 +1201,7 @@ void Achievements::ClientLoadGameCallback(int result, const char* error_message,
const bool has_achievements = rc_client_has_achievements(client);
// Check for any non-hidden leaderboards. rc_client_create_leaderboard_list() filters hidden leaderboards.
const bool has_leaderboards_including_hidden = rc_client_has_leaderboards(client, true);
const bool has_leaderboards_including_hidden = rc_client_has_leaderboards(client);
bool has_leaderboards = false;
if (rc_client_leaderboard_list_t* lblist;
has_leaderboards_including_hidden &&