thread safety

This commit is contained in:
Glenn Maynard
2003-07-14 06:21:12 +00:00
parent 4b4317854e
commit 5adb26a169
2 changed files with 14 additions and 2 deletions
+12 -2
View File
@@ -37,6 +37,8 @@ void InputFilter::ButtonPressed( DeviceInput di, bool Down )
m_fSecsHeld[di.device][di.button] = 0;
InputEventType iet = Down? IET_FIRST_PRESS:IET_RELEASE;
LockMut(queuemutex);
queue.push_back( InputEvent(di,iet) );
}
@@ -51,6 +53,10 @@ void InputFilter::Update(float fDeltaTime)
{
INPUTMAN->Update( fDeltaTime );
/* Make sure that nothing gets inserted while we do this, to prevent
* things like "key pressed, key release, key repeat". */
LockMut(queuemutex);
for( int d=0; d<NUM_INPUT_DEVICES; d++ ) // foreach InputDevice
{
for( int b=0; b < NUM_DEVICE_BUTTONS; b++ ) // foreach button
@@ -77,8 +83,11 @@ void InputFilter::Update(float fDeltaTime)
iet = IET_SLOW_REPEAT;
}
if( int(fOldHoldTime/fTimeBetweenRepeats) != int(fNewHoldTime/fTimeBetweenRepeats) )
queue.push_back( InputEvent(InputDevice(d),b,iet) );
{
RageTimer now;
DeviceInput di(InputDevice(d),b,now);
queue.push_back( InputEvent(di,iet) );
}
}
}
}
@@ -97,6 +106,7 @@ float InputFilter::GetSecsHeld( DeviceInput di )
void InputFilter::GetInputEvents( InputEventArray &array )
{
LockMut(queuemutex);
array = queue;
queue.clear();
}