Hack to prevent multiple simulation commands from stacking up.
Can happen if someone hammers away on the probe and/or tune tools without ever mousing over the schematic in between. *May* fix the below bug. Fixes https://gitlab.com/kicad/code/kicad/issues/6876
This commit is contained in:
parent
22aa9132a3
commit
7688fdc94f
|
@ -219,3 +219,10 @@ bool TOOL_EVENT::IsMoveTool() const
|
||||||
return( m_commandStr.is_initialized()
|
return( m_commandStr.is_initialized()
|
||||||
&& m_commandStr.get().find( "InteractiveMove" ) != GetCommandStr()->npos );
|
&& m_commandStr.get().find( "InteractiveMove" ) != GetCommandStr()->npos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool TOOL_EVENT::IsSimulator() const
|
||||||
|
{
|
||||||
|
return( m_commandStr.is_initialized()
|
||||||
|
&& m_commandStr.get().find( "Simulation" ) != GetCommandStr()->npos );
|
||||||
|
}
|
|
@ -418,6 +418,11 @@ public:
|
||||||
*/
|
*/
|
||||||
bool IsMoveTool() const;
|
bool IsMoveTool() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicate if the event is from the simulator.
|
||||||
|
*/
|
||||||
|
bool IsSimulator() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a non-standard parameter assigned to the event. Its meaning depends on the
|
* Return a non-standard parameter assigned to the event. Its meaning depends on the
|
||||||
* target tool.
|
* target tool.
|
||||||
|
|
|
@ -266,6 +266,11 @@ public:
|
||||||
*/
|
*/
|
||||||
inline void PostEvent( const TOOL_EVENT& aEvent )
|
inline void PostEvent( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
|
// Horrific hack, but it's a crash bug. Don't let inter-frame commands stack up
|
||||||
|
// waiting to be processed.
|
||||||
|
if( aEvent.IsSimulator() && m_eventQueue.back().IsSimulator() )
|
||||||
|
m_eventQueue.pop_back();
|
||||||
|
|
||||||
m_eventQueue.push_back( aEvent );
|
m_eventQueue.push_back( aEvent );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue