Fullscreen in X question

Hello,

I’ve been trying to solve a problem without any success. I’m using a
dualhead setup in Linux and am running EffecTV on Linux with XF98 4.2.

Normally I can mouse to either screen. When I switch to fullscreen mode
(called by SDL_WM_ToggleFullScreen() ) the screen opens up full on screen 0
as expected.

The problem is that it is capturing the cursor and won’t let me get it to
the other screen so that I can control other things. The
SDL_ShowCursor(SDL_ENABLE) works and turns on the cursor, but
SDL_WM_GrabInput(SDL_GRAB_OFF) has no effect. I’ve tried hacking your
source in SDL_X11modes.c but haven’t been able to tame this beast of a
problem. Perhaps it’s a purely X thing or maybe there is another flag I can
try??

I’m using an NVIDIA GeFouce4 MX400 dual head card. I have the same behavior
with Matrox G400 and G450 cards. It happens whether I use Xinerama or not.

BTW: I’ve found that the Matrox cards treat fullscreen differently than
NVIDIA in XIinerama mode, and I have to use dual screen mode with NVIDIA or
else both screens are used for fullscreen, breaking the image in two
between the screens. It must be a bug with Matrox (that I like).

SDL is great by the way! I didn’t find the answer in the archives.

Thanks!

ET

Hello,

Sorry for the possible repeat of this post. I didn’t see it show up in the
digest.

I’ve been trying to solve a problem without any success. I’m using a
dualhead setup in Linux and am running EffecTV (which makes great use of
SDL) on Linux with XF86 4.x.

Normally I can mouse to either screen. When I switch to fullscreen mode
(called by SDL_WM_ToggleFullScreen() ) the screen opens up full on screen 0
as expected.

The problem is that it is capturing the cursor (mouse pointer) and won’t
let me get it to the other screen so that I can control other things. The
SDL_ShowCursor(SDL_ENABLE) works and turns on the cursor, but
SDL_WM_GrabInput(SDL_GRAB_OFF) has no effect. I’ve tried hacking your
source in SDL_X11modes.c but haven’t been able to tame this beast of a
problem. Perhaps it’s a purely X thing or maybe there is another flag I can
try??

I’m using an NVIDIA GeForce4 MX400 dual head card. I have the same behavior
with Matrox G400 and G450 cards. It happens whether I use Xinerama or not.

BTW: I’ve found that the Matrox cards treat fullscreen differently than
NVIDIA in XIinerama mode, and I have to use dual screen mode with NVIDIA or
else both screens are used for fullscreen, breaking the image in two
between the screens. It must be a bug with Matrox (that I like).

SDL is great by the way! I didn’t find the answer in the archives.

Thanks!

ET

Hello,

I’ve been trying to solve a problem without any success. I’m using a
dualhead setup in Linux and am running EffecTV on Linux with XF98 4.2.

Normally I can mouse to either screen. When I switch to fullscreen mode
(called by SDL_WM_ToggleFullScreen() ) the screen opens up full on screen 0
as expected.

The problem is that it is capturing the cursor and won’t let me get it to
the other screen so that I can control other things.

That’s correct. The basic problem is that once the cursor leaves the SDL
window, SDL has no idea of when it needs to grab it back. Ideally it would
grab the cursor when the mouse moves from the other screen back to the first
one, but SDL has no idea when this happens. Worse, once SDL loses the input
focus other windows can start popping themselves up over the SDL fullscreen
window. So, the short answer is that due to the X architecture it’s not
possible to share the mouse across multiple screens unless you’re in windowed
mode.

See ya!
-Sam Lantinga, Software Engineer, Blizzard Entertainment