fix: remaining issues recorded during test coverage work
- RenderManager: GPU-side members (context_, decoder_cache_, shader_cache_, auto_cacher_, worker_pool_, decoder_clear_timer_) were left uninitialized when the configured graphics backend is unknown (e.g. dummy); ViewerWidget then dereferenced garbage and crashed. Initialize them at declaration - CurveView::SelectKeyframesOfInput ignored its reference parameter and selected keyframes of every connected track; select only the requested track's keyframes - SeekableWidget::SeekToScenePoint dereferenced GetViewerNode() unconditionally; skip the playhead update when no viewer is connected - LoadOTIOTask: unknown root schema leaked the freshly allocated project_ (delete + reset; OTIO is not enabled in local builds so this file is compile-verified by inspection only) Locked by new tests: RenderManagerDummyBackend, TimeRuler.SeekToScenePointWithoutViewerIsNoOp, CurveViewTest.SelectKeyframesOfInputSelectsOnlyRequestedTrack
This commit is contained in:
+10
-10
@@ -63,11 +63,11 @@ private:
|
||||
|
||||
bool cancelled_;
|
||||
|
||||
Renderer *context_;
|
||||
Renderer *context_ = nullptr;
|
||||
|
||||
DecoderCache *decoder_cache_;
|
||||
DecoderCache *decoder_cache_ = nullptr;
|
||||
|
||||
ShaderCache *shader_cache_;
|
||||
ShaderCache *shader_cache_ = nullptr;
|
||||
};
|
||||
|
||||
class RenderWorkerPool;
|
||||
@@ -239,21 +239,21 @@ private:
|
||||
|
||||
static RenderManager *instance_;
|
||||
|
||||
Renderer *context_;
|
||||
Renderer *context_ = nullptr;
|
||||
|
||||
Backend backend_;
|
||||
Backend requested_backend_;
|
||||
|
||||
DecoderCache *decoder_cache_;
|
||||
DecoderCache *decoder_cache_ = nullptr;
|
||||
|
||||
ShaderCache *shader_cache_;
|
||||
ShaderCache *shader_cache_ = nullptr;
|
||||
|
||||
static constexpr auto kDecoderMaximumInactivityAggressive = 1000;
|
||||
static constexpr auto kDecoderMaximumInactivity = 5000;
|
||||
|
||||
int aggressive_gc_;
|
||||
int aggressive_gc_ = 0;
|
||||
|
||||
QTimer *decoder_clear_timer_;
|
||||
QTimer *decoder_clear_timer_ = nullptr;
|
||||
|
||||
RenderThread *dry_run_thread_ = nullptr;
|
||||
RenderThread *audio_thread_ = nullptr;
|
||||
@@ -263,9 +263,9 @@ private:
|
||||
|
||||
std::list<RenderThread *> render_threads_;
|
||||
|
||||
PreviewAutoCacher *auto_cacher_;
|
||||
PreviewAutoCacher *auto_cacher_ = nullptr;
|
||||
|
||||
RenderWorkerPool *worker_pool_;
|
||||
RenderWorkerPool *worker_pool_ = nullptr;
|
||||
|
||||
private slots:
|
||||
void ClearOldDecoders();
|
||||
|
||||
Reference in New Issue
Block a user