1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-01 16:19:43 +02:00

10351 Commits

Author SHA1 Message Date
Paul Licameli
bcc90ee91a AudioIO does not need ProjectWindow 2019-06-24 12:43:08 -04:00
Paul Licameli
ed5c92450d CommitRecording out of ControlToolBar 2019-06-24 12:43:08 -04:00
Paul Licameli
1d6ff11fec Fix #include paths 2019-06-24 12:41:25 -04:00
Paul Licameli
433e2cf660 Fix an intermittent crash on exit cased by timer events 2019-06-24 11:19:24 -04:00
Paul Licameli
ba4fe34947 Free four effect-releated files from the big s.c.c. ...
... They are:
Effect
EffectManager, EffectRack (in a cycle of 2)
Nyquist

There is also one new file, RealtimeEffectManager.  Making AudioIO use that,
instead of the whole of EffectManager, was essential to this improvement of
the graph.
2019-06-24 01:04:08 -04:00
Paul Licameli
cd9e4e3987 RealtimeEffectState into RealtimeEffectManager...
... which doesn't need Effect.h then.

Freeing Effect and RealtimeEffectManager from cycles, leaving 25 in the big
s.c.c.
2019-06-24 01:04:03 -04:00
Paul Licameli
5caeaf520b RealtimeEffectState needs only EffectClientInterface, not Effect 2019-06-24 00:49:14 -04:00
Paul Licameli
867e6a8d9e Move fields out of Effect, into new class RealtimeEffectState...
... and simplify, using a std::atomic instead of a critical section.

(But did this before, and does this now, correctly synchronize across threads?
I defer that question.)
2019-06-24 00:49:14 -04:00
Paul Licameli
0f62046313 Define EffectClientInterface::GetBlockSize() 2019-06-24 00:49:14 -04:00
Paul Licameli
ab5a98003a Free EffectManager and EffectRack from the big s.c.c. ...
... though in a small cycle with each other, by moving RealtimeEffectManager to
new files, which remain in the big component.

Net loss of 1, the big component now has 27 files
2019-06-24 00:49:12 -04:00
Paul Licameli
04a3ed9d04 Separate class RealtimeEffectManager 2019-06-24 00:37:02 -04:00
Paul Licameli
9935b035c5 Remove Effect.h from EffectManager.h and EffectRack.h 2019-06-24 00:36:59 -04:00
Paul Licameli
dee27e052f Free Nyquist.cpp from cycles...
... Very easily, just by demoting two macros from Nyquist.h to Effect.h.

The graph improvement is worth this bit of preprocessor namespace pollution.
2019-06-23 23:20:03 -04:00
Paul Licameli
a3a9a7d8b3 Smash 2nd biggest scc. of 21 files into 15 pieces, each 3 or fewer...
... the new little strongly connected components are:

AutoRecovery
Clipboard
NoteTrack
ODComputeSummaryTask
ODDecodeBlockFile, ODDecodeTask
ODManager, ODTask, ODWaveTrackTaskQueue
ODPCMAliasBlockFile
ProjectFileIO
ProjectHistory
Track
TrackControls
TrackPanelResizeHandle, TrackPanelResizerCell, TrackView
TracksPrefs
UndoManager
WaveClip, WaveTrack
2019-06-22 21:57:21 -04:00
Paul Licameli
86320838de WaveTrack.cpp does not depend on ODManager.cpp ...
... Breaking up an s.c.c. of 6 into 3 components:
ODManager, ODTask, ODWaveTrackTaskQueue
UndoManager
WaveClip, WaveTrack

Rewrite the OD tasks and queues to hold weak pointers to tracks, so the
track destructor need not notify them.
2019-06-22 21:46:35 -04:00
Paul Licameli
71250b1dc3 WaveTrack.cpp does not depend on ODDecodeBlockFile.cpp...
... cutting off ODDecodeBlockFile and ODDecodeTask into a small cycle of 2
2019-06-22 21:46:34 -04:00
Paul Licameli
f1b04c79d8 WaveClip does not depend on ondemand files besides ODTaskThread...
... Lifting the specification of factory function arguments for Sequence even
higher

This frees ODPCMAliasBlockFile from cycles
2019-06-22 21:46:34 -04:00
Paul Licameli
91a2ff2560 Track does not depend on TrackView, freeing 11 files...
... from the second-largest s.c.c. which shrinks to 9

The 11 are:

AutoRecovery
Clipboard
NoteTrack
ODComputeSummaryTask
ProjectFileIO
ProjectHistory
Track
TrackControls
TrackPanelResizeHandle, TrackPanelResizerCell, TrackView in a small cycle
2019-06-22 21:46:34 -04:00
Paul Licameli
9e731390f6 Don't define any Track members outside of Track.cpp 2019-06-22 21:46:33 -04:00
Paul Licameli
dc9e436dde Change the track view copy function...
... It is const, renamed CopyTo, and invokes the create-on-demand factory in
the destination track; this means Track.cpp doesn't need to do that, and so
does not need TrackView.h
2019-06-22 21:46:33 -04:00
Paul Licameli
8793d6b475 Demote Copy to CommonTrackCell; Track points only to that base class 2019-06-22 21:46:33 -04:00
Paul Licameli
3f1fd8ced0 TrackView handles its own special XML attributes via virtual functions 2019-06-22 21:46:33 -04:00
Paul Licameli
278509a505 TrackView, not TrackList, updates Y coordinates of views, using events 2019-06-22 21:46:33 -04:00
Paul Licameli
a6e2ca0aa8 Move some enums into new files WaveTrackViewConstants.* ...
... freeing TracksPrefs from the second largest s.c.c. which is now only 20
2019-06-22 21:46:32 -04:00
Paul Licameli
4339c0df68 Move height calculation utilities to class TrackView 2019-06-22 21:46:32 -04:00
Paul Licameli
aa1ce03100 WaveTrack does not depend directly on ProjectHistory...
... because  we undo the move,
"Demote vertical zooming code into WaveTrack.cpp ..." done at 1f4bf26

That was done so that WaveTrack would not depend on WaveTrackVZoomHandle, but
made it instead depend on ProjectHistory, which is undesirable.

But since then, commit 3797a52 moved the special minimizing code for WaveTrack
into WaveTrackView.
2019-06-22 21:46:32 -04:00
Paul Licameli
499e3c01ce Keep EXPERIMENTAL_OD_FFMPEG and EXPERIMENTAL_OD_FLAC compilable 2019-06-22 21:45:56 -04:00
Paul Licameli
0ce6b2b05e Avoid naked delete 2019-06-21 14:17:15 -04:00
Paul Licameli
a8e2b22ea2 Remove unnecessary #include directives in TrackInfo.cpp 2019-06-21 12:33:36 -04:00
Paul Licameli
3e4480ce6f No hidden dependencies on TrackView & TrackControls subclasses...
... from the Track subclasses, caused by splitting their virtual function
definitions, making dependencies that scripts/graph.pl did not detect.

Instead use a new system for registering tables of factory functions and
type-switching on the Track objects' RTTI to get to the right function.
2019-06-21 09:16:49 -04:00
Paul Licameli
3e0d48cc14 Redefine the factories for track views and controls...
... non-intrusively in the Track suclasses, registering functions instead.

For each abstract factory function (of two), build a table of concrete factory
functions, paralleling the hierarchy of Track subclesses.  Dispatch using
runt time type information in the Track objects.
2019-06-21 09:16:49 -04:00
Paul Licameli
77eeba5463 Define utility AttachedVirtualFunction 2019-06-21 09:16:48 -04:00
David Bailes
660b8c07ad Fix Windows build - fix include paths 2019-06-21 09:29:32 +01:00
Paul Licameli
f75bf45478 Fix #include directives 2019-06-21 00:23:40 -04:00
Steve Daulton
13ca42638d Fix for bug 2136
Don't translate doubles in Scripting messages. For valid JSON we need to
retain the dot as decimal separator.
2019-06-20 23:19:23 +01:00
Paul Licameli
df14253a50 Remove unnecessary #include-s in TimeTrack 2019-06-20 16:44:47 -04:00
Paul Licameli
a7cc55e9e7 Much code moved out of LabelTrack.cpp, freeing 3 files from cycles...
They are:

LabelTrack
Snap
TimeShiftHandle

The code, about 2000 lines, moved mostly into LabelTrackView, with some into
LabelTextHandle and LabelGlyphHandle.

With this commit, Track and its four subclasses are all free from the big
s.c.c, which has 29 remaining files, according to scripts/graph.pl.

But in truth there are still linkage dependencies not shown in the graph,
because overrides of Track::DoGetView and Track::DoGetControls are still in
scattered places, and they are needed to populate the virtual function tables
of those classes.

Thus dependency on LabelTrack still really implies dependency on LabelTrackView
and likewise for the other three Track subclasses.
2019-06-20 13:10:10 -04:00
Paul Licameli
5240c42cb6 No more LabelTrack::HasSelection...
... eliminating the last dependency of LabelTrack.cpp on LabelTrackView.h
2019-06-20 11:47:55 -04:00
Paul Licameli
f2869597b6 Move code from LabelTrack into LabelTrackView...
... and remove many #include directives from LabelTrack
2019-06-20 11:47:55 -04:00
Paul Licameli
6622f494fe Move code from LabelTrack into LabelTextHandle 2019-06-20 11:47:47 -04:00
Paul Licameli
e0c4a94cfd Move code from LabelTrack into LabelGlyphHandle 2019-06-20 10:47:26 -04:00
Paul Licameli
822183febc Remove friend LabelDefaultClickHandle 2019-06-20 10:47:26 -04:00
Paul Licameli
c9fa8424ce Move declarations again, to LabelTextHandle; remove a friend 2019-06-20 10:47:26 -04:00
Paul Licameli
bbc465920b Public functions get, set highlight boundaries, hit-test on text 2019-06-20 10:47:26 -04:00
Paul Licameli
6af9187003 Move declarations again, to LabelGlyphHandle; remove a friend 2019-06-20 10:47:25 -04:00
Paul Licameli
5eb5e24ab0 Make some hit testing utilities of LabelTrackView static and public 2019-06-20 10:47:25 -04:00
Paul Licameli
e3efd52026 Move many declarations into LabelTrackView & define its Copy() 2019-06-20 10:47:25 -04:00
Paul Licameli
604fbd0a2c Addition, deletion, sort of Labels communicated by events...
... and LabelTrack listens to its own events, to update certain state.

This is roundabout for now, but that state is view-related and will move into
another class.
2019-06-20 10:47:25 -04:00
Paul Licameli
aa5f9550bd LabelTrackView, not LabelTrack, handles focus changes when adding 2019-06-20 10:47:25 -04:00
Paul Licameli
8ff5a4b345 Do without some friend declarations in LabelTrack...
... and leave "updated" alone, it's only for use in interactive dragging
2019-06-20 10:47:25 -04:00