From 65f2be76f6efc328c04ceb1af14b915732080ecd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 18 May 2023 21:02:22 +0200 Subject: [PATCH] Move Ardour::Progress to PBD::Progress This will allow PBD::Filearchive to properly report progress. It is also a generally useful API and deserves to be in libpbd. Temporarily keep Ardour::Progress as alias --- libs/ardour/ardour/progress.h | 33 +---------------- libs/ardour/wscript | 1 - libs/pbd/pbd/progress.h | 63 ++++++++++++++++++++++++++++++++ libs/{ardour => pbd}/progress.cc | 15 ++++---- libs/pbd/wscript | 1 + 5 files changed, 74 insertions(+), 39 deletions(-) create mode 100644 libs/pbd/pbd/progress.h rename libs/{ardour => pbd}/progress.cc (87%) diff --git a/libs/ardour/ardour/progress.h b/libs/ardour/ardour/progress.h index d1bf0b433f..2b61271044 100644 --- a/libs/ardour/ardour/progress.h +++ b/libs/ardour/ardour/progress.h @@ -19,43 +19,14 @@ #ifndef __ardour_progress_h__ #define __ardour_progress_h__ -#include +#include "pbd/progress.h" #include "ardour/libardour_visibility.h" namespace ARDOUR { -/** A class to handle reporting of progress of something */ -class LIBARDOUR_API Progress +class LIBPBD_API Progress : public PBD::Progress { -public: - Progress (); - virtual ~Progress () {} - void set_progress (float); - - void ascend (); - void descend (float); - - bool cancelled () const; - -protected: - void cancel (); - -private: - /** Report overall progress. - * @param p Current progress (from 0 to 1) - */ - virtual void set_overall_progress (float p) = 0; - - struct Level { - Level (float a) : allocation (a), normalised (0) {} - - float allocation; - float normalised; - }; - - std::list _stack; - bool _cancelled; }; } diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 8bcd5b5dd3..ab6f0b098a 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -192,7 +192,6 @@ libardour_sources = [ 'presentation_info.cc', 'process_thread.cc', 'processor.cc', - 'progress.cc', 'quantize.cc', 'rc_configuration.cc', 'readable.cc', diff --git a/libs/pbd/pbd/progress.h b/libs/pbd/pbd/progress.h new file mode 100644 index 0000000000..9fff57ddb7 --- /dev/null +++ b/libs/pbd/pbd/progress.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2010 Carl Hetherington + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef _libpbd_progress_h_ +#define _libpbd_progress_h_ + +#include + +#include "pbd/libpbd_visibility.h" + +namespace PBD { + +/** A class to handle reporting of progress of something */ +class LIBPBD_API Progress +{ +public: + Progress (); + virtual ~Progress () {} + void set_progress (float); + + void ascend (); + void descend (float); + + bool cancelled () const; + +protected: + void cancel (); + +private: + /** Report overall progress. + * @param p Current progress (from 0 to 1) + */ + virtual void set_overall_progress (float p) = 0; + + struct Level { + Level (float a) : allocation (a), normalised (0) {} + + float allocation; + float normalised; + }; + + std::list _stack; + bool _cancelled; +}; + +} + +#endif diff --git a/libs/ardour/progress.cc b/libs/pbd/progress.cc similarity index 87% rename from libs/ardour/progress.cc rename to libs/pbd/progress.cc index 742d48726e..f68058a656 100644 --- a/libs/ardour/progress.cc +++ b/libs/pbd/progress.cc @@ -1,5 +1,6 @@ /* * Copyright (C) 2010 Carl Hetherington + * Copyright (C) 2023 Robin Gareus * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,11 +19,11 @@ #include #include -#include "ardour/progress.h" +#include "pbd/progress.h" using namespace std; -ARDOUR::Progress::Progress () +PBD::Progress::Progress () : _cancelled (false) { descend (1); @@ -37,13 +38,13 @@ ARDOUR::Progress::Progress () * @param p Percentage (from 0 to 1) of the current task to allocate to the subtask. */ void -ARDOUR::Progress::descend (float a) +PBD::Progress::descend (float a) { _stack.push_back (Level (a)); } void -ARDOUR::Progress::ascend () +PBD::Progress::ascend () { assert (!_stack.empty ()); float const a = _stack.back().allocation; @@ -55,7 +56,7 @@ ARDOUR::Progress::ascend () * @param p Progress (from 0 to 1) */ void -ARDOUR::Progress::set_progress (float p) +PBD::Progress::set_progress (float p) { assert (!_stack.empty ()); @@ -72,13 +73,13 @@ ARDOUR::Progress::set_progress (float p) } void -ARDOUR::Progress::cancel () +PBD::Progress::cancel () { _cancelled = true; } bool -ARDOUR::Progress::cancelled () const +PBD::Progress::cancelled () const { return _cancelled; } diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 33eaba7b9c..4696ec6a8c 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -66,6 +66,7 @@ libpbd_sources = [ 'pbd.cc', 'pcg_rand.cc', 'pool.cc', + 'progress.cc', 'property_list.cc', 'pthread_utils.cc', 'reallocpool.cc',