diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index ad8873d6dc..96870428ef 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -339,16 +339,31 @@ gint ExportDialog::progress_timeout () { std::string status_text; - float progress = 0.0; - if (status->normalizing) { - status_text = string_compose (_("Normalizing '%3' (timespan %1 of %2)"), - status->timespan, status->total_timespans, status->timespan_name); - progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; - } else { + float progress = -1; + switch (status->active_job) { + case ExportStatus::Exporting: status_text = string_compose (_("Exporting '%3' (timespan %1 of %2)"), status->timespan, status->total_timespans, status->timespan_name); progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan; + break; + case ExportStatus::Normalizing: + status_text = string_compose (_("Normalizing '%3' (timespan %1 of %2)"), + status->timespan, status->total_timespans, status->timespan_name); + progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; + break; + case ExportStatus::Tagging: + status_text = string_compose (_("Tagging '%3' (timespan %1 of %2)"), + status->timespan, status->total_timespans, status->timespan_name); + break; + case ExportStatus::Uploading: + status_text = string_compose (_("Uploading '%3' (timespan %1 of %2)"), + status->timespan, status->total_timespans, status->timespan_name); + break; + case ExportStatus::Command: + status_text = string_compose (_("Running Post Export Command for '%1'"), status->timespan_name); + break; } + progress_bar.set_text (status_text); if (progress < previous_progress) { @@ -358,7 +373,12 @@ ExportDialog::progress_timeout () } previous_progress = progress; - progress_bar.set_fraction (progress); + if (progress >= 0) { + progress_bar.set_fraction (progress); + } else { + progress_bar.set_pulse_step(.1); + progress_bar.pulse(); + } return TRUE; } diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index 10ec8ac882..18bbfcf5a8 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -555,23 +555,36 @@ gint ExportVideoDialog::audio_progress_display () { std::string status_text; - double progress = 0.0; - if (status->normalizing) { + double progress = -1.0; + switch (status->active_job) { + case ExportStatus::Normalizing: pbar.set_text (_("Normalizing audio")); progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; - progress = progress / (_twopass ? 4.0 : 3.0) + (_twopass ? .25 : 1.0/3.0); - } else { + progress = progress / (_twopass ? 4.0 : 3.0) + (_twopass ? .25 : 1.0 / 3.0); + break; + case ExportStatus::Exporting: pbar.set_text (_("Exporting audio")); progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan; progress = progress / ((_twopass ? 2.0 : 1.0) + (_normalize ? 2.0 : 1.0)); - } - if (progress < _previous_progress) { - // Work around gtk bug - pbar.hide(); - pbar.show(); - } - _previous_progress = progress; + break; + default: + pbar.set_text (_("Exporting audio")); + break; + } + + if (progress < _previous_progress) { + // Work around gtk bug + pbar.hide(); + pbar.show(); + } + _previous_progress = progress; + + if (progress >= 0) { pbar.set_fraction (progress); + } else { + pbar.set_pulse_step(.1); + pbar.pulse(); + } return TRUE; } diff --git a/session_utils/export.cc b/session_utils/export.cc index e7d169a0d3..6b27860ffd 100644 --- a/session_utils/export.cc +++ b/session_utils/export.cc @@ -121,12 +121,19 @@ static int export_session (Session *session, // TODO trap SIGINT -> status->abort(); while (status->running) { - if (status->normalizing) { - double progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; + double progress = 0.0; + switch (status->active_job) { + case ExportStatus::Normalizing: + progress = ((float) status->current_normalize_cycle) / status->total_normalize_cycles; printf ("* Normalizing %.1f%% \r", 100. * progress); fflush (stdout); - } else { - double progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan; + break; + case ExportStatus::Exporting: + progress = ((float) status->processed_frames_current_timespan) / status->total_frames_current_timespan; printf ("* Exporting Audio %.1f%% \r", 100. * progress); fflush (stdout); + break; + default: + printf ("* Exporting... \r"); + break; } Glib::usleep (1000000); }