That's a slightly different 0.5.16 option, and it controls only the __NV_PRIME_RENDER_OFFLOAD __VK_LAYER_NV_optimus env-vars; I think __GLX_VENDOR_LIBRARY_NAME applies outside of this one feature.
This should allow the use of discrete GPUs- without the crashy env-var.
However, it now controls the new prime activation code, which works only with an explicit GPU choice, so I've added a warning about that.
There's no separate "prime" option; "dri_prime" can now handle both the NVidia and not-so-NVidia cases. I've not restored the 'optimus' options either.
This change means the __NV_PRIME_RENDER_OFFLOAD is not set by default, because that causes crashes on mono-GPU NVidia systems.
Resolves#5304
This isn't for performance; we need to commands to be stable so when we restart the compositor, we're using the command we got when we stopped it.
But the compositor is not likely to change while we run, so a simple global cache should do fine.
This is just when updating the path cache, but it should prevent unusable paths getting in there when they would have worked with actual Wine.
Fixes#5309, or at least prevents it going forward.
Even if it is stale, even whe a specific version is requested, we'll try to satisfy version info request from the cache and hit the API only if this fails.
This commit also breaks out the code to parse out the architecture from the version, and uses this in the runner-version dialog too.
That bit uses Optional[str], which is not ideal, but I haven't figured out a better way here. Just using '' instead is cheating, a None spelled differently.
Pass exceptions for 'error' when possible, provide the parent when available.
Also, go ahead and mark the 'error' parameter as Union[str, BaseException]. It's ugly, but seems like the best option in the short term.
There's also an explicit message_markup parameter to use to override this behavior, allowing custom markup to be used while preserving the 'Copy to Clipboard' functionality.
This is more for #5295.
It doesn't seem to do anything for me; not sure why. Maybe GNOME does not like icons in message boxes anymore, but I can't find documentation for this.
It's very easy to pass the error to get_error_handler(), but we want the type signature to be simple, not Union[TError, Type[TError]], so instead we'll log if you pass the exception and fix it at runtime.
We will raise another exception if you pass some random thing in as well, since the 'attribute __mro__ not found' is just confusing.
This way when you log it there's no markup there, but if it hits the backstop we'll see the link. The game-error handler now delegates to the backstop code too.
FsyncUnsupportedError just uses the slightly longer message by default now, too. util/wine.py no longer needs to use ErrorDialog at all.
It checks when switching to the 'Missing' view, but also on start-up. If you start out on the missing view, that's two checks.
Instead, this will check when switching to the 'missing' view, or it any view if it hasn't updated yet.