Creating a fullscreen window when monitor outputs are superimposed

jherico wrote on Saturday, November 16, 2013:

GLFW seems to have a problem with fullscreen modes if one screen is set on top of another (working in X11 with XRandr).

I normally set up my screens like this: ‘xrandr --output DVI-I-1 --auto --pos 0x0 --primary --output DVI-D-0 --below DVI-I-1 --output HDMI-0 --auto --pos 100x100’

The reason I’m superimposing my screens is because I’m doing software development for the Oculus Rift. It’s viewed by the system as a monitor, but you can’t really see normal desktop stuff through it very well, so having the output for it overlaid on one of my other monitors is usually helpful.

Here’s how it looks when I create a GLFW window using this code

    glfwWindowHint(GLFW_DECORATED, 0);
    window = glfwCreateWindow(w, h, "glfw", NULL, NULL);

I see this:

Good Render

But when I try to do full screen with this code

  GLFWmonitor * target = ...;
  window = glfwCreateWindow(w, h, "glfw", target, NULL);

I see this:

Bad Render

The Rift display is still showing the same window of the top screen, meaning I see something approximately like this:

Bad Rift Render

When I don’t do superimposition, but instead set the Rift outside the areas covered by the existing monitors, then I don’t have a problem, and the Rift display looks correct. I’d rather not have to use xrandr to reset the screen layouts every time I want to test something for fullscreen.

elmindreda wrote on Saturday, November 16, 2013:

Please see GitHub for further discussion.