Optimize code and enable desktop effects by default

This commit is contained in:
nastys 2018-05-24 10:07:34 +02:00
parent 2f24a87a89
commit 6dc34a53d7
4 changed files with 24 additions and 18 deletions

View file

@ -1009,7 +1009,7 @@ Sysoptions
``disable_monitoring`` (example: ``true``)
``disable_compositor`` (example: ``false``)
``disable_compositor`` (example: ``true``)
``reset_pulse`` (example: ``true``)

View file

@ -112,6 +112,24 @@ class Game(object):
else:
self.runner = runner_class(self.config)
def desktop_effects(self, enable):
if enable:
system.execute(self.start_compositor, shell=True)
else:
if os.environ.get('DESKTOP_SESSION') == "plasma":
stop_compositor = "qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.suspend"
self.start_compositor = "qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.resume"
elif os.environ.get('DESKTOP_SESSION') == "mate" and system.execute("gsettings get org.mate.Marco.general compositing-manager", shell=True) == 'true':
stop_compositor = "gsettings set org.mate.Marco.general compositing-manager false"
self.start_compositor = "gsettings set org.mate.Marco.general compositing-manager true"
elif os.environ.get('DESKTOP_SESSION') == "xfce" and system.execute("xfconf-query --channel=xfwm4 --property=/general/use_compositing", shell=True) == 'true':
stop_compositor = "xfconf-query --channel=xfwm4 --property=/general/use_compositing --set=false"
self.start_compositor = "xfconf-query --channel=xfwm4 --property=/general/use_compositing --set=true"
else:
self.compositor_disabled = False;
if self.compositor_disabled:
system.execute(stop_compositor, shell=True)
def remove(self, from_library=False, from_disk=False):
if from_disk and self.runner:
logger.debug("Removing game %s from disk" % self.id)
@ -323,19 +341,7 @@ class Game(object):
process_watch = not monitoring_disabled
if self.runner.system_config.get('disable_compositor'):
if os.environ.get('DESKTOP_SESSION') == "plasma":
stop_compositor = "qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.suspend"
self.start_compositor = "qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.resume"
elif os.environ.get('DESKTOP_SESSION') == "mate" and subprocess.Popen("gsettings get org.mate.Marco.general compositing-manager", shell=True, stdout=subprocess.PIPE,).communicate()[0] == b'true\n':
stop_compositor = "gsettings set org.mate.Marco.general compositing-manager false"
self.start_compositor = "gsettings set org.mate.Marco.general compositing-manager true"
elif os.environ.get('DESKTOP_SESSION') == "xfce" and subprocess.Popen("xfconf-query --channel=xfwm4 --property=/general/use_compositing", shell=True, stdout=subprocess.PIPE,).communicate()[0] == b'true\n':
stop_compositor = "xfconf-query --channel=xfwm4 --property=/general/use_compositing --set=false"
self.start_compositor = "xfconf-query --channel=xfwm4 --property=/general/use_compositing --set=true"
else:
self.compositor_disabled = False;
if self.compositor_disabled:
subprocess.Popen(stop_compositor, shell=True)
self.desktop_effects(False)
self.game_thread = LutrisThread(launch_arguments,
runner=self.runner,
@ -421,7 +427,7 @@ class Game(object):
display.change_resolution(self.original_outputs)
if self.compositor_disabled:
subprocess.Popen(self.start_compositor, shell=True)
self.desktop_effects(True)
if self.runner.system_config.get('use_us_layout'):
subprocess.Popen(['setxkbmap'], env=os.environ).communicate()

View file

@ -209,7 +209,7 @@ system_options = [
'option': 'disable_compositor',
'label': "Disable desktop effects",
'type': 'bool',
'default': True,
'default': False,
'advanced': True,
'help': "Disable desktop effects while game is running, reducing stuttering and increasing performance"
},

View file

@ -46,7 +46,7 @@ INSTALLED_TERMINALS = []
IS_64BIT = sys.maxsize > 2**32
def execute(command, env=None, cwd=None, log_errors=False, quiet=False):
def execute(command, env=None, cwd=None, log_errors=False, quiet=False, shell=False):
"""
Execute a system command and return its results.
@ -91,7 +91,7 @@ def execute(command, env=None, cwd=None, log_errors=False, quiet=False):
try:
stdout, stderr = subprocess.Popen(
command,
shell=False,
shell=shell,
stdout=subprocess.PIPE,
stderr=stderr_handler,
env=existing_env, cwd=cwd