- if (fgDisplay.StateFullScreen != None)
- {
- XEvent xevent;
- long event_mask;
- int status;
-
- xevent.type = ClientMessage;
- xevent.xclient.type = ClientMessage;
- xevent.xclient.serial = 0;
- xevent.xclient.send_event = True;
- xevent.xclient.display = fgDisplay.Display;
- xevent.xclient.window = fgStructure.CurrentWindow->Window.Handle;
- xevent.xclient.message_type = fgDisplay.State;
- xevent.xclient.format = 32;
- xevent.xclient.data.l[0] = 2; /* _NET_WM_STATE_TOGGLE */
- xevent.xclient.data.l[1] = fgDisplay.StateFullScreen;
- xevent.xclient.data.l[2] = 0;
- xevent.xclient.data.l[3] = 0;
- xevent.xclient.data.l[4] = 0;
-
- /*** Don't really understand how event masks work... ***/
- event_mask = SubstructureRedirectMask | SubstructureNotifyMask;
-
- status = XSendEvent(fgDisplay.Display,
- fgDisplay.RootWindow,
- False,
- event_mask,
- &xevent);
- FREEGLUT_INTERNAL_ERROR_EXIT(status != 0,
- "XSendEvent failed",
- "glutFullScreenToggle");
- }
- else
-#endif
- {
- /*
- * If the window manager is not Net WM compliant, fall back to legacy
- * behaviour.
- */
- glutFullScreen();
- }
+#if TARGET_HOST_POSIX_X11
+ if(toggle_fullscreen() != -1) {
+ win->State.IsFullscreen = !win->State.IsFullscreen;