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() ...@@ -129,6 +129,8 @@ CIrrDeviceLinux::~CIrrDeviceLinux()
#ifdef _IRR_COMPILE_WITH_X11_ #ifdef _IRR_COMPILE_WITH_X11_
if (StdHints) if (StdHints)
XFree(StdHints); XFree(StdHints);
// Disable cursor and free it later on
CursorControl->setVisible(false);
if (display) if (display)
{ {
#ifdef _IRR_COMPILE_WITH_OPENGL_ #ifdef _IRR_COMPILE_WITH_OPENGL_
...@@ -575,7 +577,7 @@ bool CIrrDeviceLinux::createWindow() ...@@ -575,7 +577,7 @@ bool CIrrDeviceLinux::createWindow()
attributes.colormap = colormap; attributes.colormap = colormap;
attributes.border_pixel = 0; attributes.border_pixel = 0;
attributes.event_mask = StructureNotifyMask | FocusChangeMask; attributes.event_mask = StructureNotifyMask | FocusChangeMask | ExposureMask;
if (!CreationParams.IgnoreInput) if (!CreationParams.IgnoreInput)
attributes.event_mask |= PointerMotionMask | attributes.event_mask |= PointerMotionMask |
ButtonPressMask | KeyPressMask | ButtonPressMask | KeyPressMask |
...@@ -583,44 +585,27 @@ bool CIrrDeviceLinux::createWindow() ...@@ -583,44 +585,27 @@ bool CIrrDeviceLinux::createWindow()
if (!CreationParams.WindowId) if (!CreationParams.WindowId)
{ {
// create Window, either for Fullscreen or windowed mode // create new Window
if (CreationParams.Fullscreen) // Remove window manager decoration in fullscreen
{ attributes.override_redirect = CreationParams.Fullscreen;
attributes.override_redirect = True;
window = XCreateWindow(display, window = XCreateWindow(display,
RootWindow(display, visual->screen), RootWindow(display, visual->screen),
0, 0, Width, Height, 0, visual->depth, 0, 0, Width, Height, 0, visual->depth,
InputOutput, visual->visual, InputOutput, visual->visual,
CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect, CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect,
&attributes); &attributes);
CreationParams.WindowId = (void*)window;
XWarpPointer(display, None, window, 0, 0, 0, 0, 0, 0);
XMapRaised(display, window); 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; CreationParams.WindowId = (void*)window;
Atom wmDelete; Atom wmDelete;
wmDelete = XInternAtom(display, wmDeleteWindow, True); wmDelete = XInternAtom(display, wmDeleteWindow, True);
XSetWMProtocols(display, window, &wmDelete, 1); 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 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