tests: lib/i3test: provide wait_for_map and wait_for_unmap
These functions should be used instead of calling wait_for_event directly when waiting for MAP_NOTIFY or UNMAP_NOTIFY
This commit is contained in:
parent
38a9eabff1
commit
4821b13cae
@ -36,6 +36,9 @@ our @EXPORT = qw(
|
||||
focused_ws
|
||||
get_socket_path
|
||||
launch_with_config
|
||||
wait_for_event
|
||||
wait_for_map
|
||||
wait_for_unmap
|
||||
);
|
||||
|
||||
my $tester = Test::Builder->new();
|
||||
@ -99,12 +102,28 @@ sub wait_for_event {
|
||||
};
|
||||
|
||||
# Trigger timeout after $timeout seconds (can be fractional)
|
||||
my $timeout = AE::timer $timeout, 0, sub { say STDERR "timeout"; $cv->send(0) };
|
||||
my $timeout = AE::timer $timeout, 0, sub { warn "timeout"; $cv->send(0) };
|
||||
|
||||
my $result = $cv->recv;
|
||||
return $result;
|
||||
}
|
||||
|
||||
# thin wrapper around wait_for_event which waits for MAP_NOTIFY
|
||||
# make sure to include 'structure_notify' in the window’s event_mask attribute
|
||||
sub wait_for_map {
|
||||
my ($x) = @_;
|
||||
wait_for_event $x, 1, sub { $_[0]->{response_type} == MAP_NOTIFY };
|
||||
}
|
||||
|
||||
# Wrapper around wait_for_event which waits for UNMAP_NOTIFY. Also calls
|
||||
# sync_with_i3 to make sure i3 also picked up and processed the UnmapNotify
|
||||
# event.
|
||||
sub wait_for_unmap {
|
||||
my ($x) = @_;
|
||||
wait_for_event $x, 1, sub { $_[0]->{response_type} == UNMAP_NOTIFY };
|
||||
sync_with_i3($x);
|
||||
}
|
||||
|
||||
sub open_standard_window {
|
||||
my ($x, $color, $floating) = @_;
|
||||
|
||||
@ -286,7 +305,7 @@ sub sync_with_i3 {
|
||||
wait_for_event $x, 0.5, sub { $_[0]->{response_type} == MAP_NOTIFY };
|
||||
}
|
||||
|
||||
my $root = $x->root->id;
|
||||
my $root = $x->get_root_window();
|
||||
# Generate a random number to identify this particular ClientMessage.
|
||||
my $myrnd = int(rand(255)) + 1;
|
||||
|
||||
@ -386,7 +405,7 @@ sub launch_with_config {
|
||||
# one test case.
|
||||
my $i3cmd = "exec " . abs_path("../i3") . " -V -d all --disable-signalhandler -c $tmpfile >>$ENV{LOGPATH} 2>&1";
|
||||
my $process = Proc::Background->new($i3cmd);
|
||||
sleep 1;
|
||||
sleep 1.25;
|
||||
|
||||
# force update of the cached socket path in lib/i3test
|
||||
get_socket_path(0);
|
||||
|
Loading…
Reference in New Issue
Block a user