Mike-Solar
eb634b53ef
R7: pure C ABI display boundary + engine visibility closure
...
R7-A (Qwen 3.8 Max): oakengine/display.h rewritten to the POD contract
from r7-pure-abi-plan.md - oak_video_params everywhere, opaque
texture/frame handles with retain/free protocol (engine-heap control
blocks), OakSharedBuffer refcounted wrapper for the QVariant playback
path. All TexturePtr/FramePtr gone from app (47 sites).
R7-B (Qwen 3.8 Max): liboakengine.so exports 3486 -> 19 C++ symbols
(version script oakengine.ver: oakengine_* plus the documented
oakgl/oakvulkan dlopen plugin ABI). oakengine-obj OBJECT library feeds
both the shared lib and the test binaries (-rdynamic so dlopen'd
backends resolve engine objects).
Fix (Kimi K3): producer/consumer type mismatch - viewerdisplay
unpacks OakSharedBufferPtr but viewer.cpp pushed raw void* handles,
so no frame ever reached the display widget (all 5 vulkan viewer
tests timed out with 'never received a texture'). Producers now wrap
with oak_make_shared_frame / oak_make_shared_texture(retain).
Verified: build 0 errors, ctest 45/45, nm U _ZN5olive = 0 in
oak-editor/oak-render-worker/oak-cli, 19 exported C++ symbols in
liboakengine.so (all documented plugin ABI).
2026-07-27 00:54:46 +08:00
Mike-Solar
0aa5879f35
app: migrate all engine access to the C ABI facade (nm U _ZN5olive = 0)
...
Every app module now reaches liboakengine exclusively through
oakengine_* C calls, EngineEventBridge subscriptions and app-side
handle headers (cliphandle/keyframehandle/nodevaluehandle/oakvaluehelper).
Direct C++ command construction, engine signal connect()s, and engine
type usage in MOC-visible signatures are gone: 557 -> 0 undefined
olive:: symbols in oak-editor.
2026-07-26 22:43:21 +08:00
Mike-Solar
bb40b4923e
style: unify identifier naming per updated conventions
...
Automated with clang-tidy readability-identifier-naming (config added to
.clang-tidy) plus scripted passes, per the updated rules now documented
in CONTRIBUTING.md:
- types (class/struct/enum/alias/template params): PascalCase
- functions, variables, members: snake_case (incl. rational -> Rational)
- private/protected members: trailing underscore; static member
variables likewise (instance_, available_themes_)
- constants and enum values: snake_case (kLinear -> k_linear,
F32P -> f32p); ALL_CAPS reserved for macros
- macros: OAK_ prefix (OLIVE_ADD_TEST/OLIVE_ASSERT/OLIVE_CONFIG ->
OAK_ADD_TEST/OAK_ASSERT/OAK_CONFIG, GL_PREAMBLE -> OAK_GL_PREAMBLE,
include guards -> OAK_*)
- file names: all lowercase (Current/Plugin/OliveHost/OliveClip/
OlivePluginInstance -> current/plugin/olivehost/oliveclip/
oliveplugininstance)
- getters share the member name sans underscore, setters set_foo()
- Qt and third-party (OpenFX) virtual overrides and framework callbacks
keep their original names (exempt in .clang-tidy)
Manual follow-ups required where automation could not reach:
- string-based QMetaObject/SIGNAL/SLOT references updated to renamed
methods (AddTask, CreatedFile, DeleteSpecificFile, moveSelectionUp, ...)
- macro bodies referencing renamed methods (OLIVE_CONFIG,
NODE_DEFAULT_DESTRUCTOR, MANAGEDDISPLAYWIDGET_*)
- self-shadowing locals renamed where signals/methods became same-named
(size_changed, worker_count, selected_items, import param, filters)
- third_party OFX member/namespace usages restored (OFX::Host::*,
_created, _clipPrefsDirty, createInstance, clearPersistentMessage)
- STL protocol aliases restored (const_iterator) with .clang-tidy
ignore rules; qHash overloads restored
Full build and test suite pass: ctest 4/4, ~1960 gtest cases green.
2026-07-19 16:10:54 +08:00
Mike-Solar
c812f6ea28
fix: panel/window bugs surfaced by new gtest coverage
...
- MainWindowLayoutInfo: toXml() iterated open_sequences_ for the
<viewers> section and fromXml() never parsed it, so open footage
viewers were lost on layout save/load
- PanelWidget never set QObject::objectName, so
PanelManager::GetPanelWithName() always returned nullptr and every
caller (layout restore, NodeView param panel lookup) was dead code
- PanelManager::DestroyInstance() left instance_ dangling (UAF on any
later RegisterPanel), unlike the other singletons
2026-07-17 16:53:13 +08:00
Mike-Solar
e5eeaddf2f
format: reformatting files
2026-07-13 15:30:43 +08:00
Mike-Solar
cac5a40b58
Implement color LUT v0.4 features
2026-06-07 00:24:08 +08:00
Mike-Solar
bfb1b2fce4
update copyright back
2026-01-16 21:22:05 +08:00
Mike-Solar
b8669f6a11
Change project name;
2026-01-05 16:22:26 +08:00
Mike-Solar
b107370550
Fix CI
2026-01-05 13:19:36 +08:00
Mike Solar
22fd521951
Merge branch 'refs/heads/dev' into plugin
...
# Conflicts:
# .gitmodules
# CMakeLists.txt
# ext/core
2025-12-13 21:45:46 +08:00
Mike-Solar
1e33a31b73
Update FFmpeg handling and focus management
...
Refactor FFmpeg frame processing and improve focus management in panels. Add memory sanitization for debug builds and update KDDockWidgets integration.
2025-11-23 16:35:09 +08:00
Mike Solar
6fdfd03ffd
update: update copyright
2025-08-05 17:12:49 +08:00
Mike Solar
74f73ab3be
change: change code style to Linux style except indent.
2025-08-03 03:09:40 +08:00
itsmattkc
019f095ee4
implement history panel
2023-03-11 22:26:21 -08:00
itsmattkc
9745b536f6
nodes: remove graph and merge into project
2023-02-17 14:13:03 -08:00
itsmattkc
963d3b4b51
move add tool items to main menu
...
Makes them shortcut-assignable. Fixes #2158
2023-02-17 11:58:36 -08:00
itsmattkc
25b6b07a06
Squashed commit of the following:
...
commit 60c0f65c5e3c2faf1f7b0ae10b4131dabbcf715b
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Wed Feb 15 22:34:16 2023 -0800
mainwindow: don't close last timeline panel when removing sequence
commit bc892810d67c1dd4f9c0639767c563681f29701d
Merge: 69051a120 aef08f8cd
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Feb 14 17:05:25 2023 -0800
Merge branch 'master' into kddockwidgets
commit 69051a120b8423d0ad7b38def2f7555d323cd74d
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Feb 14 15:29:24 2023 -0800
finished kddockwidgets integration
commit 9a39dbeade871a0b9454b424c7f7a7482671d40b
Author: itsmattkc <34096995+itsmattkc@users.noreply.github.com >
Date: Tue Feb 14 11:54:25 2023 -0800
switch to kddockwidgets
2023-02-16 00:44:08 -08:00
itsmattkc
aef08f8cdd
audiomonitor: improve appearance
2023-02-14 16:57:40 -08:00
itsmattkc
d1a7bd29aa
mainwindow: improved panel organization
2023-02-08 18:18:06 -08:00
itsmattkc
70d34c674b
core: switch to single-project implementation
...
This has never worked right, it's caused a number of complexities within the code, and I think there are better ways to do this.
2023-02-08 12:15:05 -08:00
itsmattkc
451de7030b
Merge branch 'move-time-to-viewer'
2022-11-01 18:20:22 -07:00
itsmattkc
4d80044d6d
upgrade to qt 6 compliance
2022-10-28 19:42:14 -07:00
itsmattkc
d1545745d8
various: moved time from viewer UI to viewer node
2022-10-23 20:56:04 -07:00
itsmattkc
8a2f2912b4
multicam: allow overrides by selecting multicam nodes in nodeview
2022-10-02 11:23:55 -07:00
itsmattkc
14c7bd6dbc
multicam: implemented queuing of future node selections during playback
2022-10-02 10:39:35 -07:00
itsmattkc
14bf515d3f
multicam: various improvements
2022-10-01 16:57:46 -07:00
itsmattkc
e91ae5e4df
Merge branch 'master' into multicam
2022-10-01 13:51:04 -07:00
itsmattkc
df97df635d
timeline: implement nest function
...
Also includes some improved cache/request code
2022-10-01 13:04:51 -07:00
itsmattkc
640e6741f4
multicam: prioritize current clip under playhead
2022-09-29 19:45:38 -07:00
itsmattkc
6e183fe4be
multicam: refactor to heavily optimize multicam monitor retrieval
2022-09-29 17:50:09 -07:00
itsmattkc
74a1ec1479
multicam: implement clip splitting
2022-09-28 17:57:09 -07:00
itsmattkc
a6b8b7ccbc
multicam: finished usable implementation
2022-09-25 20:26:10 -07:00
itsmattkc
15d786538a
multicampanel: move to viewerpanelbase
2022-09-25 18:06:02 -07:00
itsmattkc
487cd166d7
start implementation of multicam panel
2022-09-21 13:16:19 -07:00
itsmattkc
cce44e40f4
project: implement searching
...
I can't believe this has been unimplemented this whole time...
2022-09-14 13:40:35 -07:00
itsmattkc
4a7c0780b6
audiomonitor: revert to qopenglwidget
2022-08-26 10:25:27 -07:00
itsmattkc
92949c50dd
viewerpanelbase: stop playback when panel is defocused
2022-08-21 10:02:44 -07:00
itsmattkc
e7799c9284
projectexplorer: focus footage panel when opening media there
2022-08-21 09:53:44 -07:00
itsmattkc
15a67bc12a
project: auto-select imported files
2022-07-26 11:39:35 -07:00
itsmattkc
f2e604c2cb
ui: add rename shortcut
2022-07-22 13:25:46 -07:00
itsmattkc
55d3915881
panelmanager: improve hover behavior
...
Fixes issue where QWidget::underMouse would return false if cursor was over a child QOpenGLWindow
2022-07-17 16:02:28 -07:00
itsmattkc
ac207e8fe7
timeline: implement add default transition
...
Fixes #1939
2022-06-28 12:09:10 -07:00
itsmattkc
89927c71ff
implemented reveal in footage viewer option
...
Fixes #1958
2022-06-27 23:40:05 -07:00
itsmattkc
079d6beff2
timeline: separate markers and workarea
2022-06-27 23:39:31 -07:00
itsmattkc
240bbdc583
viewer: fix mouse and compositing issues from using windows
2022-06-18 08:49:45 -07:00
itsmattkc
5ef56c8047
ui: use QOpenGLWindow instead of QOpenGLWidget for all panels
2022-06-12 10:28:15 -07:00
itsmattkc
501564fb22
ui: replace html edit in text node with edit in viewer button
2022-05-10 18:07:17 -07:00
itsmattkc
182e1599af
keyframes: implemented copying/pasting
2022-05-10 15:42:09 -07:00
itsmattkc
4b366a9b73
update copyright year to 2022
2022-05-10 10:38:56 -07:00
itsmattkc
102ce9aa7b
nodeparamview/nodeview: connect selections and enable multi-select in npv
2022-05-04 14:59:51 -07:00