Commit Graph
53 Commits
Author SHA1 Message Date
itsmattkc 2eb03bf386 various: removed constructor.h include 2020-04-14 00:53:25 +10:00
itsmattkc f08734d18e index/confirm tasks: these tasks no longer need to open the decoder to perform said tasks 2020-04-11 17:36:16 +10:00
itsmattkc 1aa87cbda6 various: encapsulate all code in the olive namespace to avoid name collisions
Large-scale code cleanup. Also adds a license to the top of all files that were
missing it.
2020-04-06 15:29:53 +10:00
luz.paz 321e7d1606 Fix doxygen and misc. typos
Found via `codespell -q 3 -L ba,keypair,numer,uint`
2020-03-10 15:00:56 -04:00
itsmattkc 02909c6ba9 statusbar: added basic task UI feedback without requiring the task
manager to be open
2020-03-03 01:50:51 +11:00
itsmattkc 866db58965 taskmanager: use deleteLater rather than delete
This doesn't solve a known issue, but is probably cleaner/more robust code
regardless.
2020-02-23 11:45:16 +11:00
itsmattkc b0c9711974 ffmpegdecoder: fixed double mutex lock
Error() would call Close() getting stuck in a double mutex lock that could
stall workers. This commit fixes that.
2020-02-21 20:04:36 +11:00
itsmattkc f769e88e6d taskmanager: restore one task per thread at idlepriority 2020-02-21 14:21:32 +11:00
itsmattkc 5a070f14de general: use IdlePriority rather than LowPriority
Fixes a number of playback stuttering and general UI lag issues by setting all
background tasks to IdlePriority rather than LowPriority. While it was assumed
LowPriority tasks would always get scheduled below NormalPriority (e.g. main
thread) tasks, it turns out this is not always the case. If the background tasks
start consuming a lot of CPU cycles, the scheduler may use "dynamic scheduling"
to schedule them above the main thread regardless leading to UI lag. This is
apparently the case for all thread priorities apart from IdlePriority, which
is allegedly a special case where threads are *only* scheduled when other
threads aren't busy ensuring the main thread stays responsive.
2020-02-20 17:48:50 +11:00
itsmattkc e68e89c40b renderer/decoder: use same background mechanism to conform audio as well 2020-02-19 16:45:34 +11:00
itsmattkc 77de011509 cmake: added ConformTask source files 2020-02-19 12:46:05 +11:00
itsmattkc 4bcbe290f4 task: Created ConformTask so audio conforming can be done as a background
process
2020-02-19 12:44:29 +11:00
itsmattkc 53551246da decoder: signal indexing progress
Better UI interactions, actually shows the progress of the index function in
the task manager now.
2020-02-19 12:19:42 +11:00
itsmattkc 55cdd47933 indextask: fixed typo and pass cancelled signal to Decoder::Index() 2020-02-17 02:14:32 +11:00
itsmattkc c0d42c4fda taskmanager: fixed typo and restricted taskmanager to one task at a time for now 2020-02-17 02:11:04 +11:00
itsmattkc fd49b6eb55 taskdialog: created ProgressDialog-based dialog for modal tasks 2020-02-17 02:05:40 +11:00
itsmattkc 21755c7f20 taskmanager: ensure task is finished before deleting it
Fixes race condition that could result in a segfault if a Task hadn't emitted
Finished() before it was destroyed by TaskManager.
2020-02-16 13:01:38 +11:00
itsmattkc 080fe22969 taskmanager: made AddTask() a slot so it can be queued from other threads 2020-02-16 10:29:11 +11:00
itsmattkc e93c3d4ce4 taskmanager: try to start next waiting tasks when a task finishes
Fixes bug where tasks would get stuck indefinitely.
2020-02-16 10:28:34 +11:00
itsmattkc 3efbcc28ef ffmpegdecoder: improved index reliability 2020-02-15 23:39:33 +11:00
itsmattkc 653709dc84 try to index media immediately on import
Since indexing is supplemental, it can be made a background task that can occur
at more or less any time. So we run it as soon as possible.
2020-01-17 03:58:29 +11:00
itsmattkc 75a9291cd2 refactored import function for greater robustness
The import function was written early on in the rewrite as a multithreaded
background task that was considered somewhat flawed. While it worked for the
most part, there were possibilities of race conditions that could have
potentially been fatal, particularly since media could theoretically be
deleted while the import/probe tasks were running in the background.

With the save/load functions coming in, it became even more complicated as
projects may include metadata about the footage that can't be implemented
easily when the footage is imported/probed in the background. Making importing
a modal task fixes all of these issues, it's still done in a background thread
to not hang the GUI thread, but the GUI thread can be briefly "paused" in a
user friendly way so that all these functions can be safer.
2020-01-15 15:19:14 +11:00
itsmattkc 61c60e00d6 various small code cleanups and improvements
Largely refactoring work to make the code somewhat nicer to work with.
2019-12-26 19:00:08 +11:00
itsmattkc 401de26733 updated other classes for the previous commit's file moving 2019-12-21 20:07:14 +11:00
itsmattkc 4b2f4bcdb2 fixed occasional import segfault 2019-09-08 12:18:27 +10:00
itsmattkc b81d0598b3 minor adjustments to render threads 2019-08-29 18:53:06 +10:00
itsmattkc 1616166fbc worked on thread safety with tasks 2019-08-09 12:31:02 +10:00
itsmattkc c0f6ee534a minor code cleanups 2019-08-09 10:43:14 +10:00
itsmattkc f26eea1620 moved more objects to shared ptrs 2019-08-09 08:21:54 +10:00
itsmattkc 6833b18829 merged probe functions into decoder class 2019-08-08 17:22:26 +10:00
itsmattkc f8830beac7 created new sequence dialog 2019-07-21 18:21:40 -07:00
itsmattkc 7b870de338 added mutex to items 2019-07-07 23:35:34 -05:00
itsmattkc 5e3c2fb7e4 documented (nearly) ever class 2019-07-06 23:32:01 -05:00
itsmattkc a9ff2389e6 minor code cleanup 2019-07-06 21:17:19 -05:00
itsmattkc 3038af3482 tasks are shared ptrs that can be cancelled and undone 2019-07-06 13:22:47 -05:00
itsmattkc b62ec30015 changed items to shared ptrs 2019-07-06 12:50:00 -05:00
itsmattkc a6971b3fde more work on project management 2019-07-06 09:46:55 -05:00
itsmattkc dae4310a7e reimplemented importing folders 2019-07-05 00:55:35 -05:00
itsmattkc 85b5bbd5d6 documentation and folded item delegates from old code back in 2019-07-02 03:01:46 -07:00
itsmattkc 0966b62f29 various improvements to import process and project management 2019-07-01 15:40:09 -07:00
itsmattkc 026c500802 minor improvements to css 2019-07-01 11:08:14 -07:00
itsmattkc 70cf6565f4 some taskthread documentation 2019-06-30 12:32:02 -07:00
itsmattkc 8e006f3883 automatically delete tasks that have completed successfully 2019-06-30 12:28:40 -07:00
itsmattkc 4241937069 license and documentation for task 2019-06-30 12:13:13 -07:00
itsmattkc db5641a0a4 created import and probe tasks 2019-06-30 11:19:20 -07:00
itsmattkc 2e6b36b2ae remove UI objects when a task is deleted 2019-06-29 02:30:42 -07:00
itsmattkc 84720b39cb simple UI for tasks 2019-06-29 01:42:07 -07:00
itsmattkc 1a25a14a61 tasks have dependencies 2019-06-28 10:57:25 -07:00
itsmattkc 76eaee65e0 documented task manager 2019-06-27 11:23:17 -07:00
itsmattkc bf9dd68d58 task manager will trigger new tasks as old tasks end 2019-06-27 11:11:49 -07:00