Paul Licameli
5aefa783c8
More of the exception safety project...
...
... Specifying non-throwing in some places wehre WaveTracks are read;
on failure, substitute zeroes instead and continue.
What remains is to rewrite operations in classes Sequence, WaveClip, and
WaveTrack with appropriate exception-safety guarantees; and then, to enable
new throw statements.
2017-03-21 21:09:25 -04:00
Paul Licameli
1b00c87c03
Where reading a WaveTrack, specify whether to allow exceptions...
...
... by default, yes; as in effects or export or other editing.
But no, for mere display operations, or playback, or sample hit test. In such
cases, substitute zeroes for unavailable data.
By stipulating no-throw in such places, there are fewer places that require
scrutiny for exception-safety.
The default exception handling would also be undesirable, because we don't want
such operations to cause repeated error dialogs.
2017-03-21 20:59:43 -04:00
Paul Licameli
38b8e57e4e
Specify whether to throw on bad read in Mixer and WaveTrackCache...
...
... Do throw when exporting or mixing-and-rendering; don't if playing back or
drawing a spectrogram, but then just use zeroes.
2017-03-21 17:23:35 -04:00
Paul Licameli
987b038fd8
Exception safety in overrides of WriteSummary
2017-03-21 17:23:35 -04:00
Paul Licameli
39b8d99a56
WaveTrack::Get, WaveClip::GetSamples take a mayThrow=true argument...
...
... and pass non-default in all needed places.
Don't throw, don't put up error dialogs, in drawing or hit-test code.
2017-03-21 17:23:34 -04:00
Paul Licameli
834a141cee
More of the exception safety project, no new throws yet
2017-03-21 14:21:49 -04:00
Paul Licameli
98d1468a01
BlockFile::ReadData overrides: on failure, pad with 0s or throw...
...
... as the mayThrow argument directs.
2017-03-21 14:19:03 -04:00
Paul Licameli
70d9e4bdc7
GetMinMax, GetRMS functions take a mayThrow argument, return numbers
2017-03-21 14:19:02 -04:00
Paul Licameli
dcac8788ff
Safeties where block file read/write exceptions need to propagate...
...
... I think this covers all places. Really.
The results of a very thorough examination of lots of code!
2017-03-21 14:17:13 -04:00
Paul Licameli
1552ff188f
When opening a file into a new project, delete the project on failure
2017-03-21 14:11:28 -04:00
Paul Licameli
2626f6cd5b
Exception safety in: subclasses of ImportFileHandle
2017-03-21 14:11:27 -04:00
Paul Licameli
ed6f2ea80f
Exception safety in: locking of BlockFile for read
2017-03-21 14:11:27 -04:00
Paul Licameli
f5fe9281e4
Strong safety guarantee for removing file dependencies
2017-03-21 14:11:26 -04:00
Paul Licameli
7159966eb4
Comment that cache-filling should be no-fail (we don't use it anyway)
2017-03-21 14:11:26 -04:00
Paul Licameli
54c1b0c955
Exception safety in: opening and saving of projects
2017-03-21 14:11:25 -04:00
Paul Licameli
4d4cd91d91
Hoist, and delay, the saving of import tag while opening the file...
...
... so that AudacityProject::AudacityProject no longer has a path in the
static call graph that reaches block file write operations that might throw.
So it is easier to prove that other functions, calling that, don't throw.
Also delay the possibly thowing save of the import until after certain other
steps in the file opening procedure.
2017-03-21 14:11:25 -04:00
Paul Licameli
22a12c6852
Exception safety in: some effects and generators...
...
... Those that directly call WaveTrack functions in their Process() routines,
which might throw exceptions for disk space exhaustion.
2017-03-21 14:11:25 -04:00
Paul Licameli
1fad6292a2
Exception safety in: overrides of ShowInterface
2017-03-21 14:11:24 -04:00
Paul Licameli
79c3bef2ce
Exception safety in: general effect performing functions
2017-03-21 14:11:24 -04:00
Paul Licameli
2cbdd1cc43
Exception safety in: ControlToolBar & Ruler functions...
...
... because SetupCutPreviewTracks has a small chance of throwing for want
of disk space.
StopStream however is considered nonthrowing.
2017-03-21 14:11:23 -04:00
Paul Licameli
0bb6a3d971
Exception safety in: importing functions...
...
... Side effects on preferences may persist even after errors.
2017-03-21 14:11:23 -04:00
Paul Licameli
0c8bedc59a
Exception safety in: subclasses of ExportPlugin; and more error checking
2017-03-21 14:11:22 -04:00
Paul Licameli
48459404a5
Exception safety in: general exporting routines
2017-03-21 14:11:22 -04:00
Paul Licameli
464828d88f
Exception safety in: batch processing
2017-03-21 14:11:21 -04:00
Paul Licameli
abbe9276f0
Exception safety in: CommandManager
2017-03-21 14:11:21 -04:00
Paul Licameli
40aa70a255
Exception safety for Edit toolbar button presses
2017-03-21 14:11:21 -04:00
Paul Licameli
664974d3ff
Exception safety in: ondemand
2017-03-21 14:11:20 -04:00
Paul Licameli
195732f074
Exception safety in: BatchCommands
2017-03-21 14:11:20 -04:00
Paul Licameli
1a90b7d942
TimerRecordDialog: comment why nothing need be done for exceptions
2017-03-21 14:11:20 -04:00
Paul Licameli
63e44e2b6b
Rearrange a few things in time shift button up...
...
... to reclaim some memory earlier, before possible throws
2017-03-21 14:11:19 -04:00
Paul Licameli
68c726918b
If exception in cut/copy, leave clipboard clear (no partial results)
2017-03-21 14:11:19 -04:00
Paul Licameli
41f1ebfb5d
Commit resampling of tracks to undo history one track at a time
2017-03-21 14:11:18 -04:00
Paul Licameli
82dd7545c9
Reviewed uses of release(); prefer Destroy_ptr to hold window objects
2017-03-21 14:11:18 -04:00
Paul Licameli
7927fe065f
Fix move constructors and assignments of AudacityException classes
2017-03-21 14:11:17 -04:00
Paul Licameli
e9a4fc8354
fix the XML writer -- don't throw if target path did not previously exist.
2017-03-21 14:11:17 -04:00
Paul Licameli
d812b7f8a4
Merge branch 'master' into HEAD
2017-03-21 14:10:27 -04:00
Paul Licameli
12e3d1d2e2
Small correction to parsing of LOF file
2017-03-21 11:21:25 -04:00
James Crook
5e3a4fa29d
Name Record Beside menu option correctly.
2017-03-21 13:31:33 +00:00
Paul Licameli
715758d869
Small improvements in Sequence and BlockFile
2017-03-20 17:59:50 -04:00
Paul Licameli
52fd607b42
Sequence::AppendBlock and Sequence::Blockify are static
2017-03-20 17:49:03 -04:00
Paul Licameli
2677796b0c
Zero and return false for all failures to read block file summary...
...
... Though in the only place where these summaries are used, which is
Sequence::GetWaveDisplay, we ignore the correctly reported error code anyway.
Also RAII in management of relevant memory buffers and mutexes.
2017-03-20 17:49:03 -04:00
Paul Licameli
7b7ad75a49
Remove Sequence::CopyWrite and needless file reads in Sequence::Set
2017-03-20 17:49:03 -04:00
James Crook
c6b4e2fffe
Add code to capture menus
...
So far, this only walks the menus, printing out their contents to debug.
2017-03-20 17:06:29 +00:00
David Bailes
879579475d
Fix for bug 1611: after select none, temporary in-correctness
...
After select none, the timeline and selection times are temporarily not updated.
Fix: AudacityProject::SelectNone refreshes the TrackPanel, so call it after changing the SelectedRegion.
2017-03-20 15:06:59 +00:00
David Bailes
ec7fe2dfcc
Fix for bug 613: menu key deselects track.
...
When the menu key is pressed, mouse events are also generated, and one of these was interpreted as a mouse click outside the tracks, which deselected the tracks.
A possible fix would have been to make a change in TrackPanel::HandleTrackSpecificMouseEvent() so that only left clicks outside of tracks would deselect tracks.
However, I decided that a better fix was to modify TrackPanel::OnMouseEvent to ignore the mouse events generated when the menu key is pressed. This should prevent these mouse events from causing bugs in any new code.
2017-03-20 13:33:24 +00:00
James Crook
5b9ae95930
Bug 1610 - Unable to save projects
...
We were throwing an exception for attempting to delete a file that was not there.
2017-03-20 11:53:39 +00:00
James Crook
8f71aa67df
Allow same command more than once in the menus.
...
Pause appears in both Record and Play, and we want the P shortcut to work.
2017-03-19 19:32:35 +00:00
James Crook
148fc40b78
Restore menu items removed for DarkAudacity.
...
I'm not sure how useful they are, but Audacity may want them still.
Changed 'Store' to 'Save' to avoid confusion with 'Restore'.
2017-03-19 18:52:39 +00:00
James Crook
d85ee24bf3
Merge branch 'menus'
2017-03-19 17:14:00 +00:00
James Crook
5c1f4d24b5
Menu rearrangement merged from DarkAudacity
2017-03-19 16:43:51 +00:00