Commit b920e1bf authored by hybrid's avatar hybrid

Simplify window generation.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2760 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 3a29e0bb
......@@ -129,6 +129,8 @@ CIrrDeviceLinux::~CIrrDeviceLinux()
#ifdef _IRR_COMPILE_WITH_X11_
if (StdHints)
XFree(StdHints);
// Disable cursor and free it later on
CursorControl->setVisible(false);
if (display)
{
#ifdef _IRR_COMPILE_WITH_OPENGL_
......@@ -575,7 +577,7 @@ bool CIrrDeviceLinux::createWindow()
attributes.colormap = colormap;
attributes.border_pixel = 0;
attributes.event_mask = StructureNotifyMask | FocusChangeMask;
attributes.event_mask = StructureNotifyMask | FocusChangeMask | ExposureMask;
if (!CreationParams.IgnoreInput)
attributes.event_mask |= PointerMotionMask |
ButtonPressMask | KeyPressMask |
......@@ -583,44 +585,27 @@ bool CIrrDeviceLinux::createWindow()
if (!CreationParams.WindowId)
{
// create Window, either for Fullscreen or windowed mode
if (CreationParams.Fullscreen)
{
attributes.override_redirect = True;
// create new Window
// Remove window manager decoration in fullscreen
attributes.override_redirect = CreationParams.Fullscreen;
window = XCreateWindow(display,
RootWindow(display, visual->screen),
0, 0, Width, Height, 0, visual->depth,
InputOutput, visual->visual,
CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect,
&attributes);
CreationParams.WindowId = (void*)window;
XWarpPointer(display, None, window, 0, 0, 0, 0, 0, 0);
XMapRaised(display, window);
XGrabKeyboard(display, window, True, GrabModeAsync,
GrabModeAsync, CurrentTime);
XGrabPointer(display, window, True, ButtonPressMask,
GrabModeAsync, GrabModeAsync, window, None, CurrentTime);
}
else
{ // we want windowed mode
attributes.event_mask |= ExposureMask;
attributes.event_mask |= FocusChangeMask;
window = XCreateWindow(display,
RootWindow(display, visual->screen),
0, 0, Width, Height, 0, visual->depth,
InputOutput, visual->visual,
CWBorderPixel | CWColormap | CWEventMask,
&attributes);
CreationParams.WindowId = (void*)window;
Atom wmDelete;
wmDelete = XInternAtom(display, wmDeleteWindow, True);
XSetWMProtocols(display, window, &wmDelete, 1);
XMapRaised(display, window);
if (CreationParams.Fullscreen)
{
XGrabKeyboard(display, window, True, GrabModeAsync,
GrabModeAsync, CurrentTime);
XGrabPointer(display, window, True, ButtonPressMask,
GrabModeAsync, GrabModeAsync, window, None, CurrentTime);
XWarpPointer(display, None, window, 0, 0, 0, 0, 0, 0);
}
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment