Skip to content

Commit 8029fe6

Browse files
libretroadminLibretroAdmin
authored andcommitted
menu_displaylist: feed the generic dropdowns in the ctl dump pass
The two generic dropdown cases take the owning setting's enum id as their path, so instead of a contract skip they now receive a stable range setting - video rotation - spelled by the compiler so the id tracks the guarded enum across configurations. Both sections fingerprint their option rows; the device, shader and bind dropdowns keep their contract skips, needing state a headless run cannot supply. Zero crashes, deterministic across runs, fourteen contract skips remain of the original sixteen.
1 parent 5ddd446 commit 8029fe6

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

menu/menu_displaylist.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7243,9 +7243,7 @@ void menu_displaylist_validation_dump(rarch_setting_t *list_settings)
72437243
* file path or query - are skipped by contract rather than
72447244
* left to crash on synthetic input, so any crash the dump does
72457245
* record is a real regression. */
7246-
if ( t == (unsigned)DISPLAYLIST_DROPDOWN_LIST
7247-
|| t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_SPECIAL
7248-
|| t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_AUDIO_DEVICE
7246+
if ( t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_AUDIO_DEVICE
72497247
|| t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_MIDI_DEVICE
72507248
#ifdef HAVE_MICROPHONE
72517249
|| t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_MICROPHONE_DEVICE
@@ -7276,10 +7274,23 @@ void menu_displaylist_validation_dump(rarch_setting_t *list_settings)
72767274
FILE *w = fdopen(pfd[1], "w");
72777275
size_t i2;
72787276
bool ret;
7277+
char dd_path[16];
72797278
close(pfd[0]);
72807279
memset(&cl, 0, sizeof(cl));
72817280
menu_displaylist_info_init(&info);
72827281
info.list = &cl;
7282+
/* The generic dropdowns take the owning setting's enum id
7283+
* as their path; hand them a stable range setting so their
7284+
* machinery fingerprints instead of being skipped. The id
7285+
* is spelled by the compiler, so it tracks the guarded
7286+
* enum across configurations. */
7287+
if ( t == (unsigned)DISPLAYLIST_DROPDOWN_LIST
7288+
|| t == (unsigned)DISPLAYLIST_DROPDOWN_LIST_SPECIAL)
7289+
{
7290+
snprintf(dd_path, sizeof(dd_path), "%d",
7291+
(int)MENU_ENUM_LABEL_VIDEO_ROTATION);
7292+
info.path = strdup(dd_path);
7293+
}
72837294
ret = menu_displaylist_ctl(
72847295
(enum menu_displaylist_ctl_state)t, &info, settings);
72857296
if (w)

0 commit comments

Comments
 (0)