533-randr15.t: Add a fake output connected to the fake monitor
Add an output ID to the simulated RRGetMonitors reply, then add a simulated RRGetOutputInfo reply describing the added output.
This commit is contained in:
parent
21dd8c475a
commit
f5e9b518da
|
@ -33,12 +33,12 @@ my ($outfh, $outname) = tempfile('i3-randr15reply-XXXXXX', UNLINK => 1);
|
||||||
my $reply = pack('cxSLLLLx[LLL]',
|
my $reply = pack('cxSLLLLx[LLL]',
|
||||||
1, # reply
|
1, # reply
|
||||||
0, # sequence (will be filled in by inject_randr15)
|
0, # sequence (will be filled in by inject_randr15)
|
||||||
# 56 = length($reply) + length($monitor1)
|
# 60 = length($reply) + length($monitor1)
|
||||||
# 32 = minimum X11 reply length
|
# 32 = minimum X11 reply length
|
||||||
(56-32) / 4, # length in words
|
(60-32) / 4, # length in words
|
||||||
0, # timestamp TODO
|
0, # timestamp TODO
|
||||||
1, # nmonitors
|
1, # nmonitors
|
||||||
0); # noutputs
|
1); # noutputs
|
||||||
|
|
||||||
# Manually intern _NET_CURRENT_DESKTOP as $x->atom will not create atoms if
|
# Manually intern _NET_CURRENT_DESKTOP as $x->atom will not create atoms if
|
||||||
# they are not yet interned.
|
# they are not yet interned.
|
||||||
|
@ -47,24 +47,45 @@ my $DP3 = $x->intern_atom_reply($atom_cookie->{sequence})->{atom};
|
||||||
|
|
||||||
# MONITORINFO is defined in A.1.1 in
|
# MONITORINFO is defined in A.1.1 in
|
||||||
# https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt
|
# https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt
|
||||||
my $monitor1 = pack('LccSssSSLL',
|
my $monitor1 = pack('LccSssSSLLL',
|
||||||
$DP3, # name (ATOM)
|
$DP3, # name (ATOM)
|
||||||
1, # primary
|
1, # primary
|
||||||
1, # automatic
|
1, # automatic
|
||||||
0, # ncrtcs
|
1, # ncrtcs
|
||||||
0, # x
|
0, # x
|
||||||
0, # y
|
0, # y
|
||||||
3840, # width in pixels
|
3840, # width in pixels
|
||||||
2160, # height in pixels
|
2160, # height in pixels
|
||||||
520, # width in millimeters
|
520, # width in millimeters
|
||||||
290); # height in millimeters
|
290, # height in millimeters
|
||||||
|
12345); # output ID #0
|
||||||
|
|
||||||
print $outfh $reply;
|
print $outfh $reply;
|
||||||
print $outfh $monitor1;
|
print $outfh $monitor1;
|
||||||
|
|
||||||
close($outfh);
|
close($outfh);
|
||||||
|
|
||||||
my $pid = launch_with_config($config, inject_randr15 => $outname);
|
# Prepare a RRGetOutputInfo reply as well; see RRGetOutputInfo in
|
||||||
|
# https://www.x.org/releases/current/doc/randrproto/randrproto.txt
|
||||||
|
my $output_name = 'i3-fake-output';
|
||||||
|
($outfh, my $outname_moninfo) = tempfile('i3-randr15reply-XXXXXX', UNLINK => 1);
|
||||||
|
my $moninfo = pack('cxSLLLx[LLccSSSS]S a* x!4',
|
||||||
|
1, # reply
|
||||||
|
0, # sequence (will be filled in by inject_randr15)
|
||||||
|
# 36 = length($moninfo) (without name and padding)
|
||||||
|
# 32 = minimum X11 reply length
|
||||||
|
((36 + length($output_name) - 32) + 3) / 4, # length in words
|
||||||
|
0, # timestamp TODO
|
||||||
|
12345, # CRTC
|
||||||
|
length($output_name), # length of name
|
||||||
|
$output_name); # name
|
||||||
|
|
||||||
|
print $outfh $moninfo;
|
||||||
|
close($outfh);
|
||||||
|
|
||||||
|
my $pid = launch_with_config($config,
|
||||||
|
inject_randr15 => $outname,
|
||||||
|
inject_randr15_outputinfo => $outname_moninfo);
|
||||||
|
|
||||||
my $tree = i3->get_tree->recv;
|
my $tree = i3->get_tree->recv;
|
||||||
my @outputs = map { $_->{name} } @{$tree->{nodes}};
|
my @outputs = map { $_->{name} } @{$tree->{nodes}};
|
||||||
|
@ -86,7 +107,7 @@ exit_gracefully($pid);
|
||||||
|
|
||||||
# When inject_randr15 is defined but false, fake-xinerama will be turned off,
|
# When inject_randr15 is defined but false, fake-xinerama will be turned off,
|
||||||
# but inject_randr15 will not actually be used.
|
# but inject_randr15 will not actually be used.
|
||||||
my $pid = launch_with_config($config, inject_randr15 => '');
|
$pid = launch_with_config($config, inject_randr15 => '');
|
||||||
|
|
||||||
$tree = i3->get_tree->recv;
|
$tree = i3->get_tree->recv;
|
||||||
@outputs = map { $_->{name} } @{$tree->{nodes}};
|
@outputs = map { $_->{name} } @{$tree->{nodes}};
|
||||||
|
|
Loading…
Reference in New Issue