mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-27 19:30:54 +00:00
Changed: #970 Move all window and input related methods to a new file from OpenGL driver
This commit is contained in:
parent
934d39b4cb
commit
32643a11d2
2 changed files with 89 additions and 59 deletions
|
@ -1248,6 +1248,7 @@ void registerGlExtensions(CGlExtensions &ext)
|
|||
// Disable feature ???
|
||||
if(!ext.DisableHardwareVertexArrayAGP)
|
||||
ext.NVVertexArrayRange= setupNVVertexArrayRange(glext);
|
||||
|
||||
if(ext.NVVertexArrayRange)
|
||||
{
|
||||
GLint nverts;
|
||||
|
@ -1255,7 +1256,6 @@ void registerGlExtensions(CGlExtensions &ext)
|
|||
ext.NVVertexArrayRangeMaxVertex= nverts;
|
||||
}
|
||||
|
||||
|
||||
// Compression S3TC OK iff ARBTextureCompression.
|
||||
ext.EXTTextureCompressionS3TC= (ext.ARBTextureCompression && setupEXTTextureCompressionS3TC(glext));
|
||||
|
||||
|
@ -1268,7 +1268,6 @@ void registerGlExtensions(CGlExtensions &ext)
|
|||
// Check NVTextureEnvCombine4.
|
||||
ext.NVTextureEnvCombine4= setupNVTextureEnvCombine4(glext);
|
||||
|
||||
|
||||
// Check for cube mapping
|
||||
ext.ARBTextureCubeMap = setupARBTextureCubeMap(glext);
|
||||
|
||||
|
@ -1304,8 +1303,6 @@ void registerGlExtensions(CGlExtensions &ext)
|
|||
ext.ARBFragmentProgram = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// For now, the only way to know if emulation, is to test some extension which exist only on GeForce3.
|
||||
// if GL_NV_texture_shader is not here, then we are not on GeForce3.
|
||||
ext.NVVertexProgramEmulated= ext.NVVertexProgram && (strstr(glext, "GL_NV_texture_shader")==NULL);
|
||||
|
@ -1318,6 +1315,7 @@ void registerGlExtensions(CGlExtensions &ext)
|
|||
|
||||
// Check NVVertexArrayRange2
|
||||
ext.NVVertexArrayRange2= setupNVVertexArrayRange2(glext);
|
||||
|
||||
// if supported
|
||||
if(ext.NVVertexArrayRange2)
|
||||
// VBHard swap without flush of the VAR.
|
||||
|
|
|
@ -1570,26 +1570,32 @@ NLMISC::IMouseDevice* CDriverGL::enableLowLevelMouse(bool enable, bool exclusive
|
|||
{
|
||||
H_AUTO_OGL(CDriverGL_enableLowLevelMouse)
|
||||
|
||||
NLMISC::IMouseDevice *res = NULL;
|
||||
|
||||
#ifdef NL_OS_WINDOWS
|
||||
if (_EventEmitter.getNumEmitters() < 2) return NULL;
|
||||
NLMISC::CDIEventEmitter *diee = NLMISC::safe_cast<CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
if (enable)
|
||||
|
||||
NLMISC::CDIEventEmitter *diee = NULL;
|
||||
|
||||
if (_EventEmitter.getNumEmitters() > 1)
|
||||
diee = NLMISC::safe_cast<CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
|
||||
if (enable)
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
NLMISC::IMouseDevice *md = diee->getMouseDevice(exclusive);
|
||||
return md;
|
||||
}
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
if (diee)
|
||||
res = diee->getMouseDevice(exclusive);
|
||||
}
|
||||
else
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diee)
|
||||
diee->releaseMouse();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(NL_OS_MAC) && defined(NL_MAC_NATIVE)
|
||||
# warning "OpenGL Driver: Missing Mac Implementation"
|
||||
nlwarning("OpenGL Driver: Missing Mac Implementation");
|
||||
|
@ -1597,33 +1603,41 @@ NLMISC::IMouseDevice* CDriverGL::enableLowLevelMouse(bool enable, bool exclusive
|
|||
#elif defined (NL_OS_UNIX)
|
||||
|
||||
#endif
|
||||
return NULL;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
NLMISC::IKeyboardDevice* CDriverGL::enableLowLevelKeyboard(bool enable)
|
||||
{
|
||||
H_AUTO_OGL(CDriverGL_enableLowLevelKeyboard)
|
||||
|
||||
NLMISC::IKeyboardDevice *res = NULL;
|
||||
|
||||
#ifdef NL_OS_WINDOWS
|
||||
if (_EventEmitter.getNumEmitters() < 2) return NULL;
|
||||
NLMISC::CDIEventEmitter *diee = NLMISC::safe_cast<NLMISC::CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
if (enable)
|
||||
|
||||
NLMISC::CDIEventEmitter *diee = NULL;
|
||||
|
||||
if (_EventEmitter.getNumEmitters() > 1)
|
||||
diee = NLMISC::safe_cast<NLMISC::CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
|
||||
if (enable)
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
NLMISC::IKeyboardDevice *md = diee->getKeyboardDevice();
|
||||
return md;
|
||||
}
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
if (diee)
|
||||
res = diee->getKeyboardDevice();
|
||||
}
|
||||
else
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diee)
|
||||
diee->releaseKeyboard();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(NL_OS_MAC) && defined(NL_MAC_NATIVE)
|
||||
# warning "OpenGL Driver: Missing Mac Implementation"
|
||||
nlwarning("OpenGL Driver: Missing Mac Implementation");
|
||||
|
@ -1631,17 +1645,22 @@ NLMISC::IKeyboardDevice* CDriverGL::enableLowLevelKeyboard(bool enable)
|
|||
#elif defined (NL_OS_UNIX)
|
||||
|
||||
#endif
|
||||
return NULL;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
NLMISC::IInputDeviceManager* CDriverGL::getLowLevelInputDeviceManager()
|
||||
{
|
||||
H_AUTO_OGL(CDriverGL_getLowLevelInputDeviceManager)
|
||||
|
||||
NLMISC::IInputDeviceManager *res = NULL;
|
||||
|
||||
#ifdef NL_OS_WINDOWS
|
||||
if (_EventEmitter.getNumEmitters() < 2) return NULL;
|
||||
NLMISC::CDIEventEmitter *diee = NLMISC::safe_cast<NLMISC::CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
return diee;
|
||||
|
||||
if (_EventEmitter.getNumEmitters() > 1)
|
||||
res = NLMISC::safe_cast<NLMISC::CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
|
||||
#elif defined(NL_OS_MAC) && defined(NL_MAC_NATIVE)
|
||||
# warning "OpenGL Driver: Missing Mac Implementation"
|
||||
nlwarning("OpenGL Driver: Missing Mac Implementation");
|
||||
|
@ -1649,7 +1668,8 @@ NLMISC::IInputDeviceManager* CDriverGL::getLowLevelInputDeviceManager()
|
|||
#elif defined (NL_OS_UNIX)
|
||||
|
||||
#endif
|
||||
return NULL;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
@ -1657,37 +1677,49 @@ uint CDriverGL::getDoubleClickDelay(bool hardwareMouse)
|
|||
{
|
||||
H_AUTO_OGL(CDriverGL_getDoubleClickDelay)
|
||||
|
||||
uint res = 250;
|
||||
|
||||
#ifdef NL_OS_WINDOWS
|
||||
NLMISC::IMouseDevice *md = NULL;
|
||||
if (_EventEmitter.getNumEmitters() >= 2)
|
||||
|
||||
NLMISC::IMouseDevice *md = NULL;
|
||||
|
||||
if (_EventEmitter.getNumEmitters() >= 2)
|
||||
{
|
||||
NLMISC::CDIEventEmitter *diee = NLMISC::safe_cast<CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
if (diee->isMouseCreated())
|
||||
{
|
||||
NLMISC::CDIEventEmitter *diee = NLMISC::safe_cast<CDIEventEmitter *>(_EventEmitter.getEmitter(1));
|
||||
if (diee->isMouseCreated())
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
md = diee->getMouseDevice(hardwareMouse);
|
||||
}
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
// could not get device ..
|
||||
}
|
||||
md = diee->getMouseDevice(hardwareMouse);
|
||||
}
|
||||
catch (EDirectInput &)
|
||||
{
|
||||
// could not get device ..
|
||||
}
|
||||
}
|
||||
if (md)
|
||||
{
|
||||
return md->getDoubleClickDelay();
|
||||
}
|
||||
}
|
||||
|
||||
if (md)
|
||||
{
|
||||
res = md->getDoubleClickDelay();
|
||||
}
|
||||
else
|
||||
{
|
||||
// try to read the good value from windows
|
||||
return ::GetDoubleClickTime();
|
||||
res = ::GetDoubleClickTime();
|
||||
}
|
||||
|
||||
#elif defined(NL_OS_MAC) && defined(NL_MAC_NATIVE)
|
||||
# warning "OpenGL Driver: Missing Mac Implementation"
|
||||
nlwarning("OpenGL Driver: Missing Mac Implementation");
|
||||
|
||||
#elif defined (NL_OS_UNIX)
|
||||
// TODO for Linux FIXME: FAKE FIX
|
||||
return 250;
|
||||
|
||||
// TODO for Linux
|
||||
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
|
Loading…
Reference in a new issue