| Summary: | Ibus IME candidate list appears beneath FULLSCREEN_DESKTOP windows with GNOME Shell | ||
|---|---|---|---|
| Product: | SDL | Reporter: | Alex Baines <alex> |
| Component: | *don't know* | Assignee: | Ryan C. Gordon <icculus> |
| Status: | RESOLVED INVALID | QA Contact: | Sam Lantinga <slouken> |
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | HG 2.1 | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
Alex Baines
2014-07-28 19:19:11 UTC
Apparently it works correctly with GNOME Shell if the window is first created as a window (i.e. without the SDL_FULLSCREEN_DESKTOP flag in SDL_CreateWindow), and then made fullscreen using SDL_SetWindowFullscreen afterwards. After some more testing it seems this is not a problem with SDL. I made simple program using just Xlib and hacked the SDL IBus code into it, and it exhibits the same problem. From what I can tell, GNOME Shell classifies the window as a game shortly after the window opens, due to the fact it refreshes its window very often. Because of this, it un-redirects the window so it isn't composited to improve performance - however this also breaks the IBus candidate list which needs to be composited on top of the fullscreen game window. With GNOME Shell, the IBus candidate list window is not rectangular so I'm guessing it is using RGBA visuals with transparency - maybe this has something to do with why compositing is required for it to show above the SDL window. I tried messing with the _NET_WM_BYPASS_COMPOSITOR hint - SDL sets this to ON by default, but removing the hint or setting it to OFF didn't seem to make a difference. For some reason the candidate list seems to work fine with Mutter, which is based on the same windowing library (Clutter) as GNOME Shell as far as I know, so I'm not sure what it is GNOME Shell is doing wrong. Closing this bug, as it appears to be a Gnome bug and not something in SDL. (Please reopen if you decide this is incorrect, or perhaps Gnome has some sort of workaround that needs cooperation from SDL to implement.) --ryan. |