Try to handle fetching the player frame slightly safely

Maybe a fix for KICAD-3A
This commit is contained in:
Marek Roszko 2023-01-23 21:57:56 -05:00
parent 7a113a6a44
commit 679a3a6552
1 changed files with 5 additions and 2 deletions

View File

@ -382,12 +382,15 @@ KIWAY_PLAYER* KIWAY::GetPlayerFrame( FRAME_T aFrameType )
wxWindow* frame = wxWindow::FindWindowById( storedId );
// sanity check to ensure we didn't somehow get a bad window
KIWAY_PLAYER* player = dynamic_cast<KIWAY_PLAYER*>( frame );
// Since wxWindow::FindWindow*() is not cheap (especially if the window does not exist),
// clear invalid entries to save CPU on repeated calls that do not lead to frame creation
if( !frame )
if( !frame || !player )
m_playerFrameId[aFrameType].compare_exchange_strong( storedId, wxID_NONE );
return static_cast<KIWAY_PLAYER*>( frame );
return player;
}