summaryrefslogtreecommitdiffstats
path: root/src/core/idledelegate.cpp
diff options
context:
space:
mode:
authorAndrew Christian <andrew.christian@nokia.com>2012-03-19 14:58:30 -0400
committerAndrew Christian <andrew.christian@nokia.com>2012-03-21 11:50:43 +0100
commitb429341fc681860b5ef582fe0e1101d522d830e9 (patch)
tree9c09a23e9dd75c0f94de1328085e44b2aa22ca63 /src/core/idledelegate.cpp
parent60f77b663fe83ce796bdd68813e506585c161fd7 (diff)
Added idle CPU resource allocation for prelaunching
* ProcessBackendFactories indicate a need for extra cycles by setting idleCpuRequest property. * PrelaunchBackendFactory requests this whenever it wants to prelaunch a backend. * ProcessBackendManager aggregates idleCpuRequest properties and passes combined request to IdleDelegate. * IdleDelegate periodically sends idleCpuAvailable() signal to first available factory with outstanding request. * The default IdleDelegate is set to TimeoutIdleDelegate which distributes idleCpuAvailable() signals at regular intervals. This is close to the old prelaunch logic, but now centralized and replaceable. * The CpuIdleDelegate measures system load (Linux & Mac) and distributes idleCpuAvailable() signals when the system load falls below a set level Change-Id: I1ce273b2797ae0f0477dd80ae7bc2c8e3496901e Reviewed-by: Andrew Christian <andrew.christian@nokia.com>
Diffstat (limited to 'src/core/idledelegate.cpp')
-rw-r--r--src/core/idledelegate.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/core/idledelegate.cpp b/src/core/idledelegate.cpp
new file mode 100644
index 0000000..a28441a
--- /dev/null
+++ b/src/core/idledelegate.cpp
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "idledelegate.h"
+
+QT_BEGIN_NAMESPACE_PROCESSMANAGER
+
+/*!
+ \class IdleDelegate
+ \brief The IdleDelegate class is a virtual class for gathering idle CPU cycles
+
+ You must subclass this class to do anything useful.
+
+ The IdleDelegate is turned on and off by the \l{requestIdleCpu()} function.
+ The IdleDelegate should emit the \l{idleCpuAvailable()} signal approximately
+ once per second when it is turned on.
+*/
+
+/*!
+ Construct a IdleDelegate with an optional \a parent.
+*/
+
+IdleDelegate::IdleDelegate(QObject *parent)
+ : QObject(parent)
+{
+}
+
+/*!
+ \fn void IdleDelegate::requestIdleCpu(bool request)
+
+ Turn on or off idle requests based on \a request
+ You must override this function in a subclass.
+*/
+
+/*!
+ \fn void IdleDelegate::idleCpuAvailable()
+
+ Signal emitted periodically when idle CPU resources are available.
+*/
+
+#include "moc_idledelegate.cpp"
+
+QT_END_NAMESPACE_PROCESSMANAGER