26 #include <QApplication> 27 #include <QProgressDialog> 30 #include <QVariantList> 33 #include <KLocalizedString> 49 #define PROGRESS_UPDATES_PER_SECOND 4 52 #define PROGRESS_MAXIMUM 1000000 75 m_name(args[0].toString()),
76 m_description(args[1].toString()),
79 m_progress_enabled(true),
81 m_progress(Q_NULLPTR),
82 m_confirm_cancel(Q_NULLPTR),
86 m_current_progress(-1),
87 m_progress_lock(QMutex::Recursive)
92 Qt::DirectConnection);
112 qWarning(
"Kwave::Plugin::stop(): stale thread !");
136 QStringList *result =
new QStringList();
148 Q_ASSERT(this->thread() == QThread::currentThread());
149 Q_ASSERT(this->thread() == qApp->thread());
160 QList<unsigned int> tracks;
172 if (w < 4 * h) w = 4 * h;
178 Q_NULLPTR, Q_NULLPTR,
this, SLOT(
cancel()));
185 Qt::QueuedConnection);
188 Qt::QueuedConnection);
210 return i18n(
"Running plugin '%1'...",
name());
219 (QThread::currentThread() ==
m_thread)) {
220 qWarning(
"Kwave::Plugin::stop(): plugin '%s' called stop() from " 221 "within it's own worker thread (from run() ?). " 222 "This would produce a deadlock, PLEASE FIX THIS !",
226 qDebug(
"pthread_self()=%p, tid=%p",
227 reinterpret_cast<void *>(QThread::currentThread()),
228 reinterpret_cast<void *>(
m_thread));
230 int n = backtrace(buf, 256);
231 backtrace_symbols_fd(buf, n, 2);
244 qWarning(
"Kwave::Plugin::stop(): stale thread !");
263 Q_ASSERT(this->thread() == QThread::currentThread());
264 Q_ASSERT(this->thread() == qApp->thread());
284 Q_ASSERT(this->thread() == QThread::currentThread());
285 Q_ASSERT(this->thread() == qApp->thread());
296 Q_ASSERT(this->thread() == QThread::currentThread());
297 Q_ASSERT(this->thread() == qApp->thread());
379 run(params.toStringList());
382 double seconds =
static_cast<double>(t.elapsed()) * 1E-3;
383 qDebug(
"plugin %s done, running for %0.03g seconds",
398 (QThread::currentThread() !=
m_thread) )
401 Q_ASSERT(this->thread() == QThread::currentThread());
402 Q_ASSERT(this->thread() == qApp->thread());
406 }
else if ((QThread::currentThread() ==
m_thread)) {
407 qWarning(
"Kwave::Plugin::close -> called from worker thread?");
422 bool finished =
false;
483 bool expand_if_empty)
489 if ((l == r) && (expand_if_empty)) {
499 if (right) *right = r;
500 return (r != l) ? (r - l + 1) : 0;
524 Q_ASSERT(new_plugin_manager);
525 if (!new_plugin_manager)
return;
void emitCommand(const QString &command)
QPointer< QWidget > parentWidget()
void enqueueCommand(const QString &command)
unsigned int m_usage_count
Kwave::WorkerThread * m_thread
QWidget * parentWidget() const
QProgressDialog * m_progress
Kwave::SignalManager & signalManager()
void setPluginManager(Kwave::PluginManager *new_plugin_manager)
virtual QString name() const
virtual void migrateToActiveContext()
Kwave::PluginManager & manager() const
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Kwave::SignalManager & signalManager()
void sigRunning(Kwave::Plugin *plugin)
void migratePluginToActiveContext(Kwave::Plugin *plugin)
void sigDone(Kwave::Plugin *plugin)
sample_index_t signalLength()
virtual bool canClose() const
void closeProgressDialog(Kwave::Plugin *)
void sigClosed(Kwave::Plugin *p)
virtual QString progressText()
virtual ~Plugin() Q_DECL_OVERRIDE
virtual sample_index_t signalLength()
virtual void setProgressDialogEnabled(bool enable)
void updateProgressTick()
Kwave::PluginManager * m_plugin_manager
sample_index_t selectionStart()
virtual double signalRate()
virtual void selectRange(sample_index_t offset, sample_index_t length)
int execute(QStringList ¶ms)
#define PROGRESS_UPDATES_PER_SECOND
virtual void load(QStringList ¶ms)
virtual int stop(unsigned int timeout=10000)
virtual void run(QStringList params)
virtual void updateProgress(qreal progress)
virtual const QList< unsigned int > selectedTracks()
const QList< unsigned int > selectedTracks()
virtual int start(QStringList ¶ms)
virtual QString description() const
sample_index_t selectionEnd()
void setProgressText(const QString &text)
Kwave::ConfirmCancelProxy * m_confirm_cancel
Plugin(QObject *parent, const QVariantList &args)
virtual void run_wrapper(const QVariant ¶ms) Q_DECL_OVERRIDE
virtual QStringList * setup(QStringList &previous_params)
virtual sample_index_t selection(QList< unsigned int > *tracks=Q_NULLPTR, sample_index_t *left=Q_NULLPTR, sample_index_t *right=Q_NULLPTR, bool expand_if_empty=false)
void selectRange(sample_index_t offset, sample_index_t length)