Commit Graph

147 Commits

Author SHA1 Message Date
James Crook 449d0932fa Fix file version checking bug.
Opening a 1.2.4 Audacity version would previously
report an error, as being 'more recent' than 1.3.0.
Found by whitebox testing.
2021-02-17 15:30:56 +00:00
Leland Lucius ade2cadaa6 A little remnant of the "tags" table expulsion. 2021-02-16 14:57:47 -06:00
Paul Licameli 56852ae4c1 Remove unused tags table from the database schema 2021-02-13 15:22:40 -05:00
Leland Lucius b928e7e9f2 Add dump of active AUP3 XML doc to support data 2021-02-13 01:58:09 -06:00
Paul Licameli 92e36332f3 Reimplement importation of .aup3 file more simply...
... Breaking dependency of ProjectFileIO on on TimeTrack, and reusing the same
functions that implement cross-document copy and paste of tracks.

Also changing behavior, so that if a TimeTrack exists but another is imported,
then the import quietly replaces the existing completely.
2021-02-02 15:22:44 -05:00
James Crook f59ba86faf Wording fixes (minor) 2021-01-26 12:13:54 +00:00
Leland Lucius c9d37675f7 First stab at responding to whitebox review
In some cases, I've simply left the REVIEW: in and
responded to it. In other cases, I've resolved what
was mentioned in the review.
2021-01-26 02:21:12 -06:00
James Crook 42a105ee0a Review DB/Data safety.
I've added the comment 'REVIEW:' where I have some concern that
the database and our copy of it could get out of step, or simply that
we fail to report a problem to the user.

I'd like these reviewed and turned into comments that make it
easier to check for correctness, for example saying where an
error is reported, or why it is OK to do no further recovery action.
2021-01-23 19:00:36 +00:00
Leland Lucius b5ee77f737 Bug 2632 - Original project isn't compacted when doing Save As 2021-01-20 22:39:19 -06:00
Paul Licameli 43574553fc Break dependency cycle introduced at 50f3321...
... This only cuts and pastes some functions from FileNames to another new file
and namespace, and changes namespace qualifiers where they are called.

The cycle resulted because of the need to include widgets/ErrorDialog.h
2021-01-16 13:28:37 -05:00
Leland Lucius 9e53df0c47 Fix handling of Unicode when decoding project blob
If a TAG with Unicode characters outside the normal ASCII
range were saved to an AUP3, you would not be able to reopen
it and you'd receive the following error:

   Unable to parse project information.
2021-01-14 01:09:21 -06:00
freddii 534359de6c
Fix minor typos (#720)
Co-authored-by: freddii <https://freddii@github.com>
2021-01-12 11:56:09 +00:00
Leland Lucius e093ed1846 Bug 2624 - Win: large projects saved to slow USB drive when aborted yield error on reopening 2021-01-12 01:53:19 -06:00
Leland Lucius ac55e228ce Remove experimental attempt at FAT detection
We'll just have to address each instance individually.
2021-01-11 12:24:14 -06:00
Leland Lucius 28a286c656 Experimental commit for testing more FAT exclusion 2021-01-11 08:51:17 -06:00
Leland Lucius 8fa0b13432 Ensure error dialog is displayed in a couple more instances 2021-01-06 01:12:29 -06:00
Leland Lucius 56c8bdcd24 Bug 2609 - Save Project when disk is full gives a second disk-full message 2021-01-03 19:22:22 -06:00
Paul Licameli b1c8cd6479 Bug2602: correct record capacity estimate for Win+FAT filesystem...
... effectively reverting commit 0d5b9753bc
2020-12-08 13:18:26 -05:00
Paul Licameli aa0b33dc8f Detect failure to reconnect to temp project when first saving it 2020-12-06 23:20:44 -05:00
Paul Licameli 41eb66fccf Where CurConn() is used, don't assume it is non-null 2020-12-06 21:31:06 -05:00
Paul Licameli 900bf44219 ProjectFileIO::CloseProject does not assert that project was open 2020-12-06 21:25:34 -05:00
Paul Licameli 38b169ab7e Guarantee postcondition of ProjectFileIO::OpenConnection() 2020-12-06 21:18:48 -05:00
Paul Licameli c5e454e109 Move IsOnFATFileSystem to FileNames 2020-12-06 12:23:19 -05:00
Paul Licameli b6ce29d234 Bug2605: Don't leave orphans in original project after save-as 2020-12-02 13:05:22 -05:00
Paul Licameli 47bdf27f2d Revert "Bug2605: Save-as should not cause original to repoen with warnings..."
This reverts commit 742134caaa.
2020-12-02 12:39:35 -05:00
Paul Licameli 742134caaa Bug2605: Save-as should not cause original to repoen with warnings...
... Problem was that before abandoning the connection to the original path,
compaction was done only sometimes, according to the criterion of estimated
%20 space savings at least.  But this could cause the project to reopen with
orphan blocks in it, which were detected and reported as an improper save.

The easy solution is to force compaction always in this case.

Direct save does not have this problem because what would otherwise be orphaned
blocks are directly deleted from the database when undo states are destroyed
and sample blocks become unreferenced.  So compacting only sometimes does not
cause orphan blocks on reopening.
2020-12-02 00:41:07 -05:00
Paul Licameli 6944ba564c Use events to break dependency cycle introduced at 3978e8c 2020-11-25 12:24:21 -05:00
Paul Licameli 6a10177404 Bug2594: Fix Save Backup...
... It broke at 16b249a
2020-11-24 16:30:10 -05:00
Paul Licameli 7e1e339f72 Bug2599: -wal and -shm of discarded temp projects should clean up 2020-11-24 14:38:58 -05:00
Paul Licameli 0d5b9753bc Don't open a file just to query its length 2020-11-24 14:22:29 -05:00
Paul Licameli 5ebfe4670c Bug2596: Error dialogs opening unreadable project should not be blank 2020-11-24 12:43:00 -05:00
Paul Licameli e08fe884e3 Correct status message for estimated recording time onto FAT system 2020-11-23 16:08:55 -05:00
Paul Licameli a628a3efbd A function detecting when a file is hosted on a FAT system 2020-11-23 16:05:34 -05:00
Paul Licameli e3d6c37163 whitespace 2020-11-22 15:45:30 -05:00
Paul Licameli 8cb6749741 Bug2592: should clean old temp directory at exit after prefs change 2020-11-22 15:43:24 -05:00
Paul Licameli 3e0120be05 Bug2550 residual: also move -shm file if present...
... Also much other extra care in the handling of -shm and -wal files
2020-11-22 14:32:42 -05:00
Paul Licameli 98d8603931 Bug2550: Save-as must move -wal together with .aup3, if -wal exists 2020-11-21 16:39:31 -05:00
Paul Licameli caa312ab7b Remove some unneeded #includes and forward declarations 2020-11-20 13:47:47 -05:00
Paul Licameli 14c300c672 Bug2542: Discard button of auto recovery should work with UP 2020-11-19 15:18:01 -05:00
Paul Licameli a9cbd953f0 Define InvisibleTemporaryProject 2020-11-18 23:51:01 -05:00
Paul Licameli 16b249ab9f ProjectFileIO fns now take multiple pointers to const TrackLists 2020-11-18 17:30:55 -05:00
Paul Licameli 47b3b798c9 Fix comments 2020-11-18 16:57:33 -05:00
James Crook caf4eadb97 Help button for many warning messages; Restored warning icon.
The error icon was gone because we are now using the ErrorDialog, which didn't have it.  So added back explicitly.  I decided to go with wxART_WARNING rather than wxART_ERROR because nearly all of these present as warnings.
2020-09-14 17:43:28 +01:00
Paul Licameli e7b3c2b99f Cut and paste TransactionScope into DBConnection.* files 2020-09-05 14:44:34 -04:00
Paul Licameli ddc2593282 TransactionScope only requires DBConnection not ProjectFileIO 2020-09-05 14:35:24 -04:00
Paul Licameli eb7e67623e Demote error message storage from ProjectFileIO into DBConnection 2020-09-05 14:32:39 -04:00
Paul Licameli c9dec8f5a9 Factor ProjectFileIO::GetConnection (returning reference not pointer) 2020-09-05 14:30:34 -04:00
Paul Licameli cca20f4e68 Bug2533: Optimize storage of silent blocks...
... This is a more adventurous fix.  It avoids changing the schema.

Use non-positive values of SqliteSampleBlock::mBlockID to store lengths of
blocks of silence.  Keep SqliteSampleBlock structures in memory (sharing where
possible for recurring block lengths) but do not make corresponding rows in
the database table.

Reviewed all uses of mBlockID, and of SqliteSampleBlock::GetBlockID() which
returns it, and of XML attribute "blockid" which persists it.
2020-09-02 21:43:20 -04:00
Paul Licameli 92d7ee38e5
Do orphan block checking differently... (#655)
... Don't have special knowledge of "blockid" in ProjectSerializer, which should
be very low-level.

Instead, we can deserialize the project first, and use the block ids collected
by the sample block factory since f137a1e.
2020-09-01 10:54:36 -05:00
Paul Licameli c17b804750
Dont delete sample blocks prematurely (#648)
* Revert "AUP3: Don't delete sample blocks prematurely"

This reverts commit c1884349d5.

* "Don't delete sample blocks prematurely" fixed otherwise...

... and very simply.

Problem was that, only for an interactive effect (like Bass and Treble), the
save point was created, rolled back, created again, then committed.

But (unlike with the non-savepoint commands, even if savepoint is outermost),
rolling back a savepoint really just rewinds it without removing it -- therefore
the second savepoint was inner, but the first (outer) was never committed, so
some changes failed to persist.

Solution:  add a commit after rollback of savepoint to implement destructor
of AutoCommitTransaction.

The reversion of c188434 also leaves AutoCommitTransaction as a better RAII
style operation.  Rollback changes by default -- keep changes only if
success is explicitly indicated.

* Rename AutoCommitTransaction as TransactionScope...

... More appropriately, since it's now the rollback that is automatic but
the commit that must be explicit
2020-08-28 15:38:38 -05:00