diff options
Diffstat (limited to 'py_modules/lsfg_vk/plugin.py')
| -rw-r--r-- | py_modules/lsfg_vk/plugin.py | 67 |
1 files changed, 64 insertions, 3 deletions
diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py index a44840d..4e19a2a 100644 --- a/py_modules/lsfg_vk/plugin.py +++ b/py_modules/lsfg_vk/plugin.py @@ -10,6 +10,7 @@ import json import subprocess import urllib.request import ssl +import hashlib from typing import Dict, Any from pathlib import Path @@ -101,6 +102,67 @@ class Plugin: return result_dict + async def get_dll_stats(self) -> Dict[str, Any]: + """Get detailed statistics about the detected DLL + + Returns: + Dict containing DLL path, SHA256 hash, and other stats + """ + try: + # First check if DLL is detected + dll_result = self.dll_detection_service.check_lossless_scaling_dll() + + if not dll_result.get("detected") or not dll_result.get("path"): + return { + "success": False, + "error": "DLL not detected", + "dll_path": None, + "dll_sha256": None + } + + dll_path = dll_result["path"] + if dll_path is None: + return { + "success": False, + "error": "DLL path is None", + "dll_path": None, + "dll_sha256": None + } + + dll_path_obj = Path(dll_path) + + # Calculate SHA256 hash + sha256_hash = hashlib.sha256() + try: + with open(dll_path_obj, "rb") as f: + # Read file in chunks to handle large files efficiently + for chunk in iter(lambda: f.read(4096), b""): + sha256_hash.update(chunk) + dll_sha256 = sha256_hash.hexdigest() + except Exception as e: + return { + "success": False, + "error": f"Failed to calculate SHA256: {str(e)}", + "dll_path": dll_path, + "dll_sha256": None + } + + return { + "success": True, + "dll_path": dll_path, + "dll_sha256": dll_sha256, + "dll_source": dll_result.get("source"), + "error": None + } + + except Exception as e: + return { + "success": False, + "error": f"Failed to get DLL stats: {str(e)}", + "dll_path": None, + "dll_sha256": None + } + # Configuration methods async def get_lsfg_config(self) -> Dict[str, Any]: """Read current lsfg script configuration @@ -122,7 +184,7 @@ class Plugin: "defaults": ConfigurationManager.get_defaults() } - async def update_lsfg_config(self, enable: bool, dll: str, multiplier: int, flow_scale: float, + async def update_lsfg_config(self, dll: str, multiplier: int, flow_scale: float, performance_mode: bool, hdr_mode: bool, experimental_present_mode: str = "", experimental_fps_limit: int = 0, @@ -131,7 +193,6 @@ class Plugin: """Update lsfg TOML configuration Args: - enable: Whether to enable LSFG dll: Path to Lossless.dll multiplier: LSFG multiplier value flow_scale: LSFG flow scale value @@ -146,7 +207,7 @@ class Plugin: ConfigurationResponse dict with success status """ return self.configuration_service.update_config( - enable, dll, multiplier, flow_scale, performance_mode, hdr_mode, + dll, multiplier, flow_scale, performance_mode, hdr_mode, experimental_present_mode, experimental_fps_limit, enable_wow64, disable_steamdeck_mode ) |
