#include "global.h" /* ----------------------------------------------------------------------------- Class: InputFilter Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "InputFilter.h" #include "RageLog.h" #include "RageInput.h" #include "RageThreads.h" InputFilter* INPUTFILTER = NULL; // global and accessable from anywhere in our program InputFilter::InputFilter() { Reset(); queuemutex = new RageMutex; } InputFilter::~InputFilter() { delete queuemutex; } void InputFilter::Reset() { for( int i=0; iUpdate( 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 TIME_BEFORE_SLOW_REPEATS ) { if( fOldHoldTime > TIME_BEFORE_FAST_REPEATS ) { fTimeBetweenRepeats = TIME_BETWEEN_FAST_REPEATS; iet = IET_FAST_REPEAT; } else { fTimeBetweenRepeats = TIME_BETWEEN_SLOW_REPEATS; iet = IET_SLOW_REPEAT; } if( int(fOldHoldTime/fTimeBetweenRepeats) != int(fNewHoldTime/fTimeBetweenRepeats) ) { RageTimer now; DeviceInput di( (InputDevice)d,b,now); queue.push_back( InputEvent(di,iet) ); } } } } } bool InputFilter::IsBeingPressed( DeviceInput di ) { return m_BeingHeld[di.device][di.button]; } float InputFilter::GetSecsHeld( DeviceInput di ) { return m_fSecsHeld[di.device][di.button]; } void InputFilter::GetInputEvents( InputEventArray &array ) { LockMut(*queuemutex); array = queue; queue.clear(); }