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
// 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);
XMapRaised(display, window);
CreationParams.WindowId = (void*)window;
Atom wmDelete;
wmDelete = XInternAtom(display, wmDeleteWindow, True);
XSetWMProtocols(display, window, &wmDelete, 1);
if (CreationParams.Fullscreen) if (CreationParams.Fullscreen)
{ {
attributes.override_redirect = True;
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, XGrabKeyboard(display, window, True, GrabModeAsync,
GrabModeAsync, CurrentTime); GrabModeAsync, CurrentTime);
XGrabPointer(display, window, True, ButtonPressMask, XGrabPointer(display, window, True, ButtonPressMask,
GrabModeAsync, GrabModeAsync, window, None, CurrentTime); GrabModeAsync, GrabModeAsync, window, None, CurrentTime);
} XWarpPointer(display, None, window, 0, 0, 0, 0, 0, 0);
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);
} }
} }
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