Implement fake-outputs option (cmdline, cfg) for multi-monitor testing
This kills the dependency on xdmx and makes the testsuite simpler and more flexible (in the output sizes / configurations).
This commit is contained in:
@ -75,17 +75,12 @@ sub start_xdummy {
|
||||
# If /proc/cpuinfo does not exist, we fall back to 2 cores.
|
||||
$num_cores ||= 2;
|
||||
|
||||
# If unset, we use num_cores * 2, plus two extra xdummys to combine to a
|
||||
# multi-monitor setup using Xdmx.
|
||||
$parallel ||= ($num_cores * 2) + 2;
|
||||
# If unset, we use num_cores * 2.
|
||||
$parallel ||= ($num_cores * 2);
|
||||
|
||||
# If we are running a small number of tests, don’t over-parallelize.
|
||||
$parallel = $numtests if $numtests < $parallel;
|
||||
|
||||
# Ensure we have at least 1 X-Server plus two X-Servers for multi-monitor
|
||||
# tests.
|
||||
$parallel = 3 if $parallel < 3;
|
||||
|
||||
# First get the last used display number, then increment it by one.
|
||||
# Effectively falls back to 1 if no X server is running.
|
||||
my ($displaynum) = map { /(\d+)$/ } reverse sort glob($x_socketpath . '*');
|
||||
@ -107,20 +102,7 @@ sub start_xdummy {
|
||||
|
||||
wait_for_x(\@sockets_waiting);
|
||||
|
||||
# Now combine the last two displays to a multi-monitor display using Xdmx
|
||||
my $first = pop @displays;
|
||||
my $second = pop @displays;
|
||||
|
||||
# make sure this display isn’t in use yet
|
||||
$displaynum++ while -e ($x_socketpath . $displaynum);
|
||||
say 'starting xdmx on display :' . $displaynum;
|
||||
|
||||
my $multidpy = ":$displaynum";
|
||||
my $socket = fork_xserver($displaynum, 'Xdmx', '+xinerama', '-xinput',
|
||||
'local', '-display', $first, '-display', $second, '-ac', $multidpy);
|
||||
wait_for_x([ $socket ]);
|
||||
|
||||
return \@displays, $multidpy;
|
||||
return @displays;
|
||||
}
|
||||
|
||||
1
|
||||
|
@ -288,7 +288,7 @@ sub fresh_workspace {
|
||||
if (exists($args{output})) {
|
||||
my $i3 = i3(get_socket_path());
|
||||
my $tree = $i3->get_tree->recv;
|
||||
my $output = first { $_->{name} eq "xinerama-$args{output}" }
|
||||
my $output = first { $_->{name} eq "fake-$args{output}" }
|
||||
@{$tree->{nodes}};
|
||||
die "BUG: Could not find output $args{output}" unless defined($output);
|
||||
# Get the focused workspace on that output and switch to it.
|
||||
|
Reference in New Issue
Block a user