perf-tool: Allow to run as a Wayland compositor

`gnome-shell-perf-tool` is initially designed to run on X11, using the
`--replace` option which does not work when gnome-shell is a Wayland
compositor.

A solution would be to run `gnome-shell-perf-tool` in place of just
`gnome-shell` to run the entire perf session under Wayland, but the
script `gnome-shell-perf-tool` does not spawn `gnome-shell` as a Wayladn
compositor, so that fails as well.

Add a `--wayland` option to `gnome-shell-perf-tool` so that it can
optionally spawn gnome-shell as a Wayland compositor so the whole perf
tool can be starred from a console with:

```
  $ dbus-run-session -- gnome-shell-perf-tool --wayland
```

Alternatively, for testing purposes, it can also be started nested with:

```
  $ dbus-run-session -- gnome-shell-perf-tool --nested
```

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2139
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/941
This commit is contained in:
Olivier Fourdan 2020-01-21 11:05:58 +01:00 committed by Florian Müllner
parent ee7e62c9c8
commit 68598f7c0c

View File

@ -45,6 +45,13 @@ def start_shell(perf_output=None):
if options.replace: if options.replace:
args.append('--replace') args.append('--replace')
if options.wayland or options.nested:
args.append('--wayland')
if options.nested:
args.append('--nested')
else:
args.append('--display-server')
return subprocess.Popen(args, env=env) return subprocess.Popen(args, env=env)
def run_shell(perf_output=None): def run_shell(perf_output=None):
@ -284,6 +291,10 @@ parser.add_option("", "--version", action="callback", callback=show_version,
parser.add_option("-r", "--replace", action="store_true", parser.add_option("-r", "--replace", action="store_true",
help="Replace the running window manager") help="Replace the running window manager")
parser.add_option("-w", "--wayland", action="store_true",
help="Run as a Wayland compositor")
parser.add_option("-n", "--nested", action="store_true",
help="Run as a Wayland nested compositor")
options, args = parser.parse_args() options, args = parser.parse_args()