diff --git a/stepmania/src/OptionRow.cpp b/stepmania/src/OptionRow.cpp index fd34760af7..60f3c5871d 100644 --- a/stepmania/src/OptionRow.cpp +++ b/stepmania/src/OptionRow.cpp @@ -103,21 +103,16 @@ void OptionRow::Clear() FOREACH_PlayerNumber( p ) m_Underline[p].clear(); - ASSERT( m_pHand == NULL ); - - m_bFirstItemGoesDown = false; - ZERO( m_bRowHasFocus ); - ZERO( m_iChoiceInRowWithFocus ); -} - -void OptionRow::DetachHandler() -{ if( m_pHand ) { FOREACH_CONST( CString, m_pHand->m_vsReloadRowMessages, m ) MESSAGEMAN->Unsubscribe( this, *m ); } - m_pHand = NULL; + SAFE_DELETE( m_pHand ); + + m_bFirstItemGoesDown = false; + ZERO( m_bRowHasFocus ); + ZERO( m_iChoiceInRowWithFocus ); } void OptionRowType::Load( const CString &sType ) diff --git a/stepmania/src/OptionRow.h b/stepmania/src/OptionRow.h index 824a9554c0..2c814fb884 100644 --- a/stepmania/src/OptionRow.h +++ b/stepmania/src/OptionRow.h @@ -144,7 +144,6 @@ public: void InitText(); void AfterImportOptions(); - void DetachHandler(); void PositionUnderlines( PlayerNumber pn ); void PositionIcons(); diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 61acadd8f1..5924daa93d 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -205,7 +205,6 @@ void ScreenOptions::InitMenu( const vector &vDefs, const ve for( unsigned i=0; iDetachHandler(); SAFE_DELETE( m_pRows[i] ); } m_pRows.clear(); diff --git a/stepmania/src/ScreenOptionsManageProfiles.cpp b/stepmania/src/ScreenOptionsManageProfiles.cpp index 8413722fc5..97bdaaea48 100644 --- a/stepmania/src/ScreenOptionsManageProfiles.cpp +++ b/stepmania/src/ScreenOptionsManageProfiles.cpp @@ -78,11 +78,6 @@ REGISTER_SCREEN_CLASS( ScreenOptionsManageProfiles ); ScreenOptionsManageProfiles::~ScreenOptionsManageProfiles() { - FOREACH( OptionRow*, m_pRows, r ) - (*r)->DetachHandler(); - FOREACH( OptionRowHandler*, m_OptionRowHandlers, h ) - SAFE_DELETE( *h ); - m_OptionRowHandlers.clear(); SAFE_DELETE( m_pContextMenu ); } @@ -101,12 +96,6 @@ void ScreenOptionsManageProfiles::Init() void ScreenOptionsManageProfiles::BeginScreen() { - FOREACH( OptionRow*, m_pRows, r ) - (*r)->DetachHandler(); - for( unsigned i = 0; i < m_OptionRowHandlers.size(); ++i ) - delete m_OptionRowHandlers[i]; - m_OptionRowHandlers.clear(); - OptionRowDefinition def; def.m_layoutType = LAYOUT_SHOW_ALL_IN_ROW; def.m_bAllowThemeTitle = false; @@ -114,13 +103,14 @@ void ScreenOptionsManageProfiles::BeginScreen() int iIndex = 0; vector vDefs; + vector OptionRowHandlers; if( SHOW_CREATE_NEW ) { OptionRowDefinition def; OptionRowHandler *pHand = OptionRowHandlerUtil::Make( ParseCommands("gamecommand;screen,ScreenOptionsEditProfile;name,Create New"), def ); vDefs.push_back( def ); - m_OptionRowHandlers.push_back( pHand ); + OptionRowHandlers.push_back( pHand ); // FIXME // gc.Load( iIndex++, ); @@ -138,13 +128,13 @@ void ScreenOptionsManageProfiles::BeginScreen() OptionRowHandler *pHand = OptionRowHandlerUtil::Make( ParseCommands(sCommand), def ); def.m_sName = ssprintf( "%d", iIndex ); vDefs.push_back( def ); - m_OptionRowHandlers.push_back( pHand ); + OptionRowHandlers.push_back( pHand ); // FIXME // gc.Load( iIndex++, ); } - ScreenOptions::InitMenu( vDefs, m_OptionRowHandlers ); + ScreenOptions::InitMenu( vDefs, OptionRowHandlers ); ScreenOptions::BeginScreen(); diff --git a/stepmania/src/ScreenOptionsManageProfiles.h b/stepmania/src/ScreenOptionsManageProfiles.h index 90a87e7151..7d138ef661 100644 --- a/stepmania/src/ScreenOptionsManageProfiles.h +++ b/stepmania/src/ScreenOptionsManageProfiles.h @@ -28,8 +28,6 @@ protected: vector m_vsLocalProfileID; - vector m_OptionRowHandlers; - ScreenMiniMenu *m_pContextMenu; }; diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index 3ba2f555c3..f0ac2379b6 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -51,6 +51,7 @@ void ScreenOptionsMaster::Init() vector OptionRowDefs; OptionRowDefs.resize( asLineNames.size() ); + vector OptionRowHandlers; for( unsigned i = 0; i < asLineNames.size(); ++i ) { CString sLineName = asLineNames[i]; @@ -63,22 +64,17 @@ void ScreenOptionsMaster::Init() OptionRowHandler *pHand = OptionRowHandlerUtil::Make( cmds, def ); if( pHand == NULL ) RageException::Throw( "Invalid OptionRowHandler '%s' in %s::Line%i", cmds.GetOriginalCommandString().c_str(), m_sName.c_str(), i ); - m_OptionRowHandlers.push_back( pHand ); + OptionRowHandlers.push_back( pHand ); } - ASSERT( m_OptionRowHandlers.size() == asLineNames.size() ); + ASSERT( OptionRowHandlers.size() == asLineNames.size() ); - InitMenu( OptionRowDefs, m_OptionRowHandlers ); + InitMenu( OptionRowDefs, OptionRowHandlers ); } ScreenOptionsMaster::~ScreenOptionsMaster() { - FOREACH( OptionRow*, m_pRows, r ) - (*r)->DetachHandler(); - FOREACH( OptionRowHandler*, m_OptionRowHandlers, h ) - SAFE_DELETE( *h ); - m_OptionRowHandlers.clear(); } void ScreenOptionsMaster::ImportOptions( int r, const vector &vpns ) @@ -91,7 +87,7 @@ void ScreenOptionsMaster::ImportOptions( int r, const vector &vpns void ScreenOptionsMaster::ExportOptions( int r, const vector &vpns ) { - CHECKPOINT_M( ssprintf("%i/%i", r, int(m_OptionRowHandlers.size())) ); + CHECKPOINT_M( ssprintf("%i/%i", r, int(m_pRows.size())) ); OptionRow &row = *m_pRows[r]; bool bRowHasFocus[NUM_PLAYERS]; diff --git a/stepmania/src/ScreenOptionsMaster.h b/stepmania/src/ScreenOptionsMaster.h index b88fa1532f..f3c51d1d0a 100644 --- a/stepmania/src/ScreenOptionsMaster.h +++ b/stepmania/src/ScreenOptionsMaster.h @@ -13,8 +13,6 @@ public: protected: int m_iChangeMask; - - vector m_OptionRowHandlers; protected: virtual void HandleScreenMessage( const ScreenMessage SM );