From 4697b989800a0154e3f84899b081cd0fe996dcbe Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 19 Jan 2020 20:39:48 +1100 Subject: [PATCH 1/2] fixed gcc compile issues --- CMakeLists.txt | 2 +- app/audio/outputdeviceproxy.cpp | 5 ++++- app/audio/outputmanager.h | 1 + app/audio/tempoprocessor.cpp | 4 ++-- app/codec/encoder.cpp | 2 ++ app/codec/ffmpeg/ffmpegencoder.cpp | 4 ++-- app/dialog/export/exportaudiotab.cpp | 2 +- app/dialog/preferences/tabs/preferencesgeneraltab.cpp | 2 +- app/dialog/sequence/sequence.cpp | 2 +- app/node/audio/volume/volume.cpp | 2 ++ app/node/input.cpp | 4 ++-- app/node/keyframe.h | 1 + app/node/output.cpp | 2 +- app/project/item/footage/footage.cpp | 2 +- app/project/item/footage/stream.cpp | 6 +++--- app/project/item/item.cpp | 2 +- app/project/item/sequence/sequence.cpp | 2 +- app/render/backend/videorenderframecache.cpp | 7 +------ app/render/backend/videorenderframecache.h | 3 +-- app/render/backend/videorenderworker.cpp | 6 +++--- app/render/backend/videorenderworker.h | 2 +- app/widget/curvewidget/curveview.cpp | 2 ++ app/widget/keyframeview/keyframeviewbase.cpp | 8 ++++---- app/widget/nodeparamview/nodeparamview.cpp | 2 ++ app/widget/slider/integerslider.cpp | 6 +++--- app/widget/slider/timeslider.cpp | 2 +- app/widget/timelinewidget/tool/edit.cpp | 6 +++--- app/widget/timelinewidget/tool/zoom.cpp | 2 ++ app/widget/timelinewidget/view/timelineviewbase.cpp | 6 +++--- app/widget/timeruler/timeruler.cpp | 4 ++-- 30 files changed, 55 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c86f9c02..4402252f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,7 @@ find_package(Qt5 5.6 REQUIRED LinguistTools ) -find_package(FFMPEG 3.4 REQUIRED +find_package(FFMPEG 3.0 REQUIRED COMPONENTS avutil avcodec diff --git a/app/audio/outputdeviceproxy.cpp b/app/audio/outputdeviceproxy.cpp index e01f04be5..7f2625bea 100644 --- a/app/audio/outputdeviceproxy.cpp +++ b/app/audio/outputdeviceproxy.cpp @@ -83,12 +83,15 @@ qint64 AudioOutputDeviceProxy::readData(char *data, qint64 maxlen) qint64 AudioOutputDeviceProxy::writeData(const char *data, qint64 maxSize) { + Q_UNUSED(data) + Q_UNUSED(maxSize) + return -1; } qint64 AudioOutputDeviceProxy::ReverseAwareRead(char *data, qint64 maxlen) { - qint64 new_pos; + qint64 new_pos = -1; if (playback_speed_ < 0) { // If we're reversing, we'll seek back by maxlen bytes before we read diff --git a/app/audio/outputmanager.h b/app/audio/outputmanager.h index 58b9cb3a0..4b00208de 100644 --- a/app/audio/outputmanager.h +++ b/app/audio/outputmanager.h @@ -21,6 +21,7 @@ #ifndef AUDIOHYBRIDDEVICE_H #define AUDIOHYBRIDDEVICE_H +#include #include #include #include diff --git a/app/audio/tempoprocessor.cpp b/app/audio/tempoprocessor.cpp index d495d10c9..196476b43 100644 --- a/app/audio/tempoprocessor.cpp +++ b/app/audio/tempoprocessor.cpp @@ -162,7 +162,7 @@ void TempoProcessor::Push(const char *data, int length) } // Copy buffer from data array to frame - memcpy(src_frame->data[0], data, length); + memcpy(src_frame->data[0], data, static_cast(length)); } int ret = av_buffersrc_add_frame_flags(buffersrc_ctx_, src_frame, AV_BUFFERSRC_FLAG_KEEP_REF); @@ -204,7 +204,7 @@ int TempoProcessor::Pull(char *data, int max_length) int copy_length = qMin(max_length, processed_frame_max_bytes_ - processed_frame_byte_index_); // Copy the bytes - memcpy(data, processed_frame_->data[0] + processed_frame_byte_index_, copy_length); + memcpy(data, processed_frame_->data[0] + processed_frame_byte_index_, static_cast(copy_length)); // Add the copied amount to the current index processed_frame_byte_index_ += copy_length; diff --git a/app/codec/encoder.cpp b/app/codec/encoder.cpp index 32c25463a..b0d4ec685 100644 --- a/app/codec/encoder.cpp +++ b/app/codec/encoder.cpp @@ -75,6 +75,8 @@ const AudioRenderingParams &EncodingParams::audio_params() const Encoder* Encoder::CreateFromID(const QString &id, const EncodingParams& params) { + Q_UNUSED(id) + return new FFmpegEncoder(params); } diff --git a/app/codec/ffmpeg/ffmpegencoder.cpp b/app/codec/ffmpeg/ffmpegencoder.cpp index 1887ea6ac..6c0d6410d 100644 --- a/app/codec/ffmpeg/ffmpegencoder.cpp +++ b/app/codec/ffmpeg/ffmpegencoder.cpp @@ -37,10 +37,10 @@ void FFmpegEncoder::WriteAudio(const AudioRenderingParams &pcm_info, const QStri } SwrContext* swr_ctx = swr_alloc_set_opts(nullptr, - audio_codec_ctx_->channel_layout, + static_cast(audio_codec_ctx_->channel_layout), audio_codec_ctx_->sample_fmt, audio_codec_ctx_->sample_rate, - pcm_info.channel_layout(), + static_cast(pcm_info.channel_layout()), FFmpegCommon::GetFFmpegSampleFormat(pcm_info.format()), pcm_info.sample_rate(), 0, diff --git a/app/dialog/export/exportaudiotab.cpp b/app/dialog/export/exportaudiotab.cpp index e28de76f8..334905450 100644 --- a/app/dialog/export/exportaudiotab.cpp +++ b/app/dialog/export/exportaudiotab.cpp @@ -38,7 +38,7 @@ ExportAudioTab::ExportAudioTab(QWidget* parent) : channel_layout_combobox_ = new QComboBox(); channel_layouts_ = Core::SupportedChannelLayouts(); foreach (const uint64_t& layout, channel_layouts_) { - channel_layout_combobox_->addItem(Core::ChannelLayoutToString(layout), layout); + channel_layout_combobox_->addItem(Core::ChannelLayoutToString(layout), QVariant::fromValue(layout)); } layout->addWidget(channel_layout_combobox_, row, 1); diff --git a/app/dialog/preferences/tabs/preferencesgeneraltab.cpp b/app/dialog/preferences/tabs/preferencesgeneraltab.cpp index bae7e65af..e434499fd 100644 --- a/app/dialog/preferences/tabs/preferencesgeneraltab.cpp +++ b/app/dialog/preferences/tabs/preferencesgeneraltab.cpp @@ -90,7 +90,7 @@ void PreferencesGeneralTab::Accept() Config::Current()["DefaultSequenceHeight"] = default_sequence_.video_params().height();; Config::Current()["DefaultSequenceFrameRate"] = QVariant::fromValue(default_sequence_.video_params().time_base()); Config::Current()["DefaultSequenceAudioFrequency"] = default_sequence_.audio_params().sample_rate(); - Config::Current()["DefaultSequenceAudioLayout"] = default_sequence_.audio_params().channel_layout(); + Config::Current()["DefaultSequenceAudioLayout"] = QVariant::fromValue(default_sequence_.audio_params().channel_layout()); Config::Current()["Autoscroll"] = autoscroll_method_->currentData(); } diff --git a/app/dialog/sequence/sequence.cpp b/app/dialog/sequence/sequence.cpp index 889fa5d45..08e729ad4 100644 --- a/app/dialog/sequence/sequence.cpp +++ b/app/dialog/sequence/sequence.cpp @@ -116,7 +116,7 @@ SequenceDialog::SequenceDialog(Sequence* s, Type t, QWidget* parent) : // Set up available channel layouts QList channel_layouts = Core::SupportedChannelLayouts(); foreach (const uint64_t& layout, channel_layouts) { - audio_channels_field_->addItem(Core::ChannelLayoutToString(layout), layout); + audio_channels_field_->addItem(Core::ChannelLayoutToString(layout), QVariant::fromValue(layout)); } // Set values based on input sequence diff --git a/app/node/audio/volume/volume.cpp b/app/node/audio/volume/volume.cpp index 143e24dc8..5afda4786 100644 --- a/app/node/audio/volume/volume.cpp +++ b/app/node/audio/volume/volume.cpp @@ -43,6 +43,8 @@ NodeInput *VolumeNode::ProcessesSamplesFrom() const void VolumeNode::ProcessSamples(const NodeValueDatabase *values, const AudioRenderingParams& params, const float* input, float* output, int index) const { + Q_UNUSED(params) + float volume_val = (*values)[volume_input_].Get(NodeParam::kFloat).toFloat(); output[index] = input[index] * volume_val; diff --git a/app/node/input.cpp b/app/node/input.cpp index 921226da4..8dc05f412 100644 --- a/app/node/input.cpp +++ b/app/node/input.cpp @@ -241,11 +241,11 @@ const NodeParam::DataType &NodeInput::data_type() const return data_type_; } -void NodeInput::LoadInternal(QXmlStreamReader *reader, QHash ¶m_ptrs, QList &input_connections, QList& footage_connections) +void NodeInput::LoadInternal(QXmlStreamReader*, QHash&, QList&, QList&) { } -void NodeInput::SaveInternal(QXmlStreamWriter *writer) const +void NodeInput::SaveInternal(QXmlStreamWriter*) const { } diff --git a/app/node/keyframe.h b/app/node/keyframe.h index a3aa59827..a6bc5167d 100644 --- a/app/node/keyframe.h +++ b/app/node/keyframe.h @@ -22,6 +22,7 @@ #define NODEKEYFRAME_H #include +#include #include #include "common/rational.h" diff --git a/app/node/output.cpp b/app/node/output.cpp index 9c2888850..a19f094c5 100644 --- a/app/node/output.cpp +++ b/app/node/output.cpp @@ -42,7 +42,7 @@ QString NodeOutput::name() return NodeParam::name(); } -void NodeOutput::Load(QXmlStreamReader* reader, QHash& param_ptrs, QList &input_connections, QList& footage_connections) +void NodeOutput::Load(QXmlStreamReader* reader, QHash& param_ptrs, QList&, QList&) { XMLAttributeLoop(reader, attr) { if (attr.name() == "ptr") { diff --git a/app/project/item/footage/footage.cpp b/app/project/item/footage/footage.cpp index e6ac10b1a..ca06e4f04 100644 --- a/app/project/item/footage/footage.cpp +++ b/app/project/item/footage/footage.cpp @@ -37,7 +37,7 @@ Footage::~Footage() ClearStreams(); } -void Footage::Load(QXmlStreamReader *reader, QHash& footage_ptrs, QList& footage_connections) +void Footage::Load(QXmlStreamReader *reader, QHash& footage_ptrs, QList&) { QXmlStreamAttributes attributes = reader->attributes(); diff --git a/app/project/item/footage/stream.cpp b/app/project/item/footage/stream.cpp index 0f8ebafb7..180467140 100644 --- a/app/project/item/footage/stream.cpp +++ b/app/project/item/footage/stream.cpp @@ -140,15 +140,15 @@ StreamID Stream::ToID() const return StreamID(footage_->filename(), index_); } -void Stream::FootageSetEvent(Footage *) +void Stream::FootageSetEvent(Footage*) { } -void Stream::LoadCustomParameters(QXmlStreamReader* reader) +void Stream::LoadCustomParameters(QXmlStreamReader*) { } -void Stream::SaveCustomParameters(QXmlStreamWriter *writer) const +void Stream::SaveCustomParameters(QXmlStreamWriter*) const { } diff --git a/app/project/item/item.cpp b/app/project/item/item.cpp index 33bbf3113..661708260 100644 --- a/app/project/item/item.cpp +++ b/app/project/item/item.cpp @@ -157,7 +157,7 @@ bool Item::ChildExistsWithName(const QString &name) return ChildExistsWithNameInternal(name, this); } -void Item::NameChangedEvent(const QString &name) +void Item::NameChangedEvent(const QString &) { } diff --git a/app/project/item/sequence/sequence.cpp b/app/project/item/sequence/sequence.cpp index 387b37ff4..994918abd 100644 --- a/app/project/item/sequence/sequence.cpp +++ b/app/project/item/sequence/sequence.cpp @@ -42,7 +42,7 @@ Sequence::Sequence() AddNode(viewer_output_); } -void Sequence::Load(QXmlStreamReader *reader, QHash &footage_ptrs, QList& footage_connections) +void Sequence::Load(QXmlStreamReader *reader, QHash &, QList& footage_connections) { XMLAttributeLoop(reader, attr) { if (attr.name() == "name") { diff --git a/app/render/backend/videorenderframecache.cpp b/app/render/backend/videorenderframecache.cpp index e9bde2145..3e3a8ccda 100644 --- a/app/render/backend/videorenderframecache.cpp +++ b/app/render/backend/videorenderframecache.cpp @@ -37,7 +37,7 @@ bool VideoRenderFrameCache::IsCaching(const QByteArray &hash) return is_caching; } -bool VideoRenderFrameCache::TryCache(const rational& time, const QByteArray &hash) +bool VideoRenderFrameCache::TryCache(const QByteArray &hash) { currently_caching_lock_.lock(); @@ -69,11 +69,6 @@ void VideoRenderFrameCache::SetHash(const rational &time, const QByteArray &hash time_hash_map_.insert(time, hash); } -void VideoRenderFrameCache::RemoveHash(const rational &time, const QByteArray &hash) -{ - time_hash_map_.remove(time); -} - void VideoRenderFrameCache::Truncate(const rational &time) { QMap::iterator i = time_hash_map_.begin(); diff --git a/app/render/backend/videorenderframecache.h b/app/render/backend/videorenderframecache.h index 0829cc3c3..6c5af9447 100644 --- a/app/render/backend/videorenderframecache.h +++ b/app/render/backend/videorenderframecache.h @@ -26,7 +26,7 @@ public: /** * @brief Check if a frame is currently being cached, and if not reserve it */ - bool TryCache(const rational &time, const QByteArray& hash); + bool TryCache(const QByteArray& hash); /** * @brief Return the path of the cached image at this time @@ -38,7 +38,6 @@ public: QByteArray TimeToHash(const rational& time) const; void SetHash(const rational& time, const QByteArray& hash); - void RemoveHash(const rational& time, const QByteArray &hash); void Truncate(const rational& time); diff --git a/app/render/backend/videorenderworker.cpp b/app/render/backend/videorenderworker.cpp index 04dc9d907..5e0751ece 100644 --- a/app/render/backend/videorenderworker.cpp +++ b/app/render/backend/videorenderworker.cpp @@ -54,7 +54,7 @@ NodeValueTable VideoRenderWorker::RenderInternal(const NodeDependency& path, con // We've already cached this hash, no need to continue emit HashAlreadyExists(path, job_time, hash); - } else if (!(operating_mode_ & kHashOnly) || frame_cache_->TryCache(path.in(), hash)) { + } else if (!(operating_mode_ & kHashOnly) || frame_cache_->TryCache(hash)) { // This hash is available for us to cache, start traversing graph value = ProcessNode(path); @@ -67,7 +67,7 @@ NodeValueTable VideoRenderWorker::RenderInternal(const NodeDependency& path, con // If we actually have a texture, download it into the disk cache if ((operating_mode_ & kDownloadOnly) && !texture.isNull()) { - Download(path, hash, texture, frame_cache_->CachePathName(hash, video_params_.format())); + Download(texture, frame_cache_->CachePathName(hash, video_params_.format())); } frame_cache_->RemoveHashFromCurrentlyCaching(hash); @@ -206,7 +206,7 @@ void VideoRenderWorker::CloseInternal() download_buffer_.clear(); } -void VideoRenderWorker::Download(NodeDependency dep, QByteArray hash, QVariant texture, QString filename) +void VideoRenderWorker::Download(QVariant texture, QString filename) { PixelFormat::Info format_info = PixelService::GetPixelFormatInfo(video_params().format()); diff --git a/app/render/backend/videorenderworker.h b/app/render/backend/videorenderworker.h index a09277832..7d73e8281 100644 --- a/app/render/backend/videorenderworker.h +++ b/app/render/backend/videorenderworker.h @@ -78,7 +78,7 @@ protected: private: void HashNodeRecursively(QCryptographicHash* hash, const Node *n, const rational &time); - void Download(NodeDependency dep, QByteArray hash, QVariant texture, QString filename); + void Download(QVariant texture, QString filename); VideoRenderingParams video_params_; diff --git a/app/widget/curvewidget/curveview.cpp b/app/widget/curvewidget/curveview.cpp index 256fe9f27..34ad3cc46 100644 --- a/app/widget/curvewidget/curveview.cpp +++ b/app/widget/curvewidget/curveview.cpp @@ -194,6 +194,8 @@ void CurveView::ScaleChangedEvent(double scale) void CurveView::VerticalScaleChangedEvent(double scale) { + Q_UNUSED(scale) + QMap::const_iterator iterator; for (iterator=item_map().begin();iterator!=item_map().end();iterator++) { diff --git a/app/widget/keyframeview/keyframeviewbase.cpp b/app/widget/keyframeview/keyframeviewbase.cpp index f8e60dfbe..dda412f3c 100644 --- a/app/widget/keyframeview/keyframeviewbase.cpp +++ b/app/widget/keyframeview/keyframeviewbase.cpp @@ -197,7 +197,7 @@ void KeyframeViewBase::ScaleChangedEvent(double scale) } } -void KeyframeViewBase::VerticalScaleChangedEvent(double scale) +void KeyframeViewBase::VerticalScaleChangedEvent(double) { } @@ -300,9 +300,9 @@ void KeyframeViewBase::ShowContextMenu() MenuShared::instance()->AddItemsForEditMenu(&m); - QAction* linear_key_action; - QAction* bezier_key_action; - QAction* hold_key_action; + QAction* linear_key_action = nullptr; + QAction* bezier_key_action = nullptr; + QAction* hold_key_action = nullptr; QList items = scene()->selectedItems(); if (!items.isEmpty()) { diff --git a/app/widget/nodeparamview/nodeparamview.cpp b/app/widget/nodeparamview/nodeparamview.cpp index 712d90be8..50b2502c3 100644 --- a/app/widget/nodeparamview/nodeparamview.cpp +++ b/app/widget/nodeparamview/nodeparamview.cpp @@ -228,5 +228,7 @@ void NodeParamView::ItemRequestedTimeChanged(const rational &time) void NodeParamView::ForceKeyframeViewToScroll(int min, int max) { + Q_UNUSED(min) + bottom_item_->setY(keyframe_view_->viewport()->height() + max); } diff --git a/app/widget/slider/integerslider.cpp b/app/widget/slider/integerslider.cpp index d5dd940c1..25135873f 100644 --- a/app/widget/slider/integerslider.cpp +++ b/app/widget/slider/integerslider.cpp @@ -33,17 +33,17 @@ int IntegerSlider::GetValue() void IntegerSlider::SetValue(const int64_t &v) { - SliderBase::SetValue(v); + SliderBase::SetValue(QVariant::fromValue(v)); } void IntegerSlider::SetMinimum(const int64_t &d) { - SetMinimumInternal(d); + SetMinimumInternal(QVariant::fromValue(d)); } void IntegerSlider::SetMaximum(const int64_t &d) { - SetMaximumInternal(d); + SetMaximumInternal(QVariant::fromValue(d)); } QVariant IntegerSlider::StringToValue(const QString &s, bool *ok) diff --git a/app/widget/slider/timeslider.cpp b/app/widget/slider/timeslider.cpp index f5981fced..5899596db 100644 --- a/app/widget/slider/timeslider.cpp +++ b/app/widget/slider/timeslider.cpp @@ -30,5 +30,5 @@ QString TimeSlider::ValueToString(const QVariant &v) QVariant TimeSlider::StringToValue(const QString &s, bool *ok) { - return Timecode::timecode_to_timestamp(s, timebase_, Timecode::CurrentDisplay(), ok); + return QVariant::fromValue(Timecode::timecode_to_timestamp(s, timebase_, Timecode::CurrentDisplay(), ok)); } diff --git a/app/widget/timelinewidget/tool/edit.cpp b/app/widget/timelinewidget/tool/edit.cpp index c2945d17f..ad635b7cb 100644 --- a/app/widget/timelinewidget/tool/edit.cpp +++ b/app/widget/timelinewidget/tool/edit.cpp @@ -7,15 +7,15 @@ TimelineWidget::EditTool::EditTool(TimelineWidget* parent) : void TimelineWidget::EditTool::MousePress(TimelineViewMouseEvent *event) { - + Q_UNUSED(event) } void TimelineWidget::EditTool::MouseMove(TimelineViewMouseEvent *event) { - + Q_UNUSED(event) } void TimelineWidget::EditTool::MouseRelease(TimelineViewMouseEvent *event) { - + Q_UNUSED(event) } diff --git a/app/widget/timelinewidget/tool/zoom.cpp b/app/widget/timelinewidget/tool/zoom.cpp index 4d5b2143d..f2f40a891 100644 --- a/app/widget/timelinewidget/tool/zoom.cpp +++ b/app/widget/timelinewidget/tool/zoom.cpp @@ -32,6 +32,8 @@ void TimelineWidget::ZoomTool::MousePress(TimelineViewMouseEvent *event) void TimelineWidget::ZoomTool::MouseMove(TimelineViewMouseEvent *event) { + Q_UNUSED(event) + if (dragging_) { parent()->MoveRubberBandSelect(false, false); } else { diff --git a/app/widget/timelinewidget/view/timelineviewbase.cpp b/app/widget/timelinewidget/view/timelineviewbase.cpp index ecded975f..7f204560c 100644 --- a/app/widget/timelinewidget/view/timelineviewbase.cpp +++ b/app/widget/timelinewidget/view/timelineviewbase.cpp @@ -139,7 +139,7 @@ bool TimelineViewBase::PlayheadMove(QMouseEvent *event) return true; } -bool TimelineViewBase::PlayheadRelease(QMouseEvent *event) +bool TimelineViewBase::PlayheadRelease(QMouseEvent*) { if (dragging_playhead_) { dragging_playhead_ = false; @@ -210,7 +210,7 @@ bool TimelineViewBase::HandRelease(QMouseEvent *event) return false; } -void TimelineViewBase::ToolChangedEvent(Tool::Item tool) +void TimelineViewBase::ToolChangedEvent(Tool::Item) { } @@ -326,7 +326,7 @@ bool TimelineViewBase::WheelEventIsAZoomEvent(QWheelEvent *event) return (static_cast(event->modifiers() & Qt::ControlModifier) == !Config::Current()["ScrollZooms"].toBool()); } -void TimelineViewBase::SetLimitYAxis(bool e) +void TimelineViewBase::SetLimitYAxis(bool) { limit_y_axis_ = true; UpdateSceneRect(); diff --git a/app/widget/timeruler/timeruler.cpp b/app/widget/timeruler/timeruler.cpp index cfdcb23f8..a18d9d8c1 100644 --- a/app/widget/timeruler/timeruler.cpp +++ b/app/widget/timeruler/timeruler.cpp @@ -143,7 +143,7 @@ void TimeRuler::paintEvent(QPaintEvent *) double width_of_day = width_of_hour * 24; double long_interval, short_interval; - int long_rate; + int long_rate = 0; // Used for comparison, even if one unit can technically fit, we have to fit at least two for it to matter int doubled_gap = minimum_gap_between_lines_ * 2; @@ -252,7 +252,7 @@ void TimeRuler::paintEvent(QPaintEvent *) if (timecode_left > last_text_draw) { p.drawText(text_rect, - text_align, + static_cast(text_align), timecode_str); last_text_draw = timecode_left + timecode_width; From 61c697689b6c5fdbd6f7284f073ceb2b8dff811d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 19 Jan 2020 22:00:34 +1100 Subject: [PATCH 2/2] addressed linker issue on some versions of gcc --- app/node/keyframe.cpp | 2 ++ app/node/keyframe.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/node/keyframe.cpp b/app/node/keyframe.cpp index 7223ddbf4..d67a9b666 100644 --- a/app/node/keyframe.cpp +++ b/app/node/keyframe.cpp @@ -20,6 +20,8 @@ #include "keyframe.h" +const NodeKeyframe::Type NodeKeyframe::kDefaultType = kLinear; + NodeKeyframe::NodeKeyframe(const rational &time, const QVariant &value, const NodeKeyframe::Type &type, const int &track) : time_(time), value_(value), diff --git a/app/node/keyframe.h b/app/node/keyframe.h index a6bc5167d..fb7b38041 100644 --- a/app/node/keyframe.h +++ b/app/node/keyframe.h @@ -54,7 +54,7 @@ public: kOutHandle }; - static const Type kDefaultType = kLinear; + static const Type kDefaultType; /** * @brief NodeKeyframe Constructor