Use SDL_EnableScreenSaver/SDL_DisableScreenSaver, remove screensaver.py

This commit is contained in:
Milan Nikolic 2017-04-11 19:14:14 +02:00
parent 03e79fdc4b
commit 01f7edc94f
2 changed files with 5 additions and 106 deletions

View file

@ -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):

View file

@ -1,101 +0,0 @@
# -*- coding: utf-8 -*-
# Author: Milan Nikolic <gen2brain@gmail.com>
#
# 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 <http://www.gnu.org/licenses/>.
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)()