This way missing badges can appear on media for installed games even in the service views. We are doing this resolution only for visible games, so we should not hit the PGA database too much, I hope.
This moves some common code up to the GameView base class.
This way you don't actually need to restart Lutris to get the missing status up to date, if you know hte obscure trick.
But you have to do something, it's not just updating all the time.
It was using datetime.now() which uses time-zones, and will produce bogus results in the presence of daylight saving time changes or system clock updates.
time.monotonic() is The Right Thing here, since we are just measuring the passage of time, not any notion of absolute time.
It even comes in seconds out of the box, like we want.
This uses GLib.timeout_add to insert delays to reduce filesystem pounding, but restore 'live' checks on non-missing games.
We still show and hide the Missing tab of the main window on the fly, with delay of up to 3 seconds.
We still only check games you can see in the view on the fly.
This lets the UI update in a non-blocking way, including the cell-renderer stuff.
The cell-renderer queues re-checks for games it sees are missing, so we'll 'notice' if you replace a missing game.
The implementation at this point is rather complex for what this is, but it seems to work.
"Import previously installed Lutris games" detects only games
with an "exe:" field in the installer script, iow, only Wine
or Linux games. Check for the "main_file" field, too, to support
Dosbox and other emulators.
Signed-off-by: Martin Wilck <mwilck@arcor.de>
We need to realize this means we're not connected anymore, and also we should log out, so that you can then log back in.
Resolves#5215, or I hope it does- I can't repro.
O_PATH because we are just pointing at the file, not really opening it. O_NOFOLLOW so we can trash a link not its target. O_CLOEXEC seems unnecessary, but it's what GLib does.
Resolves#5250Resolves#5251
The size can be smaller than required for the localized text; with a default size we get that size and wind up scrolling. Size request will not be honored if we'd have to scroll for that, so the localized text will fit.
This is confusing, but it looks like we pass None to match_game() when the Lutris API says some service game you have corresponds to a another service game from the same service you don't have
I don't understand when this would be true, but it's better not to crash over it.
Resolves#5248
Rename account.get=("PersonalName") to account.get("PersonaName").
$STEAMROOT/userdata/<AccountID>/config/localconfig.vdf has "PersonaName" inside of file.
The spinner does not seem to start always when created dynamically. It seems like if blank_overlay has not been shown to the user yet, it fails - even if it is shown before the spinner starts. Once shown to the user, all is good.
This commit works around this by not putting the spinner inside blank_overlay at all, and just pre-creating it.