Commit Graph
128 Commits
Author SHA1 Message Date
itsmattkc d7c5ac4b44 implement entire project in nodes
Project items are now represented directly in nodes opening up more versatility and possibilities. This is the first iteration of this and will be buggy. Need to test thoroughly.
2021-02-15 21:31:57 +11:00
itsmattkc 81c1922911 use strings to connect nodes
This makes the node system somewhat more high-level with the intent of making
working with them far more flexible and stable. By making the architecture more
abstracted, it becomes far less rigid which should allow us to do even more
with it and make it much less crash prone.
2021-02-09 15:48:37 +11:00
itsmattkc 8d8727c7c9 removed unused variable 2021-01-30 12:31:23 +11:00
itsmattkc 2af776b110 fixed various caching update issues 2021-01-22 14:33:30 +11:00
itsmattkc 3e1fb01758 initialize array variable and set where used 2021-01-19 09:09:12 +11:00
itsmattkc cb1accaf0c minor code enhancements 2021-01-18 16:33:49 +11:00
itsmattkc 84df19dc35 updated tracklist algorithm to new and improved one 2021-01-18 16:32:52 +11:00
itsmattkc 57aa53cc79 ensure blocks are transformed when hashing
Fixes cache glitch
2021-01-18 10:45:07 +11:00
itsmattkc 91740dd823 reworked all timeline commands
I'll be honest, this stuff probably caused a lot of crashes. Objects were constantly created and destroyed without the foresight that other commands might be using them. This should fix a lot of that.
2021-01-15 14:36:21 +11:00
itsmattkc b83677e319 moved input signals to graph to prevent signal desyncs 2021-01-14 10:32:42 +11:00
itsmattkc f7883bd02c began some rewrites to timeline drawing 2021-01-14 10:30:20 +11:00
itsmattkc fbdda3d6d4 various code cleanups 2021-01-13 12:05:05 +11:00
itsmattkc 8f729203fc some timeline refactoring, preparing for rewrites 2021-01-09 11:41:33 +11:00
itsmattkc 3337be07e5 use QVector instead of QList for block cache 2021-01-09 10:41:13 +11:00
itsmattkc 181235f6ce began new infrastructure
Yep, this is another one of my "famous" sweeping rewrites. Expect things to break.

Goals for this are:
- Greatly simplify node connections (particularly with arrays) so the code requires less maintenance/is more stable
- Redesign node structure to address issues where UI would stall for lengthy periods of time
- Less reliance on shared ptrs/greater reliance on QObject system for inheritance/memory management
- General code cleanup and improvements
2021-01-05 11:20:38 +11:00
itsmattkc 04dd502a40 nodes: bypass invalidate length limit for certain track operations
Fixes #1290
Fixes #1228
2020-11-18 12:56:00 +11:00
itsmattkc 75d4cd899b use hardcoded namespace
The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
2020-11-17 20:24:42 +11:00
itsmattkc d241090a9f finally updated the copyright year 2020-11-17 20:13:22 +11:00
itsmattkc 1b9bf6d92c switched many QLists for QVectors
Minor optimization
2020-11-16 16:17:43 +11:00
itsmattkc 13dd31d5be began rewrite of renderer inner workings 2020-11-06 20:18:10 +11:00
itsmattkc 917738d1de Merge branch 'master' into otio 2020-10-22 20:26:16 +11:00
itsmattkc db8d321fa7 project: improved loading and footage importing 2020-10-19 14:41:01 +11:00
itsmattkc 384650e85a tracklist: ensure track indexes are updated when tracks are added/removed 2020-10-15 10:38:36 +11:00
itsmattkc 0d102defab tracks: use node label instead of separate name string 2020-10-10 20:17:25 +11:00
itsmattkc 4204910796 nodes: link edges to IDs rather than objects
Allows code to know whether the connected parameters has been removed or
not.
2020-10-02 16:04:50 +10:00
itsmattkc 43d0129004 renderer: unqueue deleted node inputs
Fixes segfault when renderer tries to update from a since deleted node
input.
2020-09-05 19:49:34 +10:00
itsmattkc f0928814fc track: store height in "units" rather than pixels
Fixes DPI scalability issue if a project ever moved from a display with
one DPI to another.
2020-08-22 00:23:46 +10:00
itsmattkc de74adeb5e nodes: improved changed signal processing
Improves stability and cache reliability.

Earlier iterations were prone to skipping necessary signals (usually
leading to some sort of assert fail), particularly when track
optimizations were used. Those optimizations have been moved to the
viewer node so there's a higher degree of control over which signals
get optimized and in which ways.
2020-07-16 00:32:00 +10:00
itsmattkc 65ccac1dfe renderer: fixed bug that would render frames even after hash matching
Also enables the -Wshadow GCC warning to warn against the code bug that
caused this issue (and has caused other issues like it in the past).
2020-06-19 20:25:05 +10:00
itsmattkc 71ec148e76 renderer: moved all shader code into one solidified function
Makes texture-based optimizations easier when they're all in one place.
2020-06-10 01:54:02 +10:00
itsmattkc 593316876f track: save and load track heights to and from project files 2020-06-05 16:12:00 +10:00
itsmattkc b143b39869 track: provide control over invalidation when setting length 2020-06-05 15:21:11 +10:00
itsmattkc de3288893d renderer: move waveform generation into worker and mutex the waveform
Addresses scheduling issues where a backend might be closed (or even
destroyed) before it processes a waveform signal from a worker. Requires
extra multithreading code.
2020-06-05 15:18:14 +10:00
itsmattkc 0e87762afa waveforms: moved waveform to track rather than block
This is a much more robust and thread-safe system of storing the waveforms.
2020-06-04 18:03:21 +10:00
itsmattkc f2050a0342 timeline: optimized rippling workarea, rippling to in/out, and the ripple tool
Use cache shift functionality introduced in previous commit to optimize
timeline usage.
2020-06-02 04:24:12 +10:00
itsmattkc 644fb7cec8 block: fixed buggy cache invalidation behavior when resizing blocks 2020-06-01 17:39:08 +10:00
itsmattkc a62960ecc0 track: block length changed signals until the cache can be invalidated
Optimization, prevents unnecessary processing.
2020-06-01 13:08:08 +10:00
itsmattkc c2e47a296c timeline: heavily optimized and improved nearly all timeline optimizations
Features a lot of timeline-related cache optimizations as well as general
optimizations and improvements in timeline behavior. Should improve
usability significantly.
2020-06-01 04:42:59 +10:00
itsmattkc acee6c5958 timeline: reworked ripple/edit to behavior and documented some track behavior 2020-05-31 01:21:08 +10:00
itsmattkc 8b872e7c29 track: smarter block detection code
Improves on the code before it in reliability (perhaps at the expense of some
cycles).
2020-05-25 22:12:25 +10:00
itsmattkc 558773538d cache: fixed audio with new system 2020-05-18 17:16:28 +10:00
itsmattkc 814bbe8c22 fixed various segfaults in decoder and renderer 2020-05-18 02:40:58 +10:00
itsmattkc a0f2035240 cache: fixed segfault if a block was ever disconnected 2020-05-16 00:31:24 +10:00
itsmattkc 863ae1b913 a first attempt at a new render system 2020-05-14 14:43:03 +10:00
itsmattkc d49c6a059c nodes: optimize blocks so they don't unnecessarily change the hash 2020-05-06 16:14:23 +10:00
itsmattkc fb625cb76e nodes: removed XML infrastructure 2020-05-06 15:06:37 +10:00
itsmattkc 74d252c5c0 nodes: use defined categories rather than arbitrary string based 2020-05-05 22:12:15 +10:00
itsmattkc b80eb6fd45 track: fixed segfault if user tried to use "add" tool on nonexistant track 2020-05-05 00:36:28 +10:00
itsmattkc aecfa842c3 nodes: moved hashing to nodes so they can override behavior if they wish 2020-04-30 01:56:08 +10:00
itsmattkc 690bdb6581 timeline: make sure track length is updated if a block is disconnected 2020-04-27 14:01:44 +10:00