# See also docs/testsuite for a long explanation
#
sub sync_with_i3 {
+ my %args = @_ == 1 ? %{$_[0]} : @_;
+
# Since we need a (mapped) window for receiving a ClientMessage, we create
# one on the first call of sync_with_i3. It will be re-used in all
# subsequent calls.
- if (!defined($_sync_window)) {
+ if (!defined($_sync_window) || exists($args{no_cache})) {
$_sync_window = open_window(
rect => [ -15, -15, 10, 10 ],
override_redirect => 1,
my $tmp = two_windows;
cmd 'kill';
-
-sleep 0.25;
+sync_with_i3;
ok(@{get_ws_content($tmp)} == 1, 'one container left after killing');
$tmp = two_windows;
cmd 'kill window';
-
-sleep 0.25;
+sync_with_i3;
ok(@{get_ws_content($tmp)} == 1, 'one container left after killing');
$tmp = two_windows;
cmd 'kill client';
-
-sleep 0.25;
+# We need to re-establish the X11 connection which we just killed :).
+$x = i3test::X11->new;
+sync_with_i3(no_cache => 1);
ok(@{get_ws_content($tmp)} == 0, 'no containers left after killing');