/** =========================================================== * @file * * This file is a part of digiKam project * http://www.digikam.org * * @date 2011-12-28 * @brief internal RActionThreadBase classes * * @author Copyright (C) 2011-2013 by Gilles Caulier * caulier dot gilles at gmail dot com * @author Copyright (C) 2011-2012 by A Janardhan Reddy * annapareddyjanardhanreddy at gmail dot com * * 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, 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. * * ============================================================ */ #ifndef RACTION_THREAD_BASE_P_H #define RACTION_THREAD_BASE_P_H // Qt includes #include #include #include // KDE includes #include #include #include #include // Local includes #include "ractionthreadbase.h" namespace ThreadWeaver { class Weaver; } using namespace ThreadWeaver; namespace KDcrawIface { /** RWeaverObserver is a simple wrapper to plug on the ActionThread class to prints debug messages when signals are received. */ class RWeaverObserver : public WeaverObserver { Q_OBJECT public: RWeaverObserver(QObject* const parent=0); ~RWeaverObserver(); protected Q_SLOTS: void slotWeaverStateChanged(ThreadWeaver::State*); void slotThreadStarted(ThreadWeaver::Thread*); void slotThreadBusy(ThreadWeaver::Thread*, ThreadWeaver::Job*); void slotThreadSuspended(ThreadWeaver::Thread*); void slotThreadExited(ThreadWeaver::Thread*); }; // ---------------------------------------------------------------------------------- class RActionThreadBase::Private { public: Private() { running = false; weaverRunning = false; weaver = 0; log = 0; } volatile bool running; volatile bool weaverRunning; QWaitCondition condVarJobs; QMutex mutex; QList todo; Weaver* weaver; RWeaverObserver* log; }; } // namespace KDcrawIface #endif // RACTION_THREAD_BASE_P_H