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:
Michael Stapelberg
2012-04-09 14:27:33 +02:00
parent fa6a3d57d2
commit 0f10ccdf12
15 changed files with 223 additions and 87 deletions

View File

@ -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, dont 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 isnt 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