RareCore: Sync back the results from OriginWineResolver into the main thread
This commit is contained in:
parent
f83342aa14
commit
8a1dd6c948
|
@ -459,6 +459,7 @@ class RareGame(RareGameSlim):
|
|||
self.signals.widget.update.emit()
|
||||
|
||||
def load_pixmap(self):
|
||||
""" Do not call this function, call set_pixmap instead. This is only used for startup image loading """
|
||||
if self.pixmap.isNull():
|
||||
self.image_manager.download_image(self.game, self.set_pixmap, 0, False)
|
||||
|
||||
|
@ -480,8 +481,6 @@ class RareGame(RareGameSlim):
|
|||
self.signals.game.installed.emit(self.app_name)
|
||||
else:
|
||||
self.signals.game.uninstalled.emit(self.app_name)
|
||||
self.set_pixmap()
|
||||
self.signals.widget.update.emit()
|
||||
|
||||
def repair(self, repair_and_update):
|
||||
self.signals.game.install.emit(
|
||||
|
|
|
@ -8,9 +8,10 @@ from typing import Dict, Iterator, Callable, Tuple, Optional, List, Union
|
|||
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, QSettings, pyqtSlot, QThreadPool, QRunnable
|
||||
from legendary.lfs.eos import EOSOverlayApp
|
||||
from legendary.models.game import Game, SaveGameFile
|
||||
from legendary.models.game import Game
|
||||
|
||||
from rare.lgndr.core import LegendaryCore
|
||||
from rare.models.base_game import RareSaveGame
|
||||
from rare.models.game import RareGame, RareEosOverlay
|
||||
from rare.models.signals import GlobalSignals
|
||||
from .image_manager import ImageManager
|
||||
|
@ -27,7 +28,6 @@ from .workers import (
|
|||
)
|
||||
from .workers.uninstall import uninstall_game
|
||||
from .workers.worker import QueueWorkerInfo, QueueWorkerState
|
||||
from rare.models.base_game import RareSaveGame
|
||||
|
||||
logger = getLogger("RareCore")
|
||||
|
||||
|
@ -267,7 +267,7 @@ class RareCore(QObject):
|
|||
self.__add_game(rgame)
|
||||
|
||||
@pyqtSlot(object, int)
|
||||
def handle_result(self, result: Tuple, res_type: int):
|
||||
def handle_result(self, result: object, res_type: int):
|
||||
status = ""
|
||||
if res_type == FetchWorker.Result.GAMES:
|
||||
games, dlc_dict = result
|
||||
|
@ -283,6 +283,9 @@ class RareCore(QObject):
|
|||
self.__non_asset_fetched = True
|
||||
status = "Loaded games without assets"
|
||||
if res_type == FetchWorker.Result.ORIGIN:
|
||||
attrs, _ = result
|
||||
for app_name, (install_dir, install_size) in attrs.items():
|
||||
self.__games[app_name].set_origin_attributes(install_dir, install_size)
|
||||
self.__origin_resolved = True
|
||||
status = "Resolved Origin installation status"
|
||||
if res_type == FetchWorker.Result.SAVES:
|
||||
|
@ -295,7 +298,7 @@ class RareCore(QObject):
|
|||
self.__core.lgd.entitlements = result
|
||||
self.__entitlements_fetched = True
|
||||
status = "Loaded game entitlements"
|
||||
logger.debug(f"Got API results for {FetchWorker.Result(res_type).name}")
|
||||
logger.info(f"Got API results for {FetchWorker.Result(res_type).name}")
|
||||
|
||||
fetched = [
|
||||
self.__games_fetched,
|
||||
|
@ -366,13 +369,16 @@ class RareCore(QObject):
|
|||
|
||||
@return: None
|
||||
"""
|
||||
QThreadPool.globalInstance().start(self.__load_pixmaps)
|
||||
def __load_pixmaps() -> None:
|
||||
# time.sleep(0.1)
|
||||
for rgame in self.__games.values():
|
||||
# self.__image_manager.download_image(rgame.game, rgame.set_pixmap, 0, False)
|
||||
rgame.load_pixmap()
|
||||
# lk: perception delay
|
||||
time.sleep(0.001)
|
||||
|
||||
def __load_pixmaps(self) -> None:
|
||||
# time.sleep(0.1)
|
||||
for rgame in self.__games.values():
|
||||
rgame.load_pixmap()
|
||||
# time.sleep(0.0001)
|
||||
worker = QRunnable.create(__load_pixmaps)
|
||||
QThreadPool.globalInstance().start(worker)
|
||||
|
||||
@property
|
||||
def games_and_dlcs(self) -> Iterator[RareGame]:
|
||||
|
|
|
@ -62,7 +62,7 @@ class EntitlementsWorker(FetchWorker):
|
|||
except (HTTPError, ConnectionError) as e:
|
||||
logger.error(f"Failed to retrieve user entitlements from EGS: {e}")
|
||||
entitlements = {}
|
||||
self.signals.result.emit(entitlements, FetchWorker.Result.ENTITLEMENTS)
|
||||
self.signals.result.emit((entitlements, None), FetchWorker.Result.ENTITLEMENTS)
|
||||
logger.debug(f"Entitlements: {len(list(entitlements))}")
|
||||
logger.debug(f"Request Entitlements: {time.time() - start_time} seconds")
|
||||
|
||||
|
@ -81,6 +81,6 @@ class SavesWorker(FetchWorker):
|
|||
except (HTTPError, ConnectionError) as e:
|
||||
logger.warning(f"Exception while fetching saves from EGS: {e}")
|
||||
result = {}
|
||||
self.signals.result.emit((result, {}), FetchWorker.Result.SAVES)
|
||||
self.signals.result.emit((result, None), FetchWorker.Result.SAVES)
|
||||
logger.debug(f"Saves: {len(result)}")
|
||||
logger.debug(f"Request saves: {time.time() - start_time} seconds")
|
||||
|
|
|
@ -4,7 +4,7 @@ import time
|
|||
from argparse import Namespace
|
||||
from configparser import ConfigParser
|
||||
from logging import getLogger
|
||||
from typing import Union, Iterator
|
||||
from typing import Union, Iterator, Dict, Tuple
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, QObject
|
||||
|
||||
|
@ -62,6 +62,8 @@ class OriginWineWorker(FetchWorker):
|
|||
|
||||
def run_real(self) -> None:
|
||||
t = time.time()
|
||||
|
||||
result: Dict[str, Tuple[str, int]] = {}
|
||||
for rgame in self.games:
|
||||
if not rgame.is_origin:
|
||||
continue
|
||||
|
@ -101,10 +103,11 @@ class OriginWineWorker(FetchWorker):
|
|||
|
||||
if install_dir:
|
||||
if os.path.isdir(install_dir):
|
||||
size = path_size(install_dir)
|
||||
rgame.set_origin_attributes(install_dir, size)
|
||||
logger.debug(f"Found Origin game {rgame.title} ({install_dir}, {format_size(size)})")
|
||||
install_size = path_size(install_dir)
|
||||
result.update({rgame.app_name: (install_dir, install_size)})
|
||||
logger.debug(f"Found Origin game {rgame.title} ({install_dir}, {format_size(install_size)})")
|
||||
else:
|
||||
logger.warning(f"Found Origin game {rgame.title} ({install_dir} does not exist)")
|
||||
self.signals.result.emit((), FetchWorker.Result.ORIGIN)
|
||||
|
||||
self.signals.result.emit((result, None), FetchWorker.Result.ORIGIN)
|
||||
logger.info(f"Origin registry worker finished in {time.time() - t}s")
|
||||
|
|
Loading…
Reference in a new issue