Using ::fe.set_display sometimes fails to update ::fe.filters immediately.
Calling ::fe.set_display a second time fixes ::fe.filters.
Occurs on Windows 10, cannot reproduce in Ubuntu 22.04.4.
The loop is intended to scrape display filters to generate global stats.
layout.nut
local f_names = function() { local n = ""; foreach (f in ::fe.filters) n += f.name + ", "; return n; }
local nv_key = "STATS_RUNNING";
if (!(nv_key in ::fe.nv)) ::fe.nv[nv_key] <- false;
if (!::fe.nv[nv_key]) {
local original = ::fe.list.display_index;
local f1, f2, data = [];
foreach (i, display in ::fe.displays) {
::fe.set_display(i, false, false);
f1 = f_names();
data.push(format("Before %d: '%s' (%d filters) %s", ::fe.list.display_index, display.name, ::fe.filters.len(), f1));
::fe.set_display(i, false, false); // hack
f2 = f_names();
data.push(format("After %d: '%s' (%d filters)%s %s", ::fe.list.display_index, display.name, ::fe.filters.len(), f1 != f2 ? "<--" : " ", f2));
}
::fe.set_display(original, false, false);
::fe.nv[nv_key] <- true;
foreach (item in data) ::fe.log(item);
} else {
delete ::fe.nv[nv_key];
}
last_run.log
Before 0: 'Mame' (6 filters) All, Favourites, 2UP, MameFilter, Top, 4UP,
After 0: 'Mame' (6 filters) All, Favourites, 2UP, MameFilter, Top, 4UP,
Before 1: 'C64' (6 filters) All, Favourites, 2UP, MameFilter, Top, 4UP,
After 1: 'C64' (5 filters)<-- All, Favourites, Extra, More, C64Filter,
Before 2: 'MD' (4 filters) All, Favourites, Extra, MDFilter,
After 2: 'MD' (4 filters) All, Favourites, Extra, MDFilter,
Before 3: 'N64' (4 filters) All, Favourites, Extra, MDFilter,
After 3: 'N64' (4 filters)<-- All, Favourites, More, N64Filter,
Before 4: 'SMS' (4 filters) All, Favourites, More, N64Filter,
After 4: 'SMS' (5 filters)<-- All, Favourites, More, Extra, SMSFilter,
Before 5: 'SNES' (4 filters) All, Favourites, Extra, SNESFilter,
After 5: 'SNES' (4 filters) All, Favourites, Extra, SNESFilter,
The arrows <-- indicate where ::fe.filters has changed on the second call.
Using
::fe.set_display
sometimes fails to update::fe.filters
immediately. Calling::fe.set_display
a second time fixes::fe.filters
. Occurs on Windows 10, cannot reproduce in Ubuntu 22.04.4.The loop is intended to scrape display filters to generate global stats.
layout.nut
last_run.log
The arrows
<--
indicate where::fe.filters
has changed on the second call.Attract-Mode Plus v3.0.8