mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-26 16:07:31 +01:00
Replace list of hwnd -> IrrlichtDevice mapper with an array.
Single inserts/removes per device creating/destruction, but searchs on every event. Arrays are better for that than lists. Also document a bit. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6004 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
6ad09a3a25
commit
0b92a66c50
@ -677,13 +677,13 @@ static unsigned int LocaleIdToCodepage(unsigned int lcid)
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
// TODO: Why do we have a list here? Seems like it can only ever be one. Unfortunately code is older than svn log, so not sure about origins of this.
|
|
||||||
struct SEnvMapper
|
struct SEnvMapper
|
||||||
{
|
{
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
irr::CIrrDeviceWin32* irrDev;
|
irr::CIrrDeviceWin32* irrDev;
|
||||||
};
|
};
|
||||||
irr::core::list<SEnvMapper> EnvMap;
|
// NOTE: This is global. We can have more than one Irrlicht Device at same time.
|
||||||
|
irr::core::array<SEnvMapper> EnvMap;
|
||||||
|
|
||||||
HKL KEYBOARD_INPUT_HKL=0;
|
HKL KEYBOARD_INPUT_HKL=0;
|
||||||
unsigned int KEYBOARD_INPUT_CODEPAGE = 1252;
|
unsigned int KEYBOARD_INPUT_CODEPAGE = 1252;
|
||||||
@ -691,10 +691,13 @@ namespace
|
|||||||
|
|
||||||
irr::CIrrDeviceWin32* getDeviceFromHWnd(HWND hWnd)
|
irr::CIrrDeviceWin32* getDeviceFromHWnd(HWND hWnd)
|
||||||
{
|
{
|
||||||
irr::core::list<SEnvMapper>::Iterator it = EnvMap.begin();
|
const irr::u32 end = EnvMap.size();
|
||||||
for (; it!= EnvMap.end(); ++it)
|
for ( irr::u32 i=0; i < end; ++i )
|
||||||
if ((*it).hWnd == hWnd)
|
{
|
||||||
return (*it).irrDev;
|
const SEnvMapper& env = EnvMap[i];
|
||||||
|
if ( env.hWnd == hWnd )
|
||||||
|
return env.irrDev;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1132,13 +1135,11 @@ CIrrDeviceWin32::~CIrrDeviceWin32()
|
|||||||
delete JoyControl;
|
delete JoyControl;
|
||||||
|
|
||||||
// unregister environment
|
// unregister environment
|
||||||
|
for (u32 i=0; i< EnvMap.size(); ++i)
|
||||||
irr::core::list<SEnvMapper>::Iterator it = EnvMap.begin();
|
|
||||||
for (; it!= EnvMap.end(); ++it)
|
|
||||||
{
|
{
|
||||||
if ((*it).hWnd == HWnd)
|
if (EnvMap[i].hWnd == HWnd)
|
||||||
{
|
{
|
||||||
EnvMap.erase(it);
|
EnvMap.erase(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user