Changed: Use of _CurrentMode instead of several variables (similar to Direct3D driver)
This commit is contained in:
parent
6465db378b
commit
7f8f46f70e
4 changed files with 82 additions and 79 deletions
|
@ -227,19 +227,27 @@ CDriverGL::CDriverGL()
|
||||||
_MouseCaptured = false;
|
_MouseCaptured = false;
|
||||||
|
|
||||||
_NeedToRestaureGammaRamp = false;
|
_NeedToRestaureGammaRamp = false;
|
||||||
_Interval = 1;
|
|
||||||
|
|
||||||
_win = EmptyWindow;
|
_win = EmptyWindow;
|
||||||
|
_WindowX = 0;
|
||||||
|
_WindowY = 0;
|
||||||
|
_WindowVisible = true;
|
||||||
_DestroyWindow = false;
|
_DestroyWindow = false;
|
||||||
|
_Maximized = false;
|
||||||
|
|
||||||
|
_CurrentMode.Width = 0;
|
||||||
|
_CurrentMode.Height = 0;
|
||||||
|
_CurrentMode.Depth = 0;
|
||||||
|
_CurrentMode.OffScreen = false;
|
||||||
|
_CurrentMode.Windowed = true;
|
||||||
|
_CurrentMode.AntiAlias = -1;
|
||||||
|
|
||||||
|
_Interval = 1;
|
||||||
|
_Resizable = false;
|
||||||
|
|
||||||
_DecorationWidth = 0;
|
_DecorationWidth = 0;
|
||||||
_DecorationHeight = 0;
|
_DecorationHeight = 0;
|
||||||
|
|
||||||
_OffScreen = false;
|
|
||||||
_FullScreen = false;
|
|
||||||
_Resizable = false;
|
|
||||||
_AntiAliasing = -1;
|
|
||||||
|
|
||||||
_CurrentMaterial=NULL;
|
_CurrentMaterial=NULL;
|
||||||
_Initialized = false;
|
_Initialized = false;
|
||||||
|
|
||||||
|
@ -410,10 +418,10 @@ bool CDriverGL::setupDisplay()
|
||||||
|
|
||||||
// Init OpenGL/Driver defaults.
|
// Init OpenGL/Driver defaults.
|
||||||
//=============================
|
//=============================
|
||||||
glViewport(0,0,_WindowWidth,_WindowHeight);
|
glViewport(0,0,_CurrentMode.Width,_CurrentMode.Height);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glOrtho(0,_WindowWidth,_WindowHeight,0,-1.0f,1.0f);
|
glOrtho(0,_CurrentMode.Width,_CurrentMode.Height,0,-1.0f,1.0f);
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
glDisable(GL_AUTO_NORMAL);
|
glDisable(GL_AUTO_NORMAL);
|
||||||
|
@ -1115,7 +1123,7 @@ void CDriverGL::setupScissor (const class CScissor& scissor)
|
||||||
uint8 CDriverGL::getBitPerPixel ()
|
uint8 CDriverGL::getBitPerPixel ()
|
||||||
{
|
{
|
||||||
H_AUTO_OGL(CDriverGL_getBitPerPixel )
|
H_AUTO_OGL(CDriverGL_getBitPerPixel )
|
||||||
return _Depth;
|
return _CurrentMode.Depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *CDriverGL::getVideocardInformation ()
|
const char *CDriverGL::getVideocardInformation ()
|
||||||
|
|
|
@ -695,18 +695,17 @@ private:
|
||||||
// Version of the driver. Not the interface version!! Increment when implementation of the driver change.
|
// Version of the driver. Not the interface version!! Increment when implementation of the driver change.
|
||||||
static const uint32 ReleaseVersion;
|
static const uint32 ReleaseVersion;
|
||||||
|
|
||||||
bool _FullScreen;
|
// Windows
|
||||||
bool _OffScreen;
|
|
||||||
bool _Resizable;
|
|
||||||
uint _Interval;
|
|
||||||
sint8 _AntiAliasing;
|
|
||||||
bool _WindowVisible;
|
|
||||||
|
|
||||||
uint32 _WindowWidth, _WindowHeight;
|
|
||||||
sint32 _WindowX, _WindowY;
|
|
||||||
|
|
||||||
nlWindow _win;
|
nlWindow _win;
|
||||||
|
sint32 _WindowX;
|
||||||
|
sint32 _WindowY;
|
||||||
|
bool _WindowVisible;
|
||||||
bool _DestroyWindow;
|
bool _DestroyWindow;
|
||||||
|
bool _Maximized;
|
||||||
|
GfxMode _CurrentMode;
|
||||||
|
uint _Interval;
|
||||||
|
bool _Resizable;
|
||||||
|
|
||||||
sint32 _DecorationWidth;
|
sint32 _DecorationWidth;
|
||||||
sint32 _DecorationHeight;
|
sint32 _DecorationHeight;
|
||||||
|
|
||||||
|
@ -783,10 +782,10 @@ private:
|
||||||
|
|
||||||
#elif defined(NL_OS_MAC)
|
#elif defined(NL_OS_MAC)
|
||||||
|
|
||||||
friend bool GlWndProc(CDriverGL*, const void*);
|
friend bool GlWndProc(CDriverGL*, const void*);
|
||||||
friend void windowDidMove(NSWindow*, CDriverGL*);
|
friend void windowDidMove(NSWindow*, CDriverGL*);
|
||||||
friend void viewDidResize(NSView*, CDriverGL*);
|
friend void viewDidResize(NSView*, CDriverGL*);
|
||||||
friend NSApplicationTerminateReply applicationShouldTerminate(CDriverGL*);
|
friend NSApplicationTerminateReply applicationShouldTerminate(CDriverGL*);
|
||||||
|
|
||||||
NLMISC::CCocoaEventEmitter _EventEmitter;
|
NLMISC::CCocoaEventEmitter _EventEmitter;
|
||||||
NSOpenGLContext* _ctx;
|
NSOpenGLContext* _ctx;
|
||||||
|
@ -833,9 +832,6 @@ private:
|
||||||
// @}
|
// @}
|
||||||
|
|
||||||
|
|
||||||
// Depth of the driver in Bit Per Pixel
|
|
||||||
uint8 _Depth;
|
|
||||||
|
|
||||||
// The forceNormalize() state.
|
// The forceNormalize() state.
|
||||||
bool _ForceNormalize;
|
bool _ForceNormalize;
|
||||||
|
|
||||||
|
|
|
@ -508,8 +508,8 @@ void CDriverGL::setMousePos(float x, float y)
|
||||||
if (_win == EmptyWindow)
|
if (_win == EmptyWindow)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sint x1 = (sint)((float)_WindowWidth*x);
|
sint x1 = (sint)((float)_CurrentMode.Width*x);
|
||||||
sint y1 = (sint)((float)_WindowHeight*(1.0f-y));
|
sint y1 = (sint)((float)_CurrentMode.Height*(1.0f-y));
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
|
||||||
|
@ -603,7 +603,7 @@ void CDriverGL::setCapture (bool b)
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
bool CDriverGL::isSystemCursorInClientArea()
|
bool CDriverGL::isSystemCursorInClientArea()
|
||||||
{
|
{
|
||||||
if (_FullScreen /* || !IsMouseCursorHardware() */)
|
if (!_CurrentMode.Windowed)
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
return IsWindowVisible(_win) != FALSE;
|
return IsWindowVisible(_win) != FALSE;
|
||||||
|
|
|
@ -64,19 +64,19 @@ bool GlWndProc(CDriverGL *driver, HWND hWnd, UINT message, WPARAM wParam, LPARAM
|
||||||
|
|
||||||
if(message == WM_SIZE)
|
if(message == WM_SIZE)
|
||||||
{
|
{
|
||||||
if (!driver->_FullScreen)
|
if (driver->_CurrentMode.Windowed)
|
||||||
{
|
{
|
||||||
RECT rect;
|
RECT rect;
|
||||||
GetClientRect (driver->_win, &rect);
|
GetClientRect (driver->_win, &rect);
|
||||||
|
|
||||||
// Setup gl viewport
|
// Setup gl viewport
|
||||||
driver->_WindowWidth = rect.right-rect.left;
|
driver->_CurrentMode.Width = (uint16)(rect.right-rect.left);
|
||||||
driver->_WindowHeight = rect.bottom-rect.top;
|
driver->_CurrentMode.Height = (uint16)(rect.bottom-rect.top);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(message == WM_MOVE)
|
else if(message == WM_MOVE)
|
||||||
{
|
{
|
||||||
if (!driver->_FullScreen)
|
if (driver->_CurrentMode.Windowed)
|
||||||
{
|
{
|
||||||
RECT rect;
|
RECT rect;
|
||||||
GetWindowRect (hWnd, &rect);
|
GetWindowRect (hWnd, &rect);
|
||||||
|
@ -226,7 +226,7 @@ bool GlWndProc(CDriverGL *driver, XEvent &e)
|
||||||
|
|
||||||
case ConfigureNotify:
|
case ConfigureNotify:
|
||||||
|
|
||||||
if (!driver->_FullScreen && driver->_WndActive)
|
if (driver->_CurrentMode.Windowed && driver->_WndActive)
|
||||||
{
|
{
|
||||||
// first time setting decoration sizes
|
// first time setting decoration sizes
|
||||||
if ((driver->_DecorationWidth == -1) || (driver->_DecorationWidth == 0))
|
if ((driver->_DecorationWidth == -1) || (driver->_DecorationWidth == 0))
|
||||||
|
@ -237,8 +237,8 @@ bool GlWndProc(CDriverGL *driver, XEvent &e)
|
||||||
nlwarning("Decoration size x = %d, y = %d", driver->_DecorationWidth, driver->_DecorationHeight);
|
nlwarning("Decoration size x = %d, y = %d", driver->_DecorationWidth, driver->_DecorationHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
driver->_WindowWidth = e.xconfigure.width;
|
driver->_CurrentMode.Width = e.xconfigure.width;
|
||||||
driver->_WindowHeight = e.xconfigure.height;
|
driver->_CurrentMode.Height = e.xconfigure.height;
|
||||||
driver->_WindowX = e.xconfigure.x - driver->_DecorationWidth;
|
driver->_WindowX = e.xconfigure.x - driver->_DecorationWidth;
|
||||||
driver->_WindowY = e.xconfigure.y - driver->_DecorationHeight;
|
driver->_WindowY = e.xconfigure.y - driver->_DecorationHeight;
|
||||||
|
|
||||||
|
@ -385,12 +385,12 @@ bool CDriverGL::unInit()
|
||||||
{
|
{
|
||||||
H_AUTO_OGL(CDriverGL_unInit)
|
H_AUTO_OGL(CDriverGL_unInit)
|
||||||
|
|
||||||
if (_FullScreen)
|
if (!_CurrentMode.Windowed)
|
||||||
{
|
{
|
||||||
restoreScreenMode();
|
restoreScreenMode();
|
||||||
showCursor(true);
|
showCursor(true);
|
||||||
|
|
||||||
_FullScreen = false;
|
_CurrentMode.Windowed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
@ -546,11 +546,11 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
H_AUTO_OGL(CDriverGL_setDisplay)
|
H_AUTO_OGL(CDriverGL_setDisplay)
|
||||||
|
|
||||||
_win = EmptyWindow;
|
_win = EmptyWindow;
|
||||||
_WindowWidth = _WindowHeight = _WindowX = _WindowY = 0;
|
|
||||||
|
_CurrentMode = mode;
|
||||||
|
|
||||||
_WindowVisible = false;
|
_WindowVisible = false;
|
||||||
_FullScreen = false;
|
|
||||||
_Resizable = resizeable;
|
_Resizable = resizeable;
|
||||||
_OffScreen = mode.OffScreen;
|
|
||||||
_DestroyWindow = false;
|
_DestroyWindow = false;
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
@ -566,7 +566,7 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
int pf;
|
int pf;
|
||||||
|
|
||||||
// Offscreen mode ?
|
// Offscreen mode ?
|
||||||
if (_OffScreen)
|
if (_CurrentMode.OffScreen)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
if (!createWindow(mode))
|
if (!createWindow(mode))
|
||||||
|
@ -581,7 +581,7 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
// Get the
|
// Get the
|
||||||
HDC tempHDC = GetDC(tmpHWND);
|
HDC tempHDC = GetDC(tmpHWND);
|
||||||
|
|
||||||
_Depth=uint8(GetDeviceCaps(tempHDC,BITSPIXEL));
|
_CurrentMode.Depth = uint8(GetDeviceCaps(tempHDC,BITSPIXEL));
|
||||||
|
|
||||||
// ---
|
// ---
|
||||||
memset(&_pfd,0,sizeof(_pfd));
|
memset(&_pfd,0,sizeof(_pfd));
|
||||||
|
@ -589,10 +589,10 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
_pfd.nVersion = 1;
|
_pfd.nVersion = 1;
|
||||||
_pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
|
_pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
|
||||||
_pfd.iPixelType = PFD_TYPE_RGBA;
|
_pfd.iPixelType = PFD_TYPE_RGBA;
|
||||||
_pfd.cColorBits = (char)_Depth;
|
_pfd.cColorBits = (char)_CurrentMode.Depth;
|
||||||
|
|
||||||
// Choose best suited Depth Buffer.
|
// Choose best suited Depth Buffer.
|
||||||
if(_Depth<=16)
|
if(_CurrentMode.Depth<=16)
|
||||||
{
|
{
|
||||||
_pfd.cDepthBits = 16;
|
_pfd.cDepthBits = 16;
|
||||||
}
|
}
|
||||||
|
@ -760,8 +760,8 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_WindowWidth = width;
|
_CurrentMode.Width = width;
|
||||||
_WindowHeight = height;
|
_CurrentMode.Height = height;
|
||||||
|
|
||||||
/* The next step is to create a device context for the newly created pbuffer. To do this,
|
/* The next step is to create a device context for the newly created pbuffer. To do this,
|
||||||
call to the function: */
|
call to the function: */
|
||||||
|
@ -801,7 +801,7 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the depth
|
// Get the depth
|
||||||
_Depth = uint8(GetDeviceCaps (_hDC, BITSPIXEL));
|
_CurrentMode.Depth = uint8(GetDeviceCaps (_hDC, BITSPIXEL));
|
||||||
|
|
||||||
// Destroy the temp gl context
|
// Destroy the temp gl context
|
||||||
if (!wglDeleteContext (tempGLRC))
|
if (!wglDeleteContext (tempGLRC))
|
||||||
|
@ -852,16 +852,16 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
_hDC=GetDC(_win);
|
_hDC=GetDC(_win);
|
||||||
wglMakeCurrent(_hDC,NULL);
|
wglMakeCurrent(_hDC,NULL);
|
||||||
|
|
||||||
_Depth=uint8(GetDeviceCaps(_hDC,BITSPIXEL));
|
_CurrentMode.Depth = uint8(GetDeviceCaps(_hDC,BITSPIXEL));
|
||||||
// ---
|
// ---
|
||||||
memset(&_pfd,0,sizeof(_pfd));
|
memset(&_pfd,0,sizeof(_pfd));
|
||||||
_pfd.nSize = sizeof(_pfd);
|
_pfd.nSize = sizeof(_pfd);
|
||||||
_pfd.nVersion = 1;
|
_pfd.nVersion = 1;
|
||||||
_pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
|
_pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
|
||||||
_pfd.iPixelType = PFD_TYPE_RGBA;
|
_pfd.iPixelType = PFD_TYPE_RGBA;
|
||||||
_pfd.cColorBits = (char)_Depth;
|
_pfd.cColorBits = _CurrentMode.Depth;
|
||||||
// Choose best suited Depth Buffer.
|
// Choose best suited Depth Buffer.
|
||||||
if(_Depth<=16)
|
if(_CurrentMode.Depth <= 16)
|
||||||
{
|
{
|
||||||
_pfd.cDepthBits = 16;
|
_pfd.cDepthBits = 16;
|
||||||
}
|
}
|
||||||
|
@ -963,8 +963,8 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
nlerror("cannot create NSOpenGLPixelFormat");
|
nlerror("cannot create NSOpenGLPixelFormat");
|
||||||
|
|
||||||
// intially set height/width, further updates through CocoaOpenGLView
|
// intially set height/width, further updates through CocoaOpenGLView
|
||||||
_WindowHeight = mode.Height;
|
_CurrentMode.Height = mode.Height;
|
||||||
_WindowWidth = mode.Width;
|
_CurrentMode.Width = mode.Width;
|
||||||
|
|
||||||
// create a opengl view with the created format
|
// create a opengl view with the created format
|
||||||
_glView = [[CocoaOpenGLView alloc]
|
_glView = [[CocoaOpenGLView alloc]
|
||||||
|
@ -1087,7 +1087,7 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
|
||||||
if (!setMode(mode))
|
if (!setMode(mode))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (show || _FullScreen)
|
if (show || !_CurrentMode.Windowed)
|
||||||
showWindow(true);
|
showWindow(true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -1261,14 +1261,14 @@ bool CDriverGL::setScreenMode(const GfxMode &mode)
|
||||||
if (mode.Windowed)
|
if (mode.Windowed)
|
||||||
{
|
{
|
||||||
// if fullscreen, switch back to desktop screen mode
|
// if fullscreen, switch back to desktop screen mode
|
||||||
if (_FullScreen)
|
if (!_CurrentMode.Windowed)
|
||||||
restoreScreenMode();
|
restoreScreenMode();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// save previous screen mode only if switching from windowed to fullscreen
|
// save previous screen mode only if switching from windowed to fullscreen
|
||||||
if (!_FullScreen)
|
if (_CurrentMode.Windowed)
|
||||||
saveScreenMode();
|
saveScreenMode();
|
||||||
|
|
||||||
// if switching exactly to the same screen mode, doesn't change it
|
// if switching exactly to the same screen mode, doesn't change it
|
||||||
|
@ -1506,8 +1506,8 @@ bool CDriverGL::createWindow(const GfxMode &mode)
|
||||||
|
|
||||||
_win = window;
|
_win = window;
|
||||||
|
|
||||||
_WindowWidth = mode.Width;
|
_CurrentMode.Width = mode.Width;
|
||||||
_WindowHeight = mode.Height;
|
_CurrentMode.Height = mode.Height;
|
||||||
|
|
||||||
// Must destroy this window
|
// Must destroy this window
|
||||||
_DestroyWindow = true;
|
_DestroyWindow = true;
|
||||||
|
@ -1597,7 +1597,7 @@ CDriverGL::EWindowStyle CDriverGL::getWindowStyle() const
|
||||||
{
|
{
|
||||||
H_AUTO_OGL(CDriverGL_getWindowStyle)
|
H_AUTO_OGL(CDriverGL_getWindowStyle)
|
||||||
|
|
||||||
if (_FullScreen)
|
if (!_CurrentMode.Windowed)
|
||||||
return EWSFullscreen;
|
return EWSFullscreen;
|
||||||
|
|
||||||
return EWSWindowed;
|
return EWSWindowed;
|
||||||
|
@ -1631,7 +1631,7 @@ bool CDriverGL::setWindowStyle(EWindowStyle windowStyle)
|
||||||
bool isMaximized = GetWindowPlacement(_win, &wndpl) && (wndpl.showCmd == SW_SHOWMAXIMIZED);
|
bool isMaximized = GetWindowPlacement(_win, &wndpl) && (wndpl.showCmd == SW_SHOWMAXIMIZED);
|
||||||
bool isVisible = false;
|
bool isVisible = false;
|
||||||
|
|
||||||
if (windowStyle == EWSWindowed && !_OffScreen)
|
if (windowStyle == EWSWindowed && !_CurrentMode.OffScreen)
|
||||||
{
|
{
|
||||||
dwNewStyle |= WS_OVERLAPPEDWINDOW;
|
dwNewStyle |= WS_OVERLAPPEDWINDOW;
|
||||||
|
|
||||||
|
@ -1764,7 +1764,7 @@ bool CDriverGL::setWindowStyle(EWindowStyle windowStyle)
|
||||||
|
|
||||||
#endif // NL_OS_WINDOWS
|
#endif // NL_OS_WINDOWS
|
||||||
|
|
||||||
_FullScreen = (windowStyle == EWSFullscreen);
|
_CurrentMode.Windowed = (windowStyle == EWSWindowed);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1784,13 +1784,12 @@ bool CDriverGL::setMode(const GfxMode& mode)
|
||||||
setWindowStyle(mode.Windowed ? EWSWindowed : EWSFullscreen);
|
setWindowStyle(mode.Windowed ? EWSWindowed : EWSFullscreen);
|
||||||
|
|
||||||
if (!mode.Windowed)
|
if (!mode.Windowed)
|
||||||
_Depth = mode.Depth;
|
_CurrentMode.Depth = mode.Depth;
|
||||||
|
|
||||||
// to be sure window size is correct after changing style
|
|
||||||
setWindowSize(mode.Width, mode.Height);
|
setWindowSize(mode.Width, mode.Height);
|
||||||
setWindowPos(_WindowX, _WindowY);
|
setWindowPos(_WindowX, _WindowY);
|
||||||
|
|
||||||
switch (_Depth)
|
switch (_CurrentMode.Depth)
|
||||||
{
|
{
|
||||||
case 16: _ColorDepth = ColorDepth16; break;
|
case 16: _ColorDepth = ColorDepth16; break;
|
||||||
case 24:
|
case 24:
|
||||||
|
@ -2034,13 +2033,13 @@ bool CDriverGL::getCurrentScreenMode(GfxMode &mode)
|
||||||
devmode.dmDriverExtra = 0;
|
devmode.dmDriverExtra = 0;
|
||||||
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
|
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
|
||||||
|
|
||||||
mode.Windowed = !_FullScreen;
|
mode.Windowed = _CurrentMode.Windowed;
|
||||||
mode.OffScreen = false;
|
mode.OffScreen = _CurrentMode.OffScreen;
|
||||||
mode.Depth = (uint8)devmode.dmBitsPerPel;
|
mode.Depth = (uint8)devmode.dmBitsPerPel;
|
||||||
mode.Frequency = devmode.dmDisplayFrequency,
|
mode.Frequency = devmode.dmDisplayFrequency;
|
||||||
mode.Width = (uint16)devmode.dmPelsWidth;
|
mode.Width = (uint16)devmode.dmPelsWidth;
|
||||||
mode.Height = (uint16)devmode.dmPelsHeight;
|
mode.Height = (uint16)devmode.dmPelsHeight;
|
||||||
mode.AntiAlias = _AntiAliasing;
|
mode.AntiAlias = _CurrentMode.AntiAlias;
|
||||||
|
|
||||||
#elif defined(NL_OS_MAC)
|
#elif defined(NL_OS_MAC)
|
||||||
|
|
||||||
|
@ -2145,7 +2144,7 @@ bool CDriverGL::getCurrentScreenMode(GfxMode &mode)
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
mode.Windowed = !_FullScreen;
|
mode.Windowed = !_FullScreen;
|
||||||
mode.OffScreen = _OffScreen;
|
mode.OffScreen = _CurrentMode.OffScreen;
|
||||||
mode.Depth = (uint) DefaultDepth(_dpy, screen);
|
mode.Depth = (uint) DefaultDepth(_dpy, screen);
|
||||||
mode.Frequency = 0;
|
mode.Frequency = 0;
|
||||||
mode.Width = DisplayWidth(_dpy, screen);
|
mode.Width = DisplayWidth(_dpy, screen);
|
||||||
|
@ -2199,7 +2198,7 @@ void CDriverGL::setWindowPos(sint32 x, sint32 y)
|
||||||
_WindowX = x;
|
_WindowX = x;
|
||||||
_WindowY = y;
|
_WindowY = y;
|
||||||
|
|
||||||
if (_win == EmptyWindow || _FullScreen)
|
if (_win == EmptyWindow || !_CurrentMode.Windowed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
@ -2357,7 +2356,7 @@ void CDriverGL::getWindowSize(uint32 &width, uint32 &height)
|
||||||
{
|
{
|
||||||
H_AUTO_OGL(CDriverGL_getWindowSize)
|
H_AUTO_OGL(CDriverGL_getWindowSize)
|
||||||
|
|
||||||
if (_OffScreen)
|
if (_CurrentMode.OffScreen)
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
if (_PBuffer)
|
if (_PBuffer)
|
||||||
|
@ -2377,8 +2376,8 @@ void CDriverGL::getWindowSize(uint32 &width, uint32 &height)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
width = _WindowWidth;
|
width = _CurrentMode.Width;
|
||||||
height = _WindowHeight;
|
height = _CurrentMode.Height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2397,15 +2396,15 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height)
|
||||||
AdjustWindowRectEx(&rc, GetWindowStyle(_win), GetMenu(_win) != NULL, GetWindowExStyle(_win));
|
AdjustWindowRectEx(&rc, GetWindowStyle(_win), GetMenu(_win) != NULL, GetWindowExStyle(_win));
|
||||||
UINT flags = SWP_NOZORDER | SWP_NOACTIVATE;
|
UINT flags = SWP_NOZORDER | SWP_NOACTIVATE;
|
||||||
// set position to (0, 0) if fullscreen
|
// set position to (0, 0) if fullscreen
|
||||||
if (!_FullScreen)
|
if (_CurrentMode.Windowed)
|
||||||
flags |= SWP_NOMOVE;
|
flags |= SWP_NOMOVE;
|
||||||
SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags);
|
SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags);
|
||||||
|
|
||||||
// init window width and height
|
// init window width and height
|
||||||
RECT clientRect;
|
RECT clientRect;
|
||||||
GetClientRect(_win, &clientRect);
|
GetClientRect(_win, &clientRect);
|
||||||
_WindowWidth = clientRect.right-clientRect.left;
|
_CurrentMode.Width = uint16(clientRect.right-clientRect.left);
|
||||||
_WindowHeight = clientRect.bottom-clientRect.top;
|
_CurrentMode.Height = uint16(clientRect.bottom-clientRect.top);
|
||||||
GetWindowRect(_win, &clientRect);
|
GetWindowRect(_win, &clientRect);
|
||||||
_WindowX = clientRect.left;
|
_WindowX = clientRect.left;
|
||||||
_WindowY = clientRect.top;
|
_WindowY = clientRect.top;
|
||||||
|
@ -2457,8 +2456,8 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height)
|
||||||
// resize the window
|
// resize the window
|
||||||
XResizeWindow(_dpy, _win, width, height);
|
XResizeWindow(_dpy, _win, width, height);
|
||||||
|
|
||||||
_WindowWidth = width;
|
_CurrentMode.Width = width;
|
||||||
_WindowHeight = height;
|
_CurrentMode.Height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update WM hints (allow resizing)
|
// Update WM hints (allow resizing)
|
||||||
|
@ -2484,7 +2483,7 @@ void CDriverGL::getWindowPos(sint32 &x, sint32 &y)
|
||||||
H_AUTO_OGL(CDriverGL_getWindowPos)
|
H_AUTO_OGL(CDriverGL_getWindowPos)
|
||||||
|
|
||||||
// Off-screen rendering ?
|
// Off-screen rendering ?
|
||||||
if (_OffScreen)
|
if (_CurrentMode.OffScreen)
|
||||||
{
|
{
|
||||||
x = y = 0;
|
x = y = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue