mirror of
https://github.com/lutris/lutris
synced 2024-09-30 04:54:18 +00:00
Add exception handling so a malformed media file does nto crash Lutris, and does not prevent you from setting a new media.
Resolves #5474
This commit is contained in:
parent
075b531080
commit
5959768f8a
|
@ -348,8 +348,13 @@ class GameDialogCommon(SavableModelessDialog, DialogInstallUIDelegate):
|
||||||
service_media = self.service_medias[image_format]
|
service_media = self.service_medias[image_format]
|
||||||
game_slug = self.slug or (self.game.slug if self.game else "")
|
game_slug = self.slug or (self.game.slug if self.game else "")
|
||||||
media_path = resolve_media_path(service_media.get_possible_media_paths(game_slug))
|
media_path = resolve_media_path(service_media.get_possible_media_paths(game_slug))
|
||||||
|
try:
|
||||||
image = ScaledImage.new_from_media_path(media_path, service_media.config_ui_size, scale_factor)
|
image = ScaledImage.new_from_media_path(media_path, service_media.config_ui_size, scale_factor)
|
||||||
image_button.set_image(image)
|
image_button.set_image(image)
|
||||||
|
except Exception as ex:
|
||||||
|
# We need to survive nasty data in the media files, so the user can replace
|
||||||
|
# them.
|
||||||
|
logger.exception("Unable to load media '%s': %s", image_format, ex)
|
||||||
|
|
||||||
def _get_runner_dropdown(self):
|
def _get_runner_dropdown(self):
|
||||||
runner_liststore = self._get_runner_liststore()
|
runner_liststore = self._get_runner_liststore()
|
||||||
|
|
|
@ -7,6 +7,7 @@ from math import floor
|
||||||
import gi
|
import gi
|
||||||
|
|
||||||
from lutris.util.jobs import schedule_at_idle
|
from lutris.util.jobs import schedule_at_idle
|
||||||
|
from lutris.util.log import logger
|
||||||
|
|
||||||
gi.require_version("PangoCairo", "1.0")
|
gi.require_version("PangoCairo", "1.0")
|
||||||
|
|
||||||
|
@ -535,7 +536,15 @@ class GridViewCellRendererImage(Gtk.CellRenderer):
|
||||||
def _get_surface_by_path(self, widget, path, size=None, preserve_aspect_ratio=True):
|
def _get_surface_by_path(self, widget, path, size=None, preserve_aspect_ratio=True):
|
||||||
cell_size = size or (self.media_width, self.media_height)
|
cell_size = size or (self.media_width, self.media_height)
|
||||||
scale_factor = widget.get_scale_factor() if widget else 1
|
scale_factor = widget.get_scale_factor() if widget else 1
|
||||||
return get_scaled_surface_by_path(path, cell_size, scale_factor, preserve_aspect_ratio=preserve_aspect_ratio)
|
try:
|
||||||
|
return get_scaled_surface_by_path(
|
||||||
|
path, cell_size, scale_factor, preserve_aspect_ratio=preserve_aspect_ratio
|
||||||
|
)
|
||||||
|
except Exception as ex:
|
||||||
|
# We need to survive nasty data in the media files, so the user can replace
|
||||||
|
# them.
|
||||||
|
logger.exception("Unable to load media '%s': %s", path, ex)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _on_media_cached_invalidated() -> None:
|
def _on_media_cached_invalidated() -> None:
|
||||||
|
|
Loading…
Reference in a new issue