From 862d96d6093bbaa0158046d017f582905cd697c2 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Sat, 28 Nov 2020 03:07:59 +0000 Subject: [PATCH] testcases: add a test case for #525 Signed-off-by: Yuxuan Shui --- tests/run_tests.sh | 1 + tests/testcases/issue525.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100755 tests/testcases/issue525.py diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 3eec3789..6a5a6b3f 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -19,3 +19,4 @@ eval `dbus-launch --sh-syntax` ./run_one_test.sh $exe configs/clear_shadow_unredirected.conf testcases/clear_shadow_unredirected.py ./run_one_test.sh $exe configs/clear_shadow_unredirected.conf testcases/redirect_when_unmapped_window_has_shadow.py ./run_one_test.sh $exe configs/issue394.conf testcases/issue394.py +./run_one_test.sh $exe configs/issue239.conf testcases/issue525.py diff --git a/tests/testcases/issue525.py b/tests/testcases/issue525.py new file mode 100755 index 00000000..317e3088 --- /dev/null +++ b/tests/testcases/issue525.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +import xcffib.xproto as xproto +import xcffib +import time +from common import set_window_name + +conn = xcffib.connect() +setup = conn.get_setup() +root = setup.roots[0].root +visual = setup.roots[0].root_visual +depth = setup.roots[0].root_depth + +# issue 525 happens when a window is unmapped with pixmap stale flag set +wid = conn.generate_id() +print("Window id is ", hex(wid)) + +# Create a window +conn.core.CreateWindowChecked(depth, wid, root, 0, 0, 100, 100, 0, xproto.WindowClass.InputOutput, visual, 0, []).check() + +# Map the window +print("mapping") +conn.core.MapWindowChecked(wid).check() + +time.sleep(0.5) + +# change window size, invalidate the pixmap +conn.core.ConfigureWindow(wid, xproto.ConfigWindow.X | xproto.ConfigWindow.Width, [100, 200]) + +# unmap the window immediately after +conn.core.UnmapWindowChecked(wid).check() + +time.sleep(0.1) + +# Destroy the window +conn.core.DestroyWindowChecked(wid).check()