GUI: Disable Pulse() work-around on PSP 1.1.2 and newer

This commit is contained in:
Mykola Grymalyuk
2023-05-30 12:22:06 -06:00
parent a6de37adf0
commit 739c488698
2 changed files with 30 additions and 2 deletions

View File

@@ -26,6 +26,8 @@
- Applicable to systems with 2 (or more) USB Installers with the same name plugged in - Applicable to systems with 2 (or more) USB Installers with the same name plugged in
- Resolve payloads path being mis-routed during CLI calls - Resolve payloads path being mis-routed during CLI calls
- Add UI when fetching root patches for host - Add UI when fetching root patches for host
- Remove progress bar work-around for non-Metal in Monterey and later
- Requires host to have been patched with PatcherSupportPkg 1.1.2 or newer
- Increment Binaries: - Increment Binaries:
- PatcherSupportPkg 1.1.2 - release - PatcherSupportPkg 1.1.2 - release

View File

@@ -3,10 +3,13 @@ import os
import sys import sys
import time import time
import logging import logging
import plistlib
import threading import threading
import subprocess import subprocess
import applescript import applescript
import packaging.version
from pathlib import Path from pathlib import Path
from resources.wx_gui import gui_about from resources.wx_gui import gui_about
@@ -52,6 +55,8 @@ class GaugePulseCallback:
""" """
Uses an alternative Pulse() method for wx.Gauge() on macOS Monterey+ with non-Metal GPUs Uses an alternative Pulse() method for wx.Gauge() on macOS Monterey+ with non-Metal GPUs
Dirty hack, however better to display some form of animation than none at all Dirty hack, however better to display some form of animation than none at all
Note: This work-around is no longer needed on hosts using PatcherSupportPkg 1.1.2 or newer
""" """
def __init__(self, global_constants: constants.Constants, gauge: wx.Gauge) -> None: def __init__(self, global_constants: constants.Constants, gauge: wx.Gauge) -> None:
@@ -65,8 +70,10 @@ class GaugePulseCallback:
self.max_value: int = gauge.GetRange() self.max_value: int = gauge.GetRange()
# self.non_metal_alternative: bool = CheckProperties(global_constants).host_is_non_metal() self.non_metal_alternative: bool = CheckProperties(global_constants).host_is_non_metal()
self.non_metal_alternative: bool = False if self.non_metal_alternative is True:
if CheckProperties(global_constants).host_psp_version() >= packaging.version.Version("1.1.2"):
self.non_metal_alternative = False
def start_pulse(self) -> None: def start_pulse(self) -> None:
@@ -140,6 +147,7 @@ class CheckProperties:
return True return True
def host_has_cpu_gen(self, gen: int) -> bool: def host_has_cpu_gen(self, gen: int) -> bool:
""" """
Check if host has a CPU generation equal to or greater than the specified generation Check if host has a CPU generation equal to or greater than the specified generation
@@ -151,6 +159,24 @@ class CheckProperties:
return False return False
def host_psp_version(self) -> packaging.version.Version:
"""
Grab PatcherSupportPkg version from OpenCore-Legacy-Patcher.plist
"""
oclp_plist_path = "/System/Library/CoreServices/OpenCore-Legacy-Patcher.plist"
if not Path(oclp_plist_path).exists():
return packaging.version.Version("0.0.0")
oclp_plist = plistlib.load(open(oclp_plist_path, "rb"))
if "PatcherSupportPkg" not in oclp_plist:
return packaging.version.Version("0.0.0")
if oclp_plist["PatcherSupportPkg"].startswith("v"):
oclp_plist["PatcherSupportPkg"] = oclp_plist["PatcherSupportPkg"][1:]
return packaging.version.parse(oclp_plist["PatcherSupportPkg"])
class PayloadMount: class PayloadMount:
def __init__(self, global_constants: constants.Constants, frame: wx.Frame) -> None: def __init__(self, global_constants: constants.Constants, frame: wx.Frame) -> None: