Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv2448
Modified Files:
Menus.cpp TrackPanel.cpp TrackPanel.h
Log Message:
Fix memleak (menus weren't being deleted)
Index: Menus.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Menus.cpp,v
retrieving revision 1.450
retrieving revision 1.451
diff -u -d -r1.450 -r1.451
--- Menus.cpp 23 Mar 2009 10:56:39 -0000 1.450
+++ Menus.cpp 23 Mar 2009 18:26:05 -0000 1.451
@@ -1267,6 +1267,13 @@
ModuleManager::Dispatch(MenusRebuilt);
}
+void AudacityProject::RebuildOtherMenus()
+{
+ if (mTrackPanel) {
+ mTrackPanel->BuildMenus();
+ }
+}
+
int AudacityProject::GetFocusedFrame()
{
wxWindow *w = FindFocus();
Index: TrackPanel.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.cpp,v
retrieving revision 1.431
retrieving revision 1.432
diff -u -d -r1.431 -r1.432
--- TrackPanel.cpp 23 Mar 2009 00:32:54 -0000 1.431
+++ TrackPanel.cpp 23 Mar 2009 18:26:05 -0000 1.432
@@ -487,6 +487,12 @@
mAdjustLeftSelectionCursor = new wxCursor(wxCURSOR_POINT_LEFT);
mAdjustRightSelectionCursor = new wxCursor(wxCURSOR_POINT_RIGHT);
+ mWaveTrackMenu = NULL;
+ mNoteTrackMenu = NULL;
+ mLabelTrackMenu = NULL;
+ mLabelTrackInfoMenu = NULL;
+ mTimeTrackMenu = NULL;
+
BuildMenus();
mTrackArtist = new TrackArtist();
@@ -525,8 +531,49 @@
mLastIndicator = -1;
}
+TrackPanel::~TrackPanel()
+{
+ mTimer.Stop();
+
+ // This can happen if a label is being edited and the user presses
+ // ALT+F4 or Command+Q
+ if (HasCapture())
+ ReleaseMouse();
+
+ if (mBacking)
+ {
+ mBackingDC.SelectObject( wxNullBitmap );
+ delete mBacking;
+ }
+// delete mAx;
+ delete mTrackArtist;
+
+ delete mArrowCursor;
+ delete mPencilCursor;
+ delete mSelectCursor;
+ delete mEnvelopeCursor;
+ delete mDisabledCursor;
+ delete mSlideCursor;
+ delete mResizeCursor;
+ delete mSmoothCursor;
+ delete mZoomInCursor;
+ delete mZoomOutCursor;
+ delete mLabelCursorLeft;
+ delete mLabelCursorRight;
+ delete mRearrangeCursor;
+ delete mAdjustLeftSelectionCursor;
+ delete mAdjustRightSelectionCursor;
+
+ delete mSnapManager;
+
+ DeleteMenus();
+}
+
void TrackPanel::BuildMenus(void)
{
+ // Get rid of existing menus
+ DeleteMenus();
+
// Use AppendCheckItem so we can have ticks beside the items.
// We would use AppendRadioItem but it only currently works on windows and
GTK.
mRateMenu = new wxMenu();
@@ -598,53 +645,34 @@
mLabelTrackInfoMenu->Append(OnPasteSelectedTextID, _("Paste"));
}
-void AudacityProject::RebuildOtherMenus()
-{
- mTrackPanel->BuildMenus();
-}
-
-TrackPanel::~TrackPanel()
+void TrackPanel::DeleteMenus(void)
{
- mTimer.Stop();
-
- // This can happen if a label is being edited and the user presses
- // ALT+F4 or Command+Q
- if (HasCapture())
- ReleaseMouse();
+ // Note that the submenus (mRateMenu, ...)
+ // are deleted by their parent
+ if (mWaveTrackMenu) {
+ delete mWaveTrackMenu;
+ mWaveTrackMenu = NULL;
+ }
- if (mBacking)
- {
- mBackingDC.SelectObject( wxNullBitmap );
- delete mBacking;
+ if (mNoteTrackMenu) {
+ delete mNoteTrackMenu;
+ mNoteTrackMenu = NULL;
}
-// delete mAx;
- delete mTrackArtist;
- delete mArrowCursor;
- delete mPencilCursor;
- delete mSelectCursor;
- delete mEnvelopeCursor;
- delete mDisabledCursor;
- delete mSlideCursor;
- delete mResizeCursor;
- delete mSmoothCursor;
- delete mZoomInCursor;
- delete mZoomOutCursor;
- delete mLabelCursorLeft;
- delete mLabelCursorRight;
- delete mRearrangeCursor;
- delete mAdjustLeftSelectionCursor;
- delete mAdjustRightSelectionCursor;
+ if (mLabelTrackMenu) {
+ delete mLabelTrackMenu;
+ mLabelTrackMenu = NULL;
+ }
- delete mSnapManager;
+ if (mLabelTrackInfoMenu) {
+ delete mLabelTrackInfoMenu;
+ mLabelTrackInfoMenu = NULL;
+ }
- // Note that the submenus (mRateMenu, ...)
- // are deleted by their parent
- delete mWaveTrackMenu;
- delete mNoteTrackMenu;
- delete mLabelTrackMenu;
- delete mLabelTrackInfoMenu;
- delete mTimeTrackMenu;
+ if (mTimeTrackMenu) {
+ delete mTimeTrackMenu;
+ mTimeTrackMenu = NULL;
+ }
}
void TrackPanel::UpdatePrefs()
Index: TrackPanel.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/TrackPanel.h,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -d -r1.130 -r1.131
--- TrackPanel.h 23 Mar 2009 00:32:54 -0000 1.130
+++ TrackPanel.h 23 Mar 2009 18:26:05 -0000 1.131
@@ -138,6 +138,8 @@
virtual ~ TrackPanel();
void BuildMenus(void);
+ void DeleteMenus(void);
+
void UpdatePrefs();
void OnSize(wxSizeEvent & event);
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs