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.
This commit is contained in:
2026-07-26 22:43:21 +08:00
parent f95590e924
commit 0aa5879f35
256 changed files with 12357 additions and 4044 deletions
+19 -7
View File
@@ -25,8 +25,10 @@
#include <QPainter>
#include <QtMath>
#include "config/config.h"
#include "common/configwrapper.h"
#include "engineeventbridge.h"
#include "timeline/timelinecommon.h"
#include "widget/viewer/vieweroutpututils.h"
namespace olive
{
@@ -36,6 +38,8 @@ namespace olive
AudioWaveformView::AudioWaveformView(QWidget *parent)
: super(parent)
, playback_(nullptr)
, waveform_bridge_(nullptr)
, waveform_subscription_(0)
{
setAutoFillBackground(true);
setBackgroundRole(QPalette::Base);
@@ -46,6 +50,13 @@ AudioWaveformView::AudioWaveformView(QWidget *parent)
// originates from the center. But we're leaving it top/left for now since it was just
// ported from a QWidget's paintEvent.
setAlignment(Qt::AlignLeft | Qt::AlignTop);
// The connected-waveform notification arrives through the liboakengine
// event C ABI (replaces the old ViewerOutput::connected_waveform_changed
// connect); set_viewer() only subscribes/unsubscribes on the handle.
waveform_bridge_ = new EngineEventBridge(this);
connect(waveform_bridge_, &EngineEventBridge::viewer_connected_waveform_changed,
this, [this](OakEngineNode *) { viewport()->update(); });
}
void AudioWaveformView::set_viewer(ViewerOutput *playback)
@@ -54,9 +65,8 @@ void AudioWaveformView::set_viewer(ViewerOutput *playback)
pool_.clear();
pool_.waitForDone();
disconnect(playback_, &ViewerOutput::connected_waveform_changed,
viewport(),
static_cast<void (QWidget::*)()>(&QWidget::update));
waveform_bridge_->unsubscribe(waveform_subscription_);
waveform_subscription_ = 0;
set_timebase(0);
}
@@ -64,10 +74,12 @@ void AudioWaveformView::set_viewer(ViewerOutput *playback)
playback_ = playback;
if (playback_) {
connect(playback_, &ViewerOutput::connected_waveform_changed, viewport(),
static_cast<void (QWidget::*)()>(&QWidget::update));
waveform_subscription_ = waveform_bridge_->subscribe(
reinterpret_cast<OakEngineNode *>(playback_),
OAKENGINE_EVENT_VIEWER_CONNECTED_WAVEFORM_CHANGED);
Rational tb = playback_->get_video_params().frame_rate_as_time_base();
Rational tb =
viewer_output_video_params(playback_).frame_rate_as_time_base();
if (tb.isNull()) {
tb = OAK_CONFIG("DefaultSequenceFrameRate")
.value<Rational>()