a first attempt at a new render system

This commit is contained in:
itsmattkc
2020-05-14 14:43:03 +10:00
parent c5dfddff0d
commit 863ae1b913
60 changed files with 927 additions and 3164 deletions
+18 -16
View File
@@ -31,28 +31,28 @@ OLIVE_NAMESPACE_ENTER
AudioWaveformView::AudioWaveformView(QWidget *parent) :
SeekableWidget(parent),
backend_(nullptr)
playback_(nullptr)
{
setAutoFillBackground(true);
setBackgroundRole(QPalette::Base);
}
void AudioWaveformView::SetBackend(AudioRenderBackend *backend)
void AudioWaveformView::SetViewer(AudioPlaybackCache *playback)
{
if (backend_) {
disconnect(backend_, &AudioRenderBackend::QueueComplete, this, &AudioWaveformView::ForceUpdate);
disconnect(backend_, &AudioRenderBackend::ParamsChanged, this, &AudioWaveformView::BackendParamsChanged);
if (playback_) {
disconnect(playback_, &AudioPlaybackCache::Validated, this, &AudioWaveformView::ForceUpdate);
disconnect(playback_, &AudioPlaybackCache::ParametersChanged, this, &AudioWaveformView::BackendParamsChanged);
SetTimebase(0);
}
backend_ = backend;
playback_ = playback;
if (backend_) {
connect(backend_, &AudioRenderBackend::QueueComplete, this, &AudioWaveformView::ForceUpdate);
connect(backend_, &AudioRenderBackend::ParamsChanged, this, &AudioWaveformView::BackendParamsChanged);
if (playback_) {
connect(playback_, &AudioPlaybackCache::Validated, this, &AudioWaveformView::ForceUpdate);
connect(playback_, &AudioPlaybackCache::ParametersChanged, this, &AudioWaveformView::BackendParamsChanged);
SetTimebase(backend_->params().time_base());
SetTimebase(playback_->GetParameters().time_base());
}
ForceUpdate();
@@ -113,12 +113,14 @@ void AudioWaveformView::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
if (!backend_ || backend_->CachePathName().isEmpty() || !backend_->params().is_valid()) {
const AudioRenderingParams& params = playback_->GetParameters();
if (!playback_
|| playback_->GetCacheFilename().isEmpty()
|| !params.is_valid()) {
return;
}
const AudioRenderingParams& params = backend_->params();
if (cached_size_ != size()
|| cached_scale_ != GetScale()
|| cached_scroll_ != GetScroll()) {
@@ -126,7 +128,7 @@ void AudioWaveformView::paintEvent(QPaintEvent *event)
cached_waveform_ = QPixmap(size());
cached_waveform_.fill(Qt::transparent);
QFile fs(backend_->CachePathName());
QFile fs(playback_->GetCacheFilename());
if (fs.open(QFile::ReadOnly)) {
@@ -207,12 +209,12 @@ void AudioWaveformView::paintEvent(QPaintEvent *event)
void AudioWaveformView::BackendParamsChanged()
{
SetTimebase(backend_->params().time_base());
SetTimebase(playback_->GetParameters().time_base());
}
void AudioWaveformView::ForceUpdate()
{
cached_size_ = QSize();
cached_size_ = QSize();
update();
}