diff --git a/src/m64py/frontend/worker.py b/src/m64py/frontend/worker.py index 3e09b46..29cfb0a 100644 --- a/src/m64py/frontend/worker.py +++ b/src/m64py/frontend/worker.py @@ -18,12 +18,12 @@ import os import shutil from PyQt5.QtCore import QThread, QTimer +from sdl2 import SDL_EnableScreenSaver, SDL_DisableScreenSaver from m64py.utils import sl from m64py.core.defs import * from m64py.frontend.log import log from m64py.loader import find_library, unload_library -from m64py.screensaver import screensaver from m64py.core.core import Core from m64py.core.vidext import video from m64py.archive import Archive @@ -180,7 +180,7 @@ class Worker(QThread): self.core.rom_get_settings() if bool(self.settings.get_int_safe( "disable_screensaver", 1)): - screensaver.disable() + SDL_DisableScreenSaver() self.parent.rom_opened.emit() self.parent.recent_files.add(self.filepath) @@ -189,7 +189,7 @@ class Worker(QThread): self.core.rom_close() if bool(self.settings.get_int_safe( "disable_screensaver", 1)): - screensaver.enable() + SDL_EnableScreenSaver() self.parent.rom_closed.emit() def core_state_query(self, state): @@ -306,11 +306,11 @@ class Worker(QThread): if self.state == M64EMU_RUNNING: self.core.pause() if bool(self.settings.get_int_safe("disable_screensaver", 1)): - screensaver.enable() + SDL_EnableScreenSaver() elif self.state == M64EMU_PAUSED: self.core.resume() if bool(self.settings.get_int_safe("disable_screensaver", 1)): - screensaver.disable() + SDL_DisableScreenSaver() self.toggle_actions() def toggle_mute(self): diff --git a/src/m64py/screensaver.py b/src/m64py/screensaver.py deleted file mode 100644 index 1ddabb7..0000000 --- a/src/m64py/screensaver.py +++ /dev/null @@ -1,101 +0,0 @@ -# -*- coding: utf-8 -*- -# Author: Milan Nikolic -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import ctypes -import subprocess - -from m64py.frontend.log import log - - -class LinuxScreenSaver: - cookie = None - screensaver = None - - def __init__(self): - try: - import dbus - self.screensaver = dbus.SessionBus().get_object( - "org.freedesktop.ScreenSaver", "/ScreenSaver") - except Exception as err: - log.info("ScreenSaver not available: %s" % str(err)) - - def disable(self): - if self.screensaver: - try: - self.cookie = self.screensaver.Inhibit( - "M64Py", "Emulation started") - log.info("ScreenSaver disabled") - except Exception as err: - log.exception(str(err)) - - def enable(self): - if self.cookie: - try: - self.screensaver.UnInhibit(self.cookie) - log.info("ScreenSaver enabled") - self.cookie = None - except Exception as err: - log.exception(str(err)) - - -class DarwinScreenSaver: - def __init__(self): - try: - self.idle_time = subprocess.check_output( - "defaults -currentHost read com.apple.screensaver idleTime", - shell=True).strip() - except subprocess.CalledProcessError: - self.idle_time = 0 - - def disable(self): - subprocess.call( - "defaults -currentHost write com.apple.screensaver idleTime 0", - shell=True) - log.info("ScreenSaver disabled") - - def enable(self): - subprocess.call( - "defaults -currentHost write com.apple.screensaver idleTime %s" % self.idle_time, - shell=True) - log.info("ScreenSaver enabled") - - -class WindowsScreenSaver: - sys_param_info = None - SPI_SETSCREENSAVEACTIVE = 17 - - def __init__(self): - try: - self.sys_param_info = ctypes.windll.user32.SystemParametersInfoA - except Exception as err: - log.info("ScreenSaver not available: %s" % str(err)) - - def disable(self): - self.sys_param_info(self.SPI_SETSCREENSAVEACTIVE, False, None, 0) - log.info("ScreenSaver disabled") - - def enable(self): - self.sys_param_info(self.SPI_SETSCREENSAVEACTIVE, True, None, 0) - log.info("ScreenSaver enabled") - -screensaver_class = { - "darwin": DarwinScreenSaver, - "cygwin": WindowsScreenSaver, - "win32": WindowsScreenSaver -} - -screensaver = screensaver_class.get(sys.platform, LinuxScreenSaver)()