Move game_cover away from GdkPixbuf

This commit is contained in:
kramo
2023-06-18 13:57:09 +02:00
parent 2aea2fb377
commit 286b44360e
2 changed files with 16 additions and 15 deletions

View File

@@ -71,7 +71,7 @@ class DetailsWindow(Adw.Window):
self.apply_button.set_label(_("Apply"))
self.game_cover.new_cover(self.game.get_cover_path())
if self.game_cover.get_pixbuf():
if self.game_cover.get_texture():
self.cover_button_delete_revealer.set_reveal_child(True)
else:
self.set_title(_("Add New Game"))
@@ -205,7 +205,7 @@ class DetailsWindow(Adw.Window):
# TODO: this is fucked up (less than before)
# Get a cover from SGDB if none is present
if not self.game_cover.get_pixbuf():
if not self.game_cover.get_texture():
self.game.set_loading(1)
sgdb_manager: SGDBManager = shared.store.managers[SGDBManager]
sgdb_manager.reset_cancellable()

View File

@@ -24,7 +24,7 @@ from src import shared
class GameCover:
pixbuf = None
texture = None
blurred = None
luminance = None
path = None
@@ -54,7 +54,7 @@ class GameCover:
def new_cover(self, path=None):
self.animation = None
self.pixbuf = None
self.texture = None
self.blurred = None
self.luminance = None
self.path = path
@@ -64,13 +64,17 @@ class GameCover:
task = Gio.Task.new()
task.run_in_thread(self.create_func(self.path))
else:
self.pixbuf = GdkPixbuf.Pixbuf.new_from_file(str(path))
self.texture = Gdk.Texture.new_from_filename(str(path))
if not self.animation:
self.set_pixbuf(self.pixbuf)
self.set_texture(self.texture)
def get_pixbuf(self):
return self.animation.get_static_image() if self.animation else self.pixbuf
def get_texture(self):
return (
Gdk.Texture.new_for_pixbuf(self.animation.get_static_image())
if self.animation
else self.texture
)
def get_blurred(self):
if not self.blurred:
@@ -103,9 +107,9 @@ class GameCover:
def add_picture(self, picture):
self.pictures.add(picture)
if not self.animation:
self.set_pixbuf(self.pixbuf)
self.set_texture(self.texture)
def set_pixbuf(self, pixbuf):
def set_texture(self, texture):
self.pictures.discard(
picture for picture in self.pictures if not picture.is_visible()
)
@@ -113,16 +117,13 @@ class GameCover:
self.animation = None
else:
for picture in self.pictures:
if pixbuf:
picture.set_pixbuf(pixbuf)
else:
picture.set_paintable(self.placeholder)
picture.set_paintable(texture or self.placeholder)
def update_animation(self, data):
if self.animation == data[1]:
self.anim_iter.advance()
self.set_pixbuf(self.anim_iter.get_pixbuf())
self.set_texture(Gdk.Texture.new_for_pixbuf(self.anim_iter.get_pixbuf()))
delay_time = self.anim_iter.get_delay_time()
GLib.timeout_add(