Commit 1cd97e26958fb141088c66d93e32ab91ac0e1854

David Gow 2021-03-29T18:12:33

testmessage: Create a renderer for window display on Wayland On Wayland -- or at least on some Wayland implementations -- windows aren't shown until something has been rendered into them. For the 'testmessage' test program, this means that the final messagebox (a modal one) is blocking an "invisible window", which can then be difficult to close. By creating a renderer and presenting once, the window is properly displayed, and the test behaves as it does under X11 (including XWayland).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/test/testmessage.c b/test/testmessage.c
index 9693e4e..a93ad70 100644
--- a/test/testmessage.c
+++ b/test/testmessage.c
@@ -189,6 +189,12 @@ main(int argc, char *argv[])
         SDL_Event event;
         SDL_Window *window = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0);
 
+        /* On wayland, no window will actually show until something has
+           actually been displayed.
+        */
+        SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);
+        SDL_RenderPresent(renderer);
+
         success = SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,
                     "Simple MessageBox",
                     "This is a simple error MessageBox with a parent window",