die "could not fork()";
}
if ($pid == 0) {
+ # Start a process group so that in the parent, we can kill the entire
+ # process group and immediately kill i3bar and any other child
+ # processes.
+ setpgrp;
+
$ENV{LISTEN_PID} = $$;
$ENV{LISTEN_FDS} = 1;
delete $ENV{DESKTOP_STARTUP_ID};
# the interactive signalhandler to make it crash immediately instead.
# Also disable logging to SHM since we redirect the logs anyways.
# Force Xinerama because we use Xdmx for multi-monitor tests.
- my $i3cmd = q|i3 --shmlog-size=0 --disable-signalhandler --force-xinerama|;
+ my $i3cmd = q|i3 --shmlog-size=0 --disable-signalhandler|;
+ if (!defined($args{inject_randr15})) {
+ $i3cmd .= q| --force-xinerama|;
+ }
if (!$args{validate_config}) {
# We only set logging if i3 is actually started, but not if we only
# validate the config file. This is to keep logging to a minimum as
'sh -c "export LISTEN_PID=\$\$; ' . $cmd . '"';
}
+ if ($args{inject_randr15}) {
+ # See comment in $args{strace} branch.
+ $cmd = 'test.inject_randr15 --getmonitors_reply="' .
+ $args{inject_randr15} . '" ' .
+ ($args{inject_randr15_outputinfo}
+ ? '--getoutputinfo_reply="' .
+ $args{inject_randr15_outputinfo} . '" '
+ : '') .
+ '-- ' .
+ 'sh -c "export LISTEN_PID=\$\$; ' . $cmd . '"';
+ }
+
# We need to use the shell due to using output redirections.
exec '/bin/sh', '-c', $cmd;