From 18eef830a53b9f9de3f9ce2da6c9960a75b38b80 Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Tue, 26 Jan 2021 22:41:56 -0800 Subject: [PATCH] transcoder: Add ability to dump pipeline graphs Add a "Dump Graph" menu option to the pipeline view if CLEMENTINE_DEBUG is enabled. --- src/transcoder/transcodedialog.cpp | 17 ++++++++++++++++- src/transcoder/transcodedialog.h | 1 + src/transcoder/transcodelogdialog.ui | 12 +++++++++++- src/transcoder/transcoder.cpp | 9 +++++++++ src/transcoder/transcoder.h | 1 + 5 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/transcoder/transcodedialog.cpp b/src/transcoder/transcodedialog.cpp index 7e77034e4..fdc8f4701 100644 --- a/src/transcoder/transcodedialog.cpp +++ b/src/transcoder/transcodedialog.cpp @@ -17,6 +17,7 @@ #include "transcodedialog.h" +#include #include #include #include @@ -24,6 +25,7 @@ #include #include +#include "core/application.h" #include "transcoder.h" #include "transcoderoptionsdialog.h" #include "ui/iconloader.h" @@ -59,11 +61,18 @@ TranscodeDialog::TranscodeDialog(QWidget* parent) ui_->files->header()->setSectionResizeMode(QHeaderView::ResizeToContents); details_ui_->setupUi(details_dialog_); - details_ui_->pipelines->setModel(transcoder_->model()); + details_ui_->pipelines->setPipelineModel(transcoder_->model()); QPushButton* clear_button = details_ui_->buttonBox->addButton( tr("Clear"), QDialogButtonBox::ResetRole); connect(clear_button, SIGNAL(clicked()), details_ui_->log, SLOT(clear())); + if (Application::DebugFeaturesEnabled()) { + QAction* dump_action = new QAction(tr("Dump Graph")); + details_ui_->pipelines->addAction(dump_action); + connect(dump_action, SIGNAL(triggered(bool)), + SLOT(PipelineDumpAction(bool))); + } + // Get presets QList presets = Transcoder::GetAllPresets(); std::sort(presets.begin(), presets.end(), ComparePresetsByName); @@ -180,6 +189,12 @@ void TranscodeDialog::Cancel() { SetWorking(false); } +void TranscodeDialog::PipelineDumpAction(bool checked) { + for (int i : details_ui_->pipelines->GetSelectedIds()) { + transcoder_->DumpGraph(i); + } +} + void TranscodeDialog::JobComplete(const QString& input, const QString& output, bool success) { if (success) diff --git a/src/transcoder/transcodedialog.h b/src/transcoder/transcodedialog.h index 1ee1a0543..d0b77c748 100644 --- a/src/transcoder/transcodedialog.h +++ b/src/transcoder/transcodedialog.h @@ -56,6 +56,7 @@ class TranscodeDialog : public QDialog { void AllJobsComplete(); void Options(); void AddDestination(); + void PipelineDumpAction(bool checked); private: void SetWorking(bool working); diff --git a/src/transcoder/transcodelogdialog.ui b/src/transcoder/transcodelogdialog.ui index ca31181c6..25db0a8ff 100644 --- a/src/transcoder/transcodelogdialog.ui +++ b/src/transcoder/transcodelogdialog.ui @@ -31,13 +31,16 @@ - + 0 0 + + Qt::ActionsContextMenu + @@ -80,6 +83,13 @@ + + + PipelineView + QListView +
engines/pipelineview.h
+
+
diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 183e06188..af8fdb6dc 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -541,6 +541,15 @@ void Transcoder::Cancel() { } } +void Transcoder::DumpGraph(int id) { + for (JobStateList::iterator it = current_jobs_.begin(); + it != current_jobs_.end(); it++) { + if ((*it)->id() == id) { + (*it)->DumpGraph(); + } + } +} + QMap Transcoder::GetProgress() const { QMap ret; diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index e1d7669e3..138fefc9f 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -67,6 +67,7 @@ class Transcoder : public QObject { void Start(); void Cancel(); + void DumpGraph(int id); signals: void JobComplete(const QString& input, const QString& output, bool success);