more documentation and exportthread restructure
This commit is contained in:
+30
-19
@@ -20,6 +20,10 @@
|
||||
|
||||
#include "exportdialog.h"
|
||||
|
||||
extern "C" {
|
||||
#include <libavformat/avformat.h>
|
||||
}
|
||||
|
||||
#include <QOpenGLWidget>
|
||||
#include <QFileDialog>
|
||||
#include <QThread>
|
||||
@@ -39,10 +43,6 @@
|
||||
#include "rendering/exportthread.h"
|
||||
#include "ui/mainwindow.h"
|
||||
|
||||
extern "C" {
|
||||
#include <libavformat/avformat.h>
|
||||
}
|
||||
|
||||
enum ExportFormats {
|
||||
FORMAT_3GPP,
|
||||
FORMAT_AIFF,
|
||||
@@ -118,9 +118,6 @@ ExportDialog::ExportDialog(QWidget *parent) :
|
||||
vcodec_params.threads = 0;
|
||||
}
|
||||
|
||||
ExportDialog::~ExportDialog()
|
||||
{}
|
||||
|
||||
void ExportDialog::add_codec_to_combobox(QComboBox* box, enum AVCodecID codec) {
|
||||
QString codec_name;
|
||||
|
||||
@@ -334,21 +331,42 @@ void ExportDialog::format_changed(int index) {
|
||||
}
|
||||
|
||||
void ExportDialog::render_thread_finished() {
|
||||
if (progressBar->value() < 100 && !cancelled) {
|
||||
// Determine if the export succeeded
|
||||
bool succeeded = (progressBar->value() == 100);
|
||||
|
||||
// If it failed and we didn't cancel it, it must have errored out. Show an error message.
|
||||
if (!succeeded && !et->WasInterrupted()) {
|
||||
QMessageBox::critical(
|
||||
this,
|
||||
tr("Export Failed"),
|
||||
tr("Export failed - %1").arg(export_error),
|
||||
tr("Export failed - %1").arg(et->GetError()),
|
||||
QMessageBox::Ok
|
||||
);
|
||||
}
|
||||
|
||||
// Clear audio buffer
|
||||
clear_audio_ibuffer();
|
||||
|
||||
// Re-enable/disable UI widgets based on the rendering state
|
||||
prep_ui_for_render(false);
|
||||
|
||||
// Move OpenGL context back to the sequence viewer
|
||||
panel_sequence_viewer->viewer_widget->makeCurrent();
|
||||
panel_sequence_viewer->viewer_widget->initializeGL();
|
||||
|
||||
// Update the application UI
|
||||
update_ui(false);
|
||||
|
||||
// Disconnect cancel button from export thread
|
||||
disconnect(renderCancel, SIGNAL(clicked(bool)), et, SLOT(Interrupt()));
|
||||
|
||||
// Free the export thread
|
||||
et->deleteLater();
|
||||
if (progressBar->value() == 100) accept();
|
||||
|
||||
// If the export succeeded, close the dialog
|
||||
if (succeeded) {
|
||||
accept();
|
||||
}
|
||||
}
|
||||
|
||||
void ExportDialog::prep_ui_for_render(bool r) {
|
||||
@@ -543,7 +561,8 @@ void ExportDialog::export_action() {
|
||||
et = new ExportThread(params, vcodec_params, this);
|
||||
|
||||
connect(et, SIGNAL(finished()), this, SLOT(render_thread_finished()));
|
||||
connect(et, SIGNAL(progress_changed(int, qint64)), this, SLOT(update_progress_bar(int, qint64)));
|
||||
connect(et, SIGNAL(ProgressChanged(int, qint64)), this, SLOT(update_progress_bar(int, qint64)));
|
||||
connect(renderCancel, SIGNAL(clicked(bool)), et, SLOT(Interrupt()));
|
||||
|
||||
close_active_clips(olive::ActiveSequence.get());
|
||||
|
||||
@@ -553,8 +572,6 @@ void ExportDialog::export_action() {
|
||||
|
||||
prep_ui_for_render(true);
|
||||
|
||||
cancelled = false;
|
||||
|
||||
total_export_time_start = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
et->start();
|
||||
@@ -587,11 +604,6 @@ void ExportDialog::update_progress_bar(int value, qint64 remaining_ms) {
|
||||
progressBar->setValue(value);
|
||||
}
|
||||
|
||||
void ExportDialog::cancel_render() {
|
||||
et->continueEncode = false;
|
||||
cancelled = true;
|
||||
}
|
||||
|
||||
void ExportDialog::vcodec_changed(int index) {
|
||||
compressionTypeCombobox->clear();
|
||||
|
||||
@@ -755,7 +767,6 @@ void ExportDialog::setup_ui() {
|
||||
renderCancel = new QPushButton(this);
|
||||
renderCancel->setIcon(QIcon(":/icons/error.svg"));
|
||||
renderCancel->setEnabled(false);
|
||||
connect(renderCancel, SIGNAL(clicked(bool)), this, SLOT(cancel_render()));
|
||||
progressLayout->addWidget(renderCancel);
|
||||
|
||||
verticalLayout->addLayout(progressLayout);
|
||||
|
||||
Reference in New Issue
Block a user