Minor fixes to the Tool Framework.
This commit is contained in:
parent
f7ecc749f6
commit
5f806cfa18
|
@ -470,8 +470,6 @@ void TOOL_MANAGER::finishTool( TOOL_STATE* aState )
|
||||||
|
|
||||||
bool TOOL_MANAGER::ProcessEvent( TOOL_EVENT& aEvent )
|
bool TOOL_MANAGER::ProcessEvent( TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
// wxLogDebug( "event: %s", aEvent.Format().c_str() );
|
|
||||||
|
|
||||||
// Early dispatch of events destined for the TOOL_MANAGER
|
// Early dispatch of events destined for the TOOL_MANAGER
|
||||||
if( !dispatchStandardEvents( aEvent ) )
|
if( !dispatchStandardEvents( aEvent ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -56,11 +56,10 @@ template <class ReturnType, class ArgType>
|
||||||
class COROUTINE
|
class COROUTINE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
COROUTINE()
|
COROUTINE() :
|
||||||
|
m_saved( NULL ), m_self( NULL ), m_stack( NULL ), m_stackSize( c_defaultStackSize ),
|
||||||
|
m_running( false )
|
||||||
{
|
{
|
||||||
m_stackSize = c_defaultStackSize;
|
|
||||||
m_stack = NULL;
|
|
||||||
m_saved = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -69,7 +68,8 @@ public:
|
||||||
*/
|
*/
|
||||||
template <class T>
|
template <class T>
|
||||||
COROUTINE( T* object, ReturnType(T::* ptr)( ArgType ) ) :
|
COROUTINE( T* object, ReturnType(T::* ptr)( ArgType ) ) :
|
||||||
m_func( object, ptr ), m_saved( NULL ), m_stack( NULL ), m_stackSize( c_defaultStackSize )
|
m_func( object, ptr ), m_self( NULL ), m_saved( NULL ), m_stack( NULL ),
|
||||||
|
m_stackSize( c_defaultStackSize ), m_running( false )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,8 +78,10 @@ public:
|
||||||
* Creates a coroutine from a delegate object
|
* Creates a coroutine from a delegate object
|
||||||
*/
|
*/
|
||||||
COROUTINE( DELEGATE<ReturnType, ArgType> aEntry ) :
|
COROUTINE( DELEGATE<ReturnType, ArgType> aEntry ) :
|
||||||
m_func( aEntry ), m_saved( NULL ), m_stack( NULL ), m_stackSize( c_defaultStackSize )
|
m_func( aEntry ), m_saved( NULL ), m_self( NULL ), m_stack( NULL ),
|
||||||
{};
|
m_stackSize( c_defaultStackSize ), m_running( false )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
~COROUTINE()
|
~COROUTINE()
|
||||||
{
|
{
|
||||||
|
@ -138,6 +140,12 @@ public:
|
||||||
// align to 16 bytes
|
// align to 16 bytes
|
||||||
void* sp = (void*) ( ( ( (ptrdiff_t) m_stack ) + m_stackSize - 0xf ) & ( ~0x0f ) );
|
void* sp = (void*) ( ( ( (ptrdiff_t) m_stack ) + m_stackSize - 0xf ) & ( ~0x0f ) );
|
||||||
|
|
||||||
|
// correct the stack size
|
||||||
|
m_stackSize -= ( (size_t) m_stack + m_stackSize - (size_t) sp );
|
||||||
|
|
||||||
|
assert( m_self == NULL );
|
||||||
|
assert( m_saved == NULL );
|
||||||
|
|
||||||
m_args = &aArgs;
|
m_args = &aArgs;
|
||||||
m_self = boost::context::make_fcontext( sp, m_stackSize, callerStub );
|
m_self = boost::context::make_fcontext( sp, m_stackSize, callerStub );
|
||||||
m_saved = new boost::context::fcontext_t();
|
m_saved = new boost::context::fcontext_t();
|
||||||
|
|
|
@ -318,9 +318,6 @@ public:
|
||||||
|
|
||||||
if( m_commandId && aEvent.m_commandId )
|
if( m_commandId && aEvent.m_commandId )
|
||||||
return *m_commandId == *aEvent.m_commandId;
|
return *m_commandId == *aEvent.m_commandId;
|
||||||
|
|
||||||
// Command-type event has to contain either id or string
|
|
||||||
assert( false );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -496,7 +493,6 @@ inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& aEventA, const TOOL_E
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& aEvent,
|
inline const TOOL_EVENT_LIST operator||( const TOOL_EVENT& aEvent,
|
||||||
const TOOL_EVENT_LIST& aEventList )
|
const TOOL_EVENT_LIST& aEventList )
|
||||||
{
|
{
|
||||||
|
|
|
@ -384,9 +384,6 @@ private:
|
||||||
|
|
||||||
/// Flag saying if the currently processed event should be passed to other tools.
|
/// Flag saying if the currently processed event should be passed to other tools.
|
||||||
bool m_passEvent;
|
bool m_passEvent;
|
||||||
|
|
||||||
/// Pointer to the tool on the top of the active tools stack.
|
|
||||||
TOOL_STATE* m_currentTool;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue