From 153688e1961215bb9a2e83913e1427944e24fad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= Date: Thu, 17 Sep 2020 09:26:54 +0300 Subject: [PATCH] Fix calling methods on null objects Some object methods were calling without checking if the object exist or not. --- src/mainwindow.cpp | 37 ++++++++++++----------- src/timeline2/view/timelinecontroller.cpp | 27 +++++++++++------ src/titler/graphicsscenerectmove.cpp | 2 +- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7ddc3eada..6f0c1fd16 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2012,26 +2012,27 @@ void MainWindow::slotRenderProject() { KdenliveDoc *project = pCore->currentDoc(); - if (!m_renderWidget) { - if (project) { - m_renderWidget = new RenderWidget(project->useProxy(), this); - connect(m_renderWidget, &RenderWidget::shutdown, this, &MainWindow::slotShutdown); - connect(m_renderWidget, &RenderWidget::selectedRenderProfile, this, &MainWindow::slotSetDocumentRenderProfile); - connect(m_renderWidget, &RenderWidget::abortProcess, this, &MainWindow::abortRenderJob); - connect(m_renderWidget, &RenderWidget::openDvdWizard, this, &MainWindow::slotDvdWizard); - connect(this, &MainWindow::updateRenderWidgetProfile, m_renderWidget, &RenderWidget::adjustViewToProfile); - m_renderWidget->setGuides(project->getGuideModel()); - m_renderWidget->updateDocumentPath(); - m_renderWidget->setRenderProfile(project->getRenderProperties()); - } - if (m_compositeAction->currentAction()) { - m_renderWidget->errorMessage(RenderWidget::CompositeError, m_compositeAction->currentAction()->data().toInt() == 1 - ? i18n("Rendering using low quality track compositing") - : QString()); - } + if ( !m_renderWidget && project ) { + m_renderWidget = new RenderWidget(project->useProxy(), this); + connect(m_renderWidget, &RenderWidget::shutdown, this, &MainWindow::slotShutdown); + connect(m_renderWidget, &RenderWidget::selectedRenderProfile, this, &MainWindow::slotSetDocumentRenderProfile); + connect(m_renderWidget, &RenderWidget::abortProcess, this, &MainWindow::abortRenderJob); + connect(m_renderWidget, &RenderWidget::openDvdWizard, this, &MainWindow::slotDvdWizard); + connect(this, &MainWindow::updateRenderWidgetProfile, m_renderWidget, &RenderWidget::adjustViewToProfile); + m_renderWidget->setGuides(project->getGuideModel()); + m_renderWidget->updateDocumentPath(); + m_renderWidget->setRenderProfile(project->getRenderProperties()); + } + if ( m_renderWidget && m_compositeAction && m_compositeAction->currentAction() ) { + m_renderWidget->errorMessage(RenderWidget::CompositeError, m_compositeAction->currentAction()->data().toInt() == 1 + ? i18n("Rendering using low quality track compositing") + : QString()); } + slotCheckRenderStatus(); - m_renderWidget->show(); + if ( m_renderWidget ) { + m_renderWidget->show(); + } // m_renderWidget->showNormal(); // What are the following lines supposed to do? diff --git a/src/timeline2/view/timelinecontroller.cpp b/src/timeline2/view/timelinecontroller.cpp index fc225c7a9..91bfaff69 100644 --- a/src/timeline2/view/timelinecontroller.cpp +++ b/src/timeline2/view/timelinecontroller.cpp @@ -1624,8 +1624,10 @@ bool TimelineController::createSplitOverlay(int clipId, std::shared_ptrsetOverlayTrack(overlay); - m_model->m_overlayTrackCount = m_timelinePreview->addedTracks(); + if(m_timelinePreview){ + m_timelinePreview->setOverlayTrack(overlay); + m_model->m_overlayTrackCount = m_timelinePreview->addedTracks(); + } return true; } @@ -1808,15 +1810,20 @@ void TimelineController::loadPreview(const QString &chunks, const QString &dirty for (const QString &frame : qAsConst(dirtyList)) { dirtyChunks << frame.toInt(); } - m_disablePreview->blockSignals(true); - m_disablePreview->setChecked(enable); - m_disablePreview->blockSignals(false); - if (!enable) { - m_timelinePreview->buildPreviewTrack(); - m_usePreview = true; - m_model->m_overlayTrackCount = m_timelinePreview->addedTracks(); + + if ( m_disablePreview ) { + m_disablePreview->blockSignals(true); + m_disablePreview->setChecked(enable); + m_disablePreview->blockSignals(false); + } + if ( m_timelinePreview ) { + if (!enable) { + m_timelinePreview->buildPreviewTrack(); + m_usePreview = true; + m_model->m_overlayTrackCount = m_timelinePreview->addedTracks(); + } + m_timelinePreview->loadChunks(renderedChunks, dirtyChunks, documentDate); } - m_timelinePreview->loadChunks(renderedChunks, dirtyChunks, documentDate); } QMap TimelineController::documentProperties() diff --git a/src/titler/graphicsscenerectmove.cpp b/src/titler/graphicsscenerectmove.cpp index ead6c1c23..f2f8ad890 100644 --- a/src/titler/graphicsscenerectmove.cpp +++ b/src/titler/graphicsscenerectmove.cpp @@ -627,7 +627,7 @@ void GraphicsSceneRectMove::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) if (m_tool == TITLE_RECTANGLE && (m_selectedItem != nullptr)) { setSelectedItem(m_selectedItem); } - if (m_createdText) { + if (m_createdText && m_selectedItem) { m_selectedItem->setSelected(true); auto *newText = static_cast(m_selectedItem); QTextCursor cur(newText->document()); -- GitLab