1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-01-12 15:45:54 +01:00
Commit Graph

90 Commits

Author SHA1 Message Date
Paul Licameli
e653b4aaf8 Eliminate Experimental.h, configure compile options instead...
... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.

The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
2021-04-27 12:40:07 -04:00
Leland Lucius
6450495426 Bug 2211 - Mac: keyboard navigation problem in Libraries preferences dialog 2021-04-05 03:37:36 -05:00
Leland Lucius
521c2e0b58 Missed a file 2021-02-04 03:17:32 -06:00
Leland Lucius
a5609e44d0 Use version 2.1.0 of libsbsms
This is actually the exact code we already use, but Clayton has
set up a github repo for the release to make it available to
distros.
2021-02-01 10:12:06 -06:00
Paul Licameli
2c5c0f9dfd Class AudacityPrefs renamed, moved, reused in PluginManager...
... And construction of the main instance is hoisted into AudacityApp
2021-01-31 11:11:03 -05:00
Leland Lucius
21296b0cf1 New wrapper for wxFileConfig to fix several bugs
Bug 2135 - Audacity crashes if launched with a locked pluginregistry.cfg file
Bug 2651 - If pluginregistry.cfg gets locked while Audacity is active the Plug-in Manager is blocked - with no help
Bug 2650 - Virgin launch fails with no pluginregistry.cfg file created
Bug 1264 - Writing to locked audacity.cfg not reported to user
Bug 2649 - Launching Audacity with a locked audacity.cfg file gives not one but three error messages - and no help
Bug 2652 - User is not warned if they launch Audacity with a locked pluginsettings.cfg file
2021-01-31 04:24:35 -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
Paul Licameli
ab15efebf5 Add Audacity.mm to the Mac build 2020-12-09 15:18:03 -05:00
Paul Licameli
0203205cf6 Remove ProjectsPrefs.* ...
... the class became unused, never constructed, at commit
cbf1bb558e
2020-11-20 13:28:05 -05:00
Paul Licameli
4b3a4a1f4b Warning about returning reference to temporary is now a build breaker 2020-11-18 14:07:16 -05:00
Paul Licameli
c478e12b48 Fix dangling else ambiguity, and make that warning a build-breaker...
... In this case, the ambiguity resolution was correct for the intent, but
we shouldn't rely on that.
2020-09-22 13:14:29 -04:00
Paul Licameli
2b542bf734 Move TrackShifter subclasses each to its own new source file...
... These do not require header files; they are tiny proto-plugins that work
by registration of AttachedVirtualFunction overrides at startup.

Dependency may go from them to TrackView subclasses but not back; so in
principle a reduced Audacity without time-shift could be linked that still uses
the TrackView subclasses.

But other work to make the hit test for the Time Shift tool registrable would
have to precede that.
2020-09-21 17:31:48 +01:00
Paul Licameli
4742f4ce1c clang build won't quietly allow missing return statement 2020-09-05 14:23:35 -04:00
Leland Lucius
85b4a5376f AUP3: Make suggested directory preferences changes
In addition, I've extracted the wxTextCtrl wrapper from the
TimerRecordDialog intto widgets/wxTextCtrlWrapper.h and made
it the default for ShuttleGui::AddTextBox(). This way readonly
text controls are always included in the tab order.
2020-07-29 00:08:48 -05:00
Leland Lucius
a1e83c141a AUP3: AutoRecoveryDialog experiment
Looking for feedback...
2020-07-23 01:19:29 -05:00
Paul Licameli
a3fcd611b5 Dependency cleanup (#627)
* DBConnection doesn't use ProjectFileIO or need friendship...

... Instead, it is given its own weak_ptr to the project

* Demote the bypass flag into DBConnection...

... So SqliteSampleBlock needs ProjectFileIO only to get the DBConnection

* Accessor functions for the connection objects for SqliteSampleBlock

* Another level of indirection to get to the DBConnection object...

... The document holds the unique_ptr to DBConnection in an attached object;
later we want the SqliteSampleBlockFactory to locate the same pointer without
using ProjectFileIO

* SqliteSampleBlock and its factory don't use class ProjectFileIO...

... Instead they share a pointer to the pointer to the current DBConnection.

This means they no longer know how to invoke the lazy opening of that
connection.

So just require that this be done before any operations on blocks happen.  If
it hasn't, throw and let the application recover.

* ProjectFileIO no longer needs weak_ptr to Project for safety...

... so eliminate much ugliness from 127696879d

* Move DBConnection to new files...

... And SqliteSampleBlock does not depend on ProjectFileIO.

* SampleBlock.h doesn't need ClientData.h

* Function ProjectFileIO::Conn() isn't needed
2020-07-23 01:04:46 -05:00
Leland Lucius
251da3bb3b AUP3: First go at the AUP importer
Near as I can tell, it's pretty much done. Feeding all manner of
.aup projects will definitely need to be done. It would be best
to feed it REAL projects, not the contrived ones I've been playing
with.
2020-07-12 03:53:25 -05:00
Leland Lucius
b12fafbea0 AUP3: Fix stupied build failure 2020-07-10 01:32:56 -05:00
Paul Licameli
ba7ebbb032 Reviewed the ODLocks removed at cbf1bb5, restored just two of them...
... as std::mutex instead.

One is the mutex for the set of all files.

Another is in Profiler.h, which is now back into CMakeLists because the header
is included in one place.  Maybe this utility will find more use again.

Restored one other but commented out, as not necessary now, but need might be
found to put it back again.

The class ODLock was a misnamed thing not specific to the on-demand manager but
used more widely as a thread synchronization utility, functioning as a mutex
object.  It was a mistake to remove all uses of it along with the rest of the
on-demand system.
2020-07-07 16:34:25 -04:00
Leland Lucius
2084c39046 Fix build Mac and Linux 2020-07-05 19:25:06 -05:00
Leland Lucius
c1407cdca9 Force use of our wxWidgets and fix RPATH handling 2020-07-05 13:39:57 -05:00
Leland Lucius
f3816b30d9 Not ready to commit ImportAUP.cpp just yet 2020-07-03 18:00:56 -05:00
Leland Lucius
015ba548c2 AUP3: Add SaveCopy macro command
To go along with new menu item.

And adjust prompting for filenames in Save dialogs to return
to Save dialog if file can't be overwritten.
2020-07-03 17:12:26 -05:00
Paul Licameli
127696879d Unitary changes (#599)
* Define SampleBlockFactory replacing static members of SampleBlock...

... This will become an abstract base class

* Sequence and WaveTrack only store SampleBlockFactory not Project...

... This adds a dependency from Track to SampleBlock which temporarily enlarges
a cycle in the dependency graph

* Register a global factory of SampleBlockFactory...

... so that later we can make an abstract SampleBlockFactory, separate from the
concrete implementation in terms of sqlite, and inject the dependency at startup
avoiding static dependency

* New concrete classes SqliteSampleBlock, SqliteSampleBlockFactory...

... separated from abstract base classes and put into a new source file,
breaking dependency cycles, and perhaps allowing easy reimplementation for other
databases in the future.

Note that the new file is a header-less plug-in!  Nothing depends on it.  It
uses static initialization to influence the program's behavior.

* Compile dependency on sqlite3.h limited to just two .cpp files...

... these are ProjectFileIO.cpp and SqliteSampleBlock.cpp.

But there is still close cooperation of ProjectFileIO and SqliteSampleBlock.cpp.
This suggests that these files ought to be merged, and perhaps ProjectFileIO
also needs to be split into abstract and concrete classes, and there should be
another injection of a factory function at startup.  That will make the choice
of database implementation even more modular.

Also removed one unnecessary inclusion of ProjectFileIO.h

* Fix crashes cutting and pasting cross-project...

... in case the source project is closed before the paste happens.

This caused destruction of the ProjectFileIO object and a closing of the sqlite
database with the sample data in it, leaving dangling references in the
SqliteSampleBlock objects.

The fix is that the SqliteSampleBlockFactory object holds a shared_ptr to the
ProjectFileIO object.  So the clipboard may own WaveTracks, which own WaveClips,
which own Sequences, which own SqliteSampleBlockFactories, which keep the
ProjectFileIO and the database connection alive until the clipboard is cleared.

The consequence of the fix is delayed closing of the entire database associated
with the source project.

If the source project is reopened before the clipboard is cleared, will there
be correct concurrent access to the same persistent store?  My preliminary
trials suggest this is so (reopening a saved project, deleting from it, closing
it again -- the clipboard contents are still unchanged and available).
2020-07-02 18:11:38 -05:00
Leland Lucius
d39590cf41 AUP3: First round of updates
!!! THERE WILL NO DOUBT BE BUGS !!!

This is a big one and there's still several things to
complete. Just want to get this in the wild to start
receiving feedback.

One big thing right now is that it will NOT load pre-aup3
files.  An importer is on the way for that.
2020-07-01 02:30:18 -05:00
Leland Lucius
cbf1bb558e AUP3: Removes OD code related to project file handling
This removes all of the OnDemand code embedded throughout
    the main codebase. Individual files related specifically
    to OD have been left in place, but removed from the build.
2020-07-01 01:14:05 -05:00
Leland Lucius
2fbfd3e0a5 AUP3: Add SQLite to the project 2020-07-01 01:13:37 -05:00
Leland Lucius
7b9040c7e2 Rename TimerToolBar to TimeToolBar 2020-05-30 16:00:24 -05:00
Leland Lucius
5bede69d11 Bug 2457 - Windows: WAV Export runs 6 to 7 times slower than on 2.3.3 (and 12-14 times slower than 2.2.2) 2020-05-29 08:31:15 -05:00
Leland Lucius
cd38e0e76d Bug 2457 - Windows: WAV Export runs 6 to 7 times slower than on 2.3.3 (and 12-14 times slower than 2.2.2) 2020-05-28 19:21:44 -05:00
Carlo Bramini
8ef97738ad [CMAKE] Fix build for Cygwin. (#548)
* [CMAKE] fix build for Cygwin.

* [CMAKE] Fix build for Cygwin.
2020-05-28 16:21:22 -05:00
Paul Licameli
fa4d35296e AllThemeResources.h has a .cpp & doesnt include Theme.h...
... (it used to, via MacroMagic)

This splits a cycle of 8 into 6 + 1 + 1
2020-05-28 05:50:24 -04:00
Paul Licameli
ae9aca8177 Implement member functions of classes in corresponding .cpp files...
... in four cases; not in some other .cpp file.

This is another move that causes the generated graph to reflect dependencies
correctly.

This fixes other large, hidden cycles that involved PrefsDialog.cpp: there was
link dependency on that when PrefsPanel.h was used for the base class.  No
longer.

Also cycles involving TrackPanel.cpp, which contained the default
implementations for TrackPanelCell and related abstract base classes.
2020-05-28 05:50:22 -04:00
Paul Licameli
4a271ba549 Move namespace Registry into new source files 2020-05-28 05:45:11 -04:00
Leland Lucius
b9959de4ba Add cmake option to disable precompiled headers 2020-05-26 20:01:49 -05:00
Leland Lucius
37a19d6db4 Enable precompiled headers on OSX
Learned today how to disable precompiled header usage
for specific files, so we can now enable PCH usage on
OSX.
2020-05-26 14:39:36 -05:00
Leland Lucius
e7decd8013 Cleanup a few more library builds 2020-05-26 13:36:07 -05:00
Paul Licameli
7fbfc2b292 Finish the job of 30dbdf4, deleting abandoned source files...
... And correcting #include paths, and removing mentions in read-me files, and
correcting CMakeLists.txt
2020-05-25 17:21:05 -04:00
Paul Licameli
e4238a93a0 src/CMakeLists.txt includes gtk ...
... not relying on prior inclusion of lib-src/FileDialog
2020-05-25 17:21:05 -04:00
Leland Lucius
c42d188e7b Removed old build system
This was fun!!! Holler if I had too much fun. :-)
2020-05-24 13:18:47 -05:00
Paul Licameli
a3d690e473 Remove lib-src/lib-widget-extra...
... It only implemented class NonGuiThread, which was not third-party, and
became unused at commit a6d0b3f
2020-05-22 09:22:49 -04:00
Leland Lucius
4b1d5c376d Bug 2400 - Mac: Zoomed in, playback meters slow to respond. 2020-05-10 02:36:28 -05:00
Leland Lucius
06c36f7fe6 Synchronize CMake install target with original 2020-04-24 23:59:11 -05:00
Leland Lucius
2b24220315 Fix locale name creation for Linux 2020-04-24 23:43:24 -05:00
Leland Lucius
4b8f923fd1 Fix GIT revision when build directory is outside source tree 2020-04-24 23:39:12 -05:00
Leland Lucius
bc3a878ba1 Update CMake project for Mac
Hopefully, this will make Audacity the default configuration
in the XCode GUI.  It works for me, but need others to test
it.
2020-04-19 01:23:37 -05:00
Leland Lucius
e3f33b3367 Add '-Wno-underaligned-exception-object" to CMake build 2020-03-30 11:38:02 -05:00
Carlo Bramini
84d0cd0220 [CMAKE] Add "/MANIFEST:NO" only to MSVC (#460)
The option "/MANIFEST:NO" is recognized only by Microsoft C++ compiler, so its addition must be limited to this compiler rather than generic target for Windows.
2020-03-21 10:28:05 -05:00
Leland Lucius
f1ec53d786 Get rid of unwanted dependency in last commit 2020-03-11 23:43:17 -05:00
Leland Lucius
66aae0900b Ease CMake and legacy build coexistence
Cliff noticed that the CMake git ident was not being updated when
pulling new changes.  This was because it was getting captured at
configuration time and, even if you pull more changes, the CMake
configuration may not be redone automatically if the build files
weren't also changed.

So, this adds a new target to get the information at build time
instead.
2020-03-11 22:31:19 -05:00