Commit graph

9462 commits

Author SHA1 Message Date
Mathieu Comandon 67b8189a9f Do not launch the Steam client with mangohud 2024-01-08 20:50:52 -08:00
Mathieu Comandon 4932b5ca0a Disable autodetect button on Flatpak 2024-01-08 20:03:03 -08:00
Daniel Johnson ea7c87881f Don't grab the Vulkan API version pre-emptively; it's cached anyway. 2024-01-08 16:41:27 -05:00
Daniel Johnson f07883d0f2 Merge remote-tracking branch 'origin/master' 2024-01-08 04:37:22 -05:00
Daniel Johnson eb5120be23 Toot toot! Add more stuff to the change log.
Much of it is actually not my stuff but @strcore's.
2024-01-08 04:37:12 -05:00
Mathieu Comandon 238b20da83 Avoid crash if lsblk output can't be read 2024-01-08 01:19:50 -08:00
Mathieu Comandon 73863761e0 Replace Twitter link with Mastodon 2024-01-07 20:34:46 -08:00
Mathieu Comandon a892d08f63 Update CONTRIBUTING and INSTALL 2024-01-07 20:33:04 -08:00
Mathieu Comandon b3d52d35e5 Initial changelog for 0.5.15 2024-01-07 19:20:29 -08:00
Mathieu Comandon 00f72b0fb4 Emit a view-updated signal instead of reconstructing the store directly in redraw_view 2024-01-07 18:00:20 -08:00
Mathieu Comandon f055e65ce0 Check for service_id presence 2024-01-07 17:27:47 -08:00
Daniel Johnson a903b67180 Download missing Lutris media when installing games during service refresh.
This extends sync_media() so it can download for a specific set of games, so we can download only the installed games, not games you had already.

Resolves #4545
2024-01-07 14:40:32 -05:00
Daniel Johnson 8cabab49c7 Disable the 'Show Hidden Games' checkbox when in a service view - we do not implement it there. 2024-01-07 10:33:39 -05:00
Daniel Johnson 0b9dfecb0c Reduce the number of special case checks for the service id 'lutris'. 2024-01-07 10:26:59 -05:00
Daniel Johnson 5ebebf41a6 Fix crash when hiding a game from the Lutris view specifically. 2024-01-07 10:07:07 -05:00
Daniel Johnson 858786decd Whoops; the 'appid' equivalent for the lutris service is the slug, of course. 2024-01-07 09:34:04 -05:00
Daniel Johnson 553db0fb46 Modify the 'installed' property on StoreItem to use the cached installed game data to check for installation.
Saves a database query to do this.
2024-01-07 09:23:13 -05:00
Daniel Johnson 5c26ebb90e Do not fall back to the installed game if the actual game_data has the key, even if it has a blank value. 2024-01-07 09:10:20 -05:00
Daniel Johnson 43489fb071 When loading the game list into the view, use single SQL query to load the installed games.
We generally need them all, and pounding the database over and over for each game *even if it has no installed game counterpart* we cause nasty concurrency issues when reloading the service at the same time.

Instead, we load them and all preload the StoreItem - even if there's no installed game, if the StoreItem knows this, there's no need to fetch that data for that game.
2024-01-07 08:41:23 -05:00
Daniel Johnson acfc74117a Consolidate the end-of-cycle checks for the launch animation. 2024-01-06 13:49:36 -05:00
Daniel Johnson 8b0819fa41 Add some handling so that if we do not understand /proc/driver/nvidia/version we just fall back to glxinfo instead. 2024-01-06 07:29:22 -05:00
Daniel Johnson 6e130124ce Cache NVidia driver info- this should not change while Lutris is running. 2024-01-06 07:17:28 -05:00
Mathieu Comandon fc261bdb0e Add taskmgr in Wine actions 2024-01-05 18:21:19 -08:00
Mathieu Comandon 9b31c55453 Add appid to service game list 2024-01-05 17:08:07 -08:00
Daniel Johnson bd390f2dc5 Since the runner versions dialog OK button does not work while installing, let's disable it at that time. 2024-01-05 18:56:31 -05:00
Daniel Johnson fc10bc01ed We need to reliably fire the completion and error functions from remove_folder.
If the folder being removed is missing, we consider that success, so the next callback needs to run at once.
2024-01-05 17:15:47 -05:00
Daniel Johnson 4d87e85af4 Runniner install dialog needs to handle TrashPortal asynchonous completion.
It should report errors, and should update the UI and clear the wine version cache when the trashifiation is done.
2024-01-05 17:07:47 -05:00
Daniel Johnson 56ad4c4be9 Missed a spot!
Need to get the runner version dialog's title from the runner, not the row.
2024-01-05 17:03:28 -05:00
Mathieu Comandon 70487c1ef9 Disable Lutris runtime for Citra (Conflicts with AppImage) 2024-01-03 21:29:30 -08:00
Mathieu Comandon 0a82b3bef2 Prevent multiplication of JSON runners when starting Lutris while it's already open 2024-01-03 20:59:03 -08:00
Daniel Johnson 91d820d537 Ensure sidebar buttons always use a fresh runner with an up-to-date config 2024-01-03 04:57:00 -05:00
Daniel Johnson f7af4b58c9 Move get_scale_factor() call a little for thread-safety
This is GTK method, so it's not safe to call this off of the main thread.

This fix looks ugly, but I've got a PR to rework this code for more PNG support that will improve this. This will do until that gets merged, I think.
2024-01-03 04:37:10 -05:00
Mathieu Comandon e201a5a638 Fix loading of slots arguments 2024-01-02 21:40:32 -08:00
telanus e6b771ea97 Add slot option for Removable media Slot devices
Add an option that allow the entry of slot devices that is needed on mame's romload
2024-01-02 21:35:28 -08:00
Daniel Johnson bcb36810dd Rework the way extra files are passed through to the installer script.
Instead of passing the extra-ids everwhere and hoping it lines up, we pass them to the installer to generate the InstallerFiles, but it provides the extra files separately.

We can then extract the download destination paths for each extra file we're downloading, and we can put those in the script.

This way, if there are more or fewer files than we expect, it will still work.

This may help with #4974, but it's hard to be sure.
2024-01-02 19:05:57 -05:00
Daniel Johnson a3c237b21f Avoid created the user's custom cache dir- we should only create our own private one if missing. 2024-01-02 04:46:57 -05:00
Daniel Johnson 70c483d8ff Fix issues with the custom cache-dir feature
The None result from get_cache_path() was leaking into the Preferences dialog, so now it never returns None - there's always ~/.cache/lutris/installer to fall back on, after all. A separate function checks if it is even configured.

Also, the sanity check for whether the custom dir even exists was inconsistently applied and would accept a file; it needs to be a directory. So now it checks with os.path.isdir().
2024-01-01 15:28:26 -05:00
Daniel Johnson 009e8cc1f2 service.get_game_platforms() should return an empty list not None; None was checked for, but treated as an empty list anyway. 2024-01-01 12:15:27 -05:00
Daniel Johnson 859b681388 None of the callers of get_runner_module() or import_runner() or import_task() check for None; so use an exception to crash with better style. 2024-01-01 10:28:47 -05:00
Daniel Johnson b047ef688d Add MissingMediaError to replace None returns from various media-loading methods
Some of these had been unchecked and would have failed anyway; others now use exception handling for fallbacks.
2024-01-01 10:19:03 -05:00
Daniel Johnson df3175d91f Replace None-returning method with a pair, one that returns bool and one that always returns a game. 2024-01-01 09:23:51 -05:00
Daniel Johnson f7991b3553 Replace Gio.ListStore with ordinary Python list for the list of running games. 2024-01-01 09:11:50 -05:00
Daniel Johnson 2bee169ed9 Replace None with empty dict; the caller should be able to handle that. 2024-01-01 08:50:40 -05:00
Daniel Johnson 0f8d89b00a Clean up exceptions and give them names ending in 'Error'.
Remove NoScreenDetected; this exception is just an if statement is disguise. We still need to handle GLib.Error though.

Rename ExtractFailure to ExtractError.

Rename AuthTokenExpired to AuthTokenExpiredError, provide a minimal message.

Replace InvalidPid with ValueError with the custom message. This is never caught, and it's misleading - it means the pid given isn't convertible to int, not that it's a valid PID.

Rename UnauthorizedAccess to UnauthorizedAccessError,
2024-01-01 08:40:06 -05:00
Daniel Johnson b6615b68d9 Fixes for ScriptingError; it should still have a message even if the repr(self.fault_data) is falsey. It should be a LutrisError for sure, too.
Remove FileNotAvailable; it's never used.

Rename MissingDependency to MissingGameDependencyError and ensure it has a message. We do put that message in the logs at least! It should be a LutrisError too.
2024-01-01 08:24:23 -05:00
Daniel Johnson 657cefedac Remove UnsupportedProvider error
This is really just an assertion and is pretty useless - we'd crash on the very next line anyway without it.

 But for documentation I'll leave a RuntimeError.
2024-01-01 08:11:48 -05:00
Daniel Johnson 051b031cb2 Remove redundant exception handler.
It's just doing what the backstop does anyway.
2024-01-01 07:40:35 -05:00
Daniel Johnson 165efbd9b1 Provide base classes for runner exceptions.
This way we need not duplicate the __init__ function in each.

Most are just LutrisError subclasses now, but InvalidRunnerError is a MisconfigurationError. I can't see a bogus runner name coming from anywhere but the configuration.
2024-01-01 07:35:27 -05:00
Daniel Johnson fd4a293f07 Rename the exception InvalidRunner to InvalidRunnerError 2024-01-01 07:29:10 -05:00
Daniel Johnson 87273c5bc0 Tighten up the typing of game.runner.
We use game.runner in many places without checking, so returning None is a bad thing here. Better to raise.

For the few places that check, I've added game.has_runner. Also added a few defensing checks and an exception handler for safety.
2024-01-01 07:28:00 -05:00