Commit Graph
2718 Commits
Author SHA1 Message Date
itsmattkc 2ba928fa1f code cleanup: renamed qtversionabstraction.h to qtutils.h 2020-02-08 00:13:38 +11:00
itsmattkc 1ae2c8b128 fixed mingw compile issue 2020-02-07 12:42:19 +11:00
itsmattkc 1e71c0e7f5 oslbackend: began new backend classes 2020-02-05 14:49:55 +11:00
itsmattkc 91f1be90a9 opengl: isolate all functions to one thread 2020-02-03 18:14:58 +11:00
itsmattkc 776cfd87c8 renderer: minor code improvements 2020-02-03 12:41:20 +11:00
itsmattkc 0c46b0c471 decodercache: don't need thread-safe functions anymore 2020-02-03 01:29:29 +11:00
itsmattkc caf0d3d42a renderer: minor code improvements 2020-02-03 01:29:03 +11:00
itsmattkc 40e8aec285 viewer: minor code improvements 2020-02-03 01:27:45 +11:00
itsmattkc 110b5741e0 nodes: remove user input mutexes
These were no longer ever used and thus served no purpose.
2020-02-03 01:27:00 +11:00
itsmattkc 9b7cbb3fbd viewer: automatically update maximum scroll from media length 2020-02-01 23:09:25 +11:00
itsmattkc c0360abee1 toolpanel: override Retranslate() 2020-02-01 22:28:14 +11:00
itsmattkc 2fef893fd0 panels: override Retranslate() rather than reimplementing changeEvent() in every derivative 2020-02-01 22:11:14 +11:00
itsmattkc 42989994ca fixed reference to DBL_MAX 2020-02-01 21:35:30 +11:00
itsmattkc 4213209727 fixed gcc compilation issue 2020-02-01 21:27:06 +11:00
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00
itsmattkc 5d58479f0a oiiodecoder: fixed erroneous processing of extension_list 2020-01-26 14:43:45 +11:00
itsmattkc 0469fac4a9 node: send invalidatevisible signal through graph
When dragging a value in the UI, we use a "single frame update" because we want
to prioritize the currently visible frame to give visual feedback as soon as
possible. Previously, we generated a single frame InvalidateCache() signal
from the widgets themselves, but this had the major downside of not necessarily
emitting the time that the viewer was actually showing (due to either node time
transformations or times differing between the effects panels and the viewer
panels). Now, we send a different signal that viewers can handle themselves to
update the time that they're currently showing. This means the fast updating
will work no matter how many viewers are connected at whatever time each viewer
is set to.
2020-01-26 14:16:22 +11:00
itsmattkc ce17d94b12 timeline: don't show speed dialog if no blocks are selected
Prevents segfault opening SpeedDurationDialog with an empty clip list.
2020-01-26 13:37:47 +11:00
itsmattkc f068c425d2 viewer: provide UI to set preview resolution
Previews don't need to be rendered full resolution, particularly since the
preview is hardly ever 1:1 size of the sequence. The functionality to render
at lower resolutions already existed, but there was no UI for it. This commit
implements UI to set the resolution divider on the viewer.
2020-01-26 13:27:06 +11:00
itsmattkc e39e1002f7 travis: use export with upload description env 2020-01-26 12:49:33 +11:00
itsmattkc 8c0dfb6875 imagestream: fixed segfault when changing a project's default input colorspace 2020-01-26 12:22:30 +11:00
itsmattkc 840b41256a travis: use native xenial OIIO package rather than PPA
Now that we support OIIO 1.x, we don't need to use a PPA to install OIIO 2.x on
Xenial. The advantage of this is:

1. Not having to maintain an OIIO PPA.
2. Not messing up anyone's system if they have software installed that's been
linked with OIIO 1.x and then are forced to install over it with OIIO 2.x.
2020-01-26 12:01:53 +11:00
itsmattkc 490a634473 oiiodecoder: fixed segfault caused by some OIIO decoders if they received
unexpected data

When "probing" footage, Olive runs it past all of its decoders until one
responds that it can decode this file. However this caused issues when some
OIIO decoders would erroneously pick up incompatible files, try to read them
and segfault the entire app (notable OpenJPEG with MPEG-4 and RLA with WAVE
audio). We now use the file extension to check with OIIO if it "should" be
compatible before actually testing if it is.

This is not a "perfect" solution (i.e. someone could recreate the segfault by
renaming an MPEG-4 file to an image extension like .JPG), but is probably as
much as can be done Olive-side and should filter out all segfaults under normal
circumstances.
2020-01-26 11:54:49 +11:00
itsmattkc 6bef94b3e2 qt: fixed strange UI issue where hidden floating dock widgets would show as
transparent cuts through the main window on linux

For some reason, setting not visible *after* setting floating would cause this
issue. The other way around does not.
2020-01-26 11:38:24 +11:00
itsmattkc 8b0c7edfec OIIO: added support for OIIO 1.x
OIIO 2.x uses std::unique_ptr while 1.x uses raw pointers. Olive can now handle
both, manually destroying the raw pointers when necessary if running on OIIO
1.x.
2020-01-26 11:33:45 +11:00
itsmattkc 05c25c8713 CI: attempt to set warning for continuous build 2020-01-25 21:46:32 +11:00
itsmattkc 0e82ec600d keyframes: implemented same single frame strategy on bezier control points 2020-01-25 18:00:35 +11:00
itsmattkc b713ab47eb keyframes: only update active frames even from curve and param editor
When adjusting a slider, keyframe time, or curve value, it is undesirable to
re-cache the entire affected area while the user is still dragging UI objects.
Since the video is unlikely to be playing, the priority must go to the
currently active frame so the user gets visual feedback on the rendered image
as soon as possible. This was implemented in some areas, but this commit should
have that functionality in all areas.
2020-01-25 17:51:34 +11:00
itsmattkc 6f3ea35d9a CI: adjusted travis hash naming and moved appveyor script 2020-01-25 17:07:41 +11:00
itsmattkc 80c48c7633 block: fixed bug that broke single frame updating from a slider
Optimization that only invalidates cache when the user has stopped sliding to
keep the UI responsive.
2020-01-25 17:01:21 +11:00
itsmattkc f5fe87d959 track: reimplemented invalidate cache block
Optimizes working in the timeline by only invalidating cache when necessary.
2020-01-25 16:38:18 +11:00
itsmattkc 7bb8da8d79 node: rewrote problematic GetExclusiveDependencies() function
Function would erroneously pick up nodes that weren't actually dependencies.
2020-01-25 16:37:28 +11:00
itsmattkc 420e01002e dialogs: fixed regression that broke audio 2020-01-25 13:40:23 +11:00
itsmattkc 3f85ce8a7a diskmanager: clearing disk cache at runtime will correctly signal renderers
Clearing the disk cache in the preferences will correctly communicate to
renderers that those frames are now deleted.
2020-01-25 12:18:46 +11:00
itsmattkc c26070bfb5 appveyor: set TRAVIS_COMMIT for upload.sh 2020-01-25 00:49:04 +11:00
itsmattkc 3cac4dfb51 appveyor: use skip_tags to skip continuous 2020-01-24 14:47:40 +11:00
itsmattkc ca63e6ff89 appveyor: don't build continuous and follow redirects when downloading 2020-01-24 13:12:14 +11:00
itsmattkc 6a6587d3e3 appveyor: force locale to make grep work 2020-01-24 12:57:57 +11:00
itsmattkc d56f425d9c travis: cache brew packages to save time on mac builds 2020-01-24 12:31:43 +11:00
itsmattkc f8ad15013a appveyor: exit script on compile failure 2020-01-24 12:05:14 +11:00
itsmattkc 149d125e39 msvc: updated code for higher warning level 2020-01-24 12:00:55 +11:00
itsmattkc 66ad2749af travis: fixed broken if statement 2020-01-24 10:20:56 +11:00
itsmattkc e5d6395a4f travis: fixed syntax error 2020-01-24 10:10:15 +11:00
itsmattkc 5d1b379cb8 cmake: use high warning level in msvc 2020-01-24 01:37:06 +11:00
itsmattkc a629b1839d rendercanceldialog: pass through qshowevent 2020-01-24 01:36:52 +11:00
itsmattkc da2597610d CI: test artifact system 2020-01-24 01:13:03 +11:00
itsmattkc a3c932693a exportdialog: use wait for close code from previous commit when closing the
export dialog
2020-01-22 19:51:57 +11:00
itsmattkc 24f7eeb210 renderer: implemented function to wait for workers in the main thread
The workers run in separate threads meaning if any significant change is made
(e.g. parameters changing, or even closing the program), these workers may still
be mid-render. This is particularly problematic when closing since the nodes a
worker is rendering may be deleted mid-render. Render backends now have a
function that pauses the main thread (but starts a second event loop so the UI
isn't frozen) until the worker threads are all finished. This way, massive
changes can be made safely without race conditions.
2020-01-22 17:11:17 +11:00
itsmattkc fdbaa75dff renderer: allow parameters to be changed mid-session 2020-01-22 14:05:37 +11:00
itsmattkc 8932a5abeb preferences: allow users to set the default still image length 2020-01-21 14:31:45 +11:00