Polish and fix qmlvideofx example
Change-Id: I30f6d7d2af784ba018a659a16aceb4876a4b1be6 Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -69,8 +69,8 @@ int main(int argc, char *argv[])
|
|||||||
QStringList args = app.arguments();
|
QStringList args = app.arguments();
|
||||||
PerformanceMonitor::State performanceMonitorState;
|
PerformanceMonitor::State performanceMonitorState;
|
||||||
bool sourceIsUrl = false;
|
bool sourceIsUrl = false;
|
||||||
for (int i=1; i<args.count(); ++i) {
|
for (int i = 1; i < args.size(); ++i) {
|
||||||
const QString &arg = args.at(i);
|
const QByteArray arg = args.at(i).toUtf8();
|
||||||
if (arg.startsWith('-')) {
|
if (arg.startsWith('-')) {
|
||||||
if ("-volume" == arg) {
|
if ("-volume" == arg) {
|
||||||
if (i+1 < args.count())
|
if (i+1 < args.count())
|
||||||
@@ -79,7 +79,7 @@ int main(int argc, char *argv[])
|
|||||||
qtTrace() << "Option \"-volume\" takes a value";
|
qtTrace() << "Option \"-volume\" takes a value";
|
||||||
}
|
}
|
||||||
#ifdef PERFORMANCEMONITOR_SUPPORT
|
#ifdef PERFORMANCEMONITOR_SUPPORT
|
||||||
else if (PerformanceMonitor::parseArgument(arg, performanceMonitorState)) {
|
else if (performanceMonitorState.parseArgument(arg)) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -41,36 +41,18 @@
|
|||||||
|
|
||||||
#include "filereader.h"
|
#include "filereader.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include <QtCore/QCoreApplication>
|
|
||||||
#include <QtCore/QDir>
|
|
||||||
#include <QtCore/QFile>
|
|
||||||
#include <QtCore/QFileInfo>
|
|
||||||
#include <QtCore/QTextStream>
|
|
||||||
|
|
||||||
QString adjustPath(const QString &path)
|
#include <QCoreApplication>
|
||||||
{
|
#include <QDir>
|
||||||
#ifdef Q_OS_UNIX
|
#include <QFile>
|
||||||
#ifdef Q_OS_MAC
|
#include <QFileInfo>
|
||||||
if (!QDir::isAbsolutePath(path))
|
#include <QTextStream>
|
||||||
return QCoreApplication::applicationDirPath()
|
|
||||||
+ QLatin1String("/../Resources/") + path;
|
|
||||||
#else
|
|
||||||
QString pathInInstallDir;
|
|
||||||
const QString applicationDirPath = QCoreApplication::applicationDirPath();
|
|
||||||
pathInInstallDir = QString::fromLatin1("%1/../%2").arg(applicationDirPath, path);
|
|
||||||
|
|
||||||
if (QFileInfo(pathInInstallDir).exists())
|
|
||||||
return pathInInstallDir;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString FileReader::readFile(const QString &fileName)
|
QString FileReader::readFile(const QString &fileName)
|
||||||
{
|
{
|
||||||
qtTrace() << "FileReader::readFile" << "fileName" << fileName;
|
qtTrace() << "FileReader::readFile" << "fileName" << fileName;
|
||||||
QString content;
|
QString content;
|
||||||
QFile file(adjustPath(fileName));
|
QFile file(fileName);
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
QTextStream stream(&file);
|
QTextStream stream(&file);
|
||||||
content = stream.readAll();
|
content = stream.readAll();
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
**
|
**
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QObject>
|
||||||
|
|
||||||
class FileReader : public QObject
|
class FileReader : public QObject
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,17 +72,17 @@ int main(int argc, char *argv[])
|
|||||||
#ifdef PERFORMANCEMONITOR_SUPPORT
|
#ifdef PERFORMANCEMONITOR_SUPPORT
|
||||||
PerformanceMonitor::State performanceMonitorState;
|
PerformanceMonitor::State performanceMonitorState;
|
||||||
#endif
|
#endif
|
||||||
for (int i=1; i<args.count(); ++i) {
|
for (int i = 1; i < args.size(); ++i) {
|
||||||
const QString &arg = args.at(i);
|
const QByteArray arg = args.at(i).toUtf8();
|
||||||
if (arg.startsWith('-')) {
|
if (arg.startsWith('-')) {
|
||||||
if ("-volume" == arg) {
|
if ("-volume" == arg) {
|
||||||
if (i+1 < args.count())
|
if (i + 1 < args.size())
|
||||||
volume = 0.01 * args.at(++i).toInt();
|
volume = 0.01 * args.at(++i).toInt();
|
||||||
else
|
else
|
||||||
qtTrace() << "Option \"-volume\" takes a value";
|
qtTrace() << "Option \"-volume\" takes a value";
|
||||||
}
|
}
|
||||||
#ifdef PERFORMANCEMONITOR_SUPPORT
|
#ifdef PERFORMANCEMONITOR_SUPPORT
|
||||||
else if (PerformanceMonitor::parseArgument(arg, performanceMonitorState)) {
|
else if (performanceMonitorState.parseArgument(arg)) {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ ShaderEffect {
|
|||||||
// rather than being inline in the QML file
|
// rather than being inline in the QML file
|
||||||
|
|
||||||
onFragmentShaderFilenameChanged:
|
onFragmentShaderFilenameChanged:
|
||||||
fragmentShader = d.fragmentShaderCommon + fileReader.readFile(fragmentShaderFilename)
|
fragmentShader = d.fragmentShaderCommon + fileReader.readFile(":shaders/" + fragmentShaderFilename)
|
||||||
onVertexShaderFilenameChanged:
|
onVertexShaderFilenameChanged:
|
||||||
vertexShader = fileReader.readFile(vertexShaderFilename)
|
vertexShader = fileReader.readFile(vertexShaderFilename)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,5 +55,5 @@ Effect {
|
|||||||
property real step_x: 0.0015625
|
property real step_x: 0.0015625
|
||||||
property real step_y: targetHeight ? (step_x * targetWidth / targetHeight) : 0.0
|
property real step_y: targetHeight ? (step_x * targetWidth / targetHeight) : 0.0
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/billboard.fsh"
|
fragmentShaderFilename: "billboard.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@ Effect {
|
|||||||
// Transform slider values, and bind result to shader uniforms
|
// Transform slider values, and bind result to shader uniforms
|
||||||
property real threshold: parameters.get(0).value
|
property real threshold: parameters.get(0).value
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/blackandwhite.fsh"
|
fragmentShaderFilename: "blackandwhite.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/emboss.fsh"
|
fragmentShaderFilename: "emboss.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ Item {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
dividerValue: parent.dividerValue
|
dividerValue: parent.dividerValue
|
||||||
property real blurSize: 4.0 * parent.parameters.get(0).value / targetHeight
|
property real blurSize: 4.0 * parent.parameters.get(0).value / targetHeight
|
||||||
fragmentShaderFilename: "shaders/gaussianblur_v.fsh"
|
fragmentShaderFilename: "gaussianblur_v.fsh"
|
||||||
}
|
}
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
@@ -71,7 +71,7 @@ Item {
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
dividerValue: parent.dividerValue
|
dividerValue: parent.dividerValue
|
||||||
property real blurSize: 4.0 * parent.parameters.get(0).value / parent.targetWidth
|
property real blurSize: 4.0 * parent.parameters.get(0).value / parent.targetWidth
|
||||||
fragmentShaderFilename: "shaders/gaussianblur_h.fsh"
|
fragmentShaderFilename: "gaussianblur_h.fsh"
|
||||||
source: horizontalShaderSource
|
source: horizontalShaderSource
|
||||||
|
|
||||||
ShaderEffectSource {
|
ShaderEffectSource {
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/glow.fsh"
|
fragmentShaderFilename: "glow.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,5 +57,5 @@ Effect {
|
|||||||
property real targetHue: parameters.get(0).value * 360
|
property real targetHue: parameters.get(0).value * 360
|
||||||
property real windowWidth: parameters.get(1).value * 60
|
property real windowWidth: parameters.get(1).value * 60
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/isolate.fsh"
|
fragmentShaderFilename: "isolate.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ Effect {
|
|||||||
d.oldTargetHeight = targetHeight
|
d.oldTargetHeight = targetHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/magnify.fsh"
|
fragmentShaderFilename: "magnify.fsh"
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|||||||
@@ -53,5 +53,5 @@ Effect {
|
|||||||
// Transform slider values, and bind result to shader uniforms
|
// Transform slider values, and bind result to shader uniforms
|
||||||
property real curlExtent: 1.0 - parameters.get(0).value
|
property real curlExtent: 1.0 - parameters.get(0).value
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/pagecurl.fsh"
|
fragmentShaderFilename: "pagecurl.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@ Effect {
|
|||||||
// Transform slider values, and bind result to shader uniforms
|
// Transform slider values, and bind result to shader uniforms
|
||||||
property real granularity: parameters.get(0).value * 20
|
property real granularity: parameters.get(0).value * 20
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/pixelate.fsh"
|
fragmentShaderFilename: "pixelate.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,5 +54,5 @@ Effect {
|
|||||||
|
|
||||||
property real numColors: 8.0
|
property real numColors: 8.0
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/posterize.fsh"
|
fragmentShaderFilename: "posterize.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,5 +60,5 @@ Effect {
|
|||||||
property real time: 0
|
property real time: 0
|
||||||
NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
|
NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/ripple.fsh"
|
fragmentShaderFilename: "ripple.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/sepia.fsh"
|
fragmentShaderFilename: "sepia.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@ Effect {
|
|||||||
// Transform slider values, and bind result to shader uniforms
|
// Transform slider values, and bind result to shader uniforms
|
||||||
property real amount: parameters.get(0).value * 18
|
property real amount: parameters.get(0).value * 18
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/sharpen.fsh"
|
fragmentShaderFilename: "sharpen.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,5 +76,5 @@ Effect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/shockwave.fsh"
|
fragmentShaderFilename: "shockwave.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,5 +55,5 @@ Effect {
|
|||||||
property real resS: targetSize
|
property real resS: targetSize
|
||||||
property real resT: targetSize
|
property real resT: targetSize
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/sobeledgedetection1.fsh"
|
fragmentShaderFilename: "sobeledgedetection1.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,5 +52,5 @@ Effect {
|
|||||||
// Transform slider values, and bind result to shader uniforms
|
// Transform slider values, and bind result to shader uniforms
|
||||||
property real weight: parameters.get(0).value
|
property real weight: parameters.get(0).value
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/sobeledgedetection2.fsh"
|
fragmentShaderFilename: "sobeledgedetection2.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/tiltshift.fsh"
|
fragmentShaderFilename: "tiltshift.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,5 +59,5 @@ Effect {
|
|||||||
property real magTol: 0.3
|
property real magTol: 0.3
|
||||||
property real quantize: 8.0
|
property real quantize: 8.0
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/toon.fsh"
|
fragmentShaderFilename: "toon.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/vignette.fsh"
|
fragmentShaderFilename: "vignette.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,5 +42,5 @@
|
|||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
|
|
||||||
Effect {
|
Effect {
|
||||||
fragmentShaderFilename: "shaders/warhol.fsh"
|
fragmentShaderFilename: "warhol.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,5 +57,5 @@ Effect {
|
|||||||
|
|
||||||
NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
|
NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
|
||||||
|
|
||||||
fragmentShaderFilename: "shaders/wobble.fsh"
|
fragmentShaderFilename: "wobble.fsh"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,16 +3,12 @@ TARGET = qmlvideofx
|
|||||||
|
|
||||||
QT += quick
|
QT += quick
|
||||||
|
|
||||||
LOCAL_SOURCES = filereader.cpp main.cpp
|
SOURCES += filereader.cpp main.cpp
|
||||||
LOCAL_HEADERS = filereader.h trace.h
|
HEADERS += filereader.h trace.h
|
||||||
|
|
||||||
SOURCES += $$LOCAL_SOURCES
|
|
||||||
HEADERS += $$LOCAL_HEADERS
|
|
||||||
|
|
||||||
RESOURCES += qmlvideofx.qrc
|
RESOURCES += qmlvideofx.qrc
|
||||||
|
|
||||||
SNIPPETS_PATH = ../snippets
|
include($$PWD/../snippets/performancemonitor/performancemonitordeclarative.pri)
|
||||||
include($$SNIPPETS_PATH/performancemonitor/performancemonitordeclarative.pri)
|
|
||||||
|
|
||||||
maemo6: {
|
maemo6: {
|
||||||
DEFINES += SMALL_SCREEN_LAYOUT
|
DEFINES += SMALL_SCREEN_LAYOUT
|
||||||
|
|||||||
@@ -44,5 +44,28 @@
|
|||||||
<file>qml/qmlvideofx/main-smallscreen.qml</file>
|
<file>qml/qmlvideofx/main-smallscreen.qml</file>
|
||||||
<file>qml/qmlvideofx/ParameterPanel.qml</file>
|
<file>qml/qmlvideofx/ParameterPanel.qml</file>
|
||||||
<file>qml/qmlvideofx/Slider.qml</file>
|
<file>qml/qmlvideofx/Slider.qml</file>
|
||||||
|
<file>shaders/billboard.fsh</file>
|
||||||
|
<file>shaders/blackandwhite.fsh</file>
|
||||||
|
<file>shaders/emboss.fsh</file>
|
||||||
|
<file>shaders/gaussianblur_h.fsh</file>
|
||||||
|
<file>shaders/gaussianblur_v.fsh</file>
|
||||||
|
<file>shaders/glow.fsh</file>
|
||||||
|
<file>shaders/isolate.fsh</file>
|
||||||
|
<file>shaders/magnify.fsh</file>
|
||||||
|
<file>shaders/pagecurl.fsh</file>
|
||||||
|
<file>shaders/pixelate.fsh</file>
|
||||||
|
<file>shaders/posterize.fsh</file>
|
||||||
|
<file>shaders/ripple.fsh</file>
|
||||||
|
<file>shaders/selectionpanel.fsh</file>
|
||||||
|
<file>shaders/sepia.fsh</file>
|
||||||
|
<file>shaders/sharpen.fsh</file>
|
||||||
|
<file>shaders/shockwave.fsh</file>
|
||||||
|
<file>shaders/sobeledgedetection1.fsh</file>
|
||||||
|
<file>shaders/sobeledgedetection2.fsh</file>
|
||||||
|
<file>shaders/tiltshift.fsh</file>
|
||||||
|
<file>shaders/toon.fsh</file>
|
||||||
|
<file>shaders/vignette.fsh</file>
|
||||||
|
<file>shaders/warhol.fsh</file>
|
||||||
|
<file>shaders/wobble.fsh</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
#ifndef TRACE_H
|
#ifndef TRACE_H
|
||||||
#define TRACE_H
|
#define TRACE_H
|
||||||
|
|
||||||
#include <QtCore/QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#define ENABLE_TRACE
|
#define ENABLE_TRACE
|
||||||
//#define VERBOSE_TRACE
|
//#define VERBOSE_TRACE
|
||||||
@@ -53,7 +53,7 @@ class NullDebug
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
NullDebug& operator<<(const T&) { return *this; }
|
NullDebug &operator<<(const T &) { return *this; }
|
||||||
};
|
};
|
||||||
|
|
||||||
inline NullDebug nullDebug() { return NullDebug(); }
|
inline NullDebug nullDebug() { return NullDebug(); }
|
||||||
@@ -68,18 +68,12 @@ struct PtrWrapper
|
|||||||
} // namespace Trace
|
} // namespace Trace
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline QDebug& operator<<(QDebug &debug, const Trace::PtrWrapper<T> &wrapper)
|
inline QDebug &operator<<(QDebug &debug, const Trace::PtrWrapper<T> &wrapper)
|
||||||
{
|
{
|
||||||
debug.nospace() << "[" << (void*)wrapper.m_ptr << "]";
|
debug.nospace() << "[" << (void*)wrapper.m_ptr << "]";
|
||||||
return debug.space();
|
return debug.space();
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
inline const void *qtVoidPtr(const T *ptr)
|
|
||||||
{ return static_cast<const void *>(ptr); }
|
|
||||||
|
|
||||||
#define qtThisPtr() qtVoidPtr(this)
|
|
||||||
|
|
||||||
#ifdef ENABLE_TRACE
|
#ifdef ENABLE_TRACE
|
||||||
inline QDebug qtTrace() { return qDebug() << "[qmlvideofx]"; }
|
inline QDebug qtTrace() { return qDebug() << "[qmlvideofx]"; }
|
||||||
# ifdef VERBOSE_TRACE
|
# ifdef VERBOSE_TRACE
|
||||||
|
|||||||
@@ -40,11 +40,11 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "frequencymonitor.h"
|
#include "frequencymonitor.h"
|
||||||
#include <QtCore/QDebug>
|
#include <QDebug>
|
||||||
#include <QtCore/QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
#include <QtCore/QString>
|
#include <QString>
|
||||||
#include <QtCore/QTime>
|
#include <QTime>
|
||||||
#include <QtCore/QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
//#define VERBOSE_TRACE
|
//#define VERBOSE_TRACE
|
||||||
|
|
||||||
@@ -61,6 +61,7 @@ static const int DefaultTraceInterval = 0;
|
|||||||
class FrequencyMonitorPrivate : public QObject
|
class FrequencyMonitorPrivate : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FrequencyMonitorPrivate(FrequencyMonitor *parent);
|
FrequencyMonitorPrivate(FrequencyMonitor *parent);
|
||||||
void calculateInstantaneousFrequency();
|
void calculateInstantaneousFrequency();
|
||||||
@@ -116,16 +117,16 @@ void FrequencyMonitorPrivate::calculateInstantaneousFrequency()
|
|||||||
m_stalledTimer->start(3 * ms);
|
m_stalledTimer->start(3 * ms);
|
||||||
if (m_instantaneousFrequency)
|
if (m_instantaneousFrequency)
|
||||||
q_ptr->setActive(true);
|
q_ptr->setActive(true);
|
||||||
q_ptr->emit instantaneousFrequencyChanged(m_instantaneousFrequency);
|
emit q_ptr->instantaneousFrequencyChanged(m_instantaneousFrequency);
|
||||||
q_ptr->emit frequencyChanged();
|
emit q_ptr->frequencyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrequencyMonitorPrivate::calculateAverageFrequency()
|
void FrequencyMonitorPrivate::calculateAverageFrequency()
|
||||||
{
|
{
|
||||||
const qint64 ms = m_averageElapsed.restart();
|
const qint64 ms = m_averageElapsed.restart();
|
||||||
m_averageFrequency = qreal(m_count * 1000) / ms;
|
m_averageFrequency = qreal(m_count * 1000) / ms;
|
||||||
q_ptr->emit averageFrequencyChanged(m_averageFrequency);
|
emit q_ptr->averageFrequencyChanged(m_averageFrequency);
|
||||||
q_ptr->emit frequencyChanged();
|
emit q_ptr->frequencyChanged();
|
||||||
m_count = 0;
|
m_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,14 +135,13 @@ void FrequencyMonitorPrivate::stalled()
|
|||||||
if (m_instantaneousFrequency) {
|
if (m_instantaneousFrequency) {
|
||||||
qtVerboseTrace() << "FrequencyMonitor::stalled";
|
qtVerboseTrace() << "FrequencyMonitor::stalled";
|
||||||
m_instantaneousFrequency = 0;
|
m_instantaneousFrequency = 0;
|
||||||
q_ptr->emit instantaneousFrequencyChanged(m_instantaneousFrequency);
|
emit q_ptr->instantaneousFrequencyChanged(m_instantaneousFrequency);
|
||||||
q_ptr->emit frequencyChanged();
|
emit q_ptr->frequencyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FrequencyMonitor::FrequencyMonitor(QObject *parent)
|
FrequencyMonitor::FrequencyMonitor(QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, d_ptr(0)
|
|
||||||
{
|
{
|
||||||
d_ptr = new FrequencyMonitorPrivate(this);
|
d_ptr = new FrequencyMonitorPrivate(this);
|
||||||
qtTrace() << "FrequencyMonitor::FrequencyMonitor";
|
qtTrace() << "FrequencyMonitor::FrequencyMonitor";
|
||||||
@@ -152,7 +152,7 @@ FrequencyMonitor::~FrequencyMonitor()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &FrequencyMonitor::label() const
|
QString FrequencyMonitor::label() const
|
||||||
{
|
{
|
||||||
return d_func()->m_label;
|
return d_func()->m_label;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
#ifndef FREQUENCYMONITOR_H
|
#ifndef FREQUENCYMONITOR_H
|
||||||
#define FREQUENCYMONITOR_H
|
#define FREQUENCYMONITOR_H
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QObject>
|
||||||
#include <QtCore/QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
class FrequencyMonitorPrivate;
|
class FrequencyMonitorPrivate;
|
||||||
|
|
||||||
@@ -64,13 +64,14 @@ class FrequencyMonitor : public QObject
|
|||||||
Q_PROPERTY(int traceInterval READ traceInterval WRITE setTraceInterval NOTIFY traceIntervalChanged)
|
Q_PROPERTY(int traceInterval READ traceInterval WRITE setTraceInterval NOTIFY traceIntervalChanged)
|
||||||
Q_PROPERTY(qreal instantaneousFrequency READ instantaneousFrequency NOTIFY instantaneousFrequencyChanged)
|
Q_PROPERTY(qreal instantaneousFrequency READ instantaneousFrequency NOTIFY instantaneousFrequencyChanged)
|
||||||
Q_PROPERTY(qreal averageFrequency READ averageFrequency NOTIFY averageFrequencyChanged)
|
Q_PROPERTY(qreal averageFrequency READ averageFrequency NOTIFY averageFrequencyChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FrequencyMonitor(QObject *parent = 0);
|
FrequencyMonitor(QObject *parent = 0);
|
||||||
~FrequencyMonitor();
|
~FrequencyMonitor();
|
||||||
|
|
||||||
static void qmlRegisterType();
|
static void qmlRegisterType();
|
||||||
|
|
||||||
const QString &label() const;
|
QString label() const;
|
||||||
bool active() const;
|
bool active() const;
|
||||||
int samplingInterval() const;
|
int samplingInterval() const;
|
||||||
int traceInterval() const;
|
int traceInterval() const;
|
||||||
|
|||||||
@@ -43,27 +43,27 @@
|
|||||||
|
|
||||||
namespace PerformanceMonitor {
|
namespace PerformanceMonitor {
|
||||||
|
|
||||||
bool parseArgument(const QString &arg, State &state)
|
bool State::parseArgument(const QByteArray &arg)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
if ("-log-perf" == arg) {
|
if (arg == "-log-perf") {
|
||||||
state.logging = true;
|
logging = true;
|
||||||
state.valid = true;
|
valid = true;
|
||||||
result = true;
|
result = true;
|
||||||
} else if ("-no-log-perf" == arg) {
|
} else if (arg == "-no-log-perf") {
|
||||||
state.logging = false;
|
logging = false;
|
||||||
state.valid = true;
|
valid = true;
|
||||||
result = true;
|
result = true;
|
||||||
} else if ("-show-perf" == arg) {
|
} else if (arg == "-show-perf") {
|
||||||
state.visible = true;
|
visible = true;
|
||||||
state.valid = true;
|
valid = true;
|
||||||
result = true;
|
result = true;
|
||||||
} else if ("-hide-perf" == arg) {
|
} else if (arg == "-hide-perf") {
|
||||||
state.visible = false;
|
visible = false;
|
||||||
state.valid = true;
|
valid = true;
|
||||||
result = true;
|
result = true;
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace PerformanceMonitor
|
||||||
|
|||||||
@@ -42,24 +42,27 @@
|
|||||||
#ifndef PERFORMANCEMONITOR_H
|
#ifndef PERFORMANCEMONITOR_H
|
||||||
#define PERFORMANCEMONITOR_H
|
#define PERFORMANCEMONITOR_H
|
||||||
|
|
||||||
#include <QtCore/QString>
|
#include <QByteArray>
|
||||||
|
|
||||||
namespace PerformanceMonitor {
|
namespace PerformanceMonitor {
|
||||||
struct State {
|
|
||||||
bool valid;
|
|
||||||
bool logging;
|
|
||||||
bool visible;
|
|
||||||
|
|
||||||
State() : valid(true), logging(false), visible(true) { }
|
struct State
|
||||||
State(bool l, bool v) : valid(true), logging(l), visible(v) { }
|
{
|
||||||
bool operator==(const State &other) const
|
State() : valid(true), logging(false), visible(true) { }
|
||||||
{ return logging == other.logging && visible == other.visible; }
|
State(bool l, bool v) : valid(true), logging(l), visible(v) { }
|
||||||
bool operator!=(const State &other) const
|
bool operator==(const State &other) const
|
||||||
{ return logging != other.logging || visible != other.visible; }
|
{ return logging == other.logging && visible == other.visible; }
|
||||||
};
|
bool operator!=(const State &other) const
|
||||||
|
{ return logging != other.logging || visible != other.visible; }
|
||||||
|
|
||||||
bool parseArgument(const QString &arg, State &state);
|
bool parseArgument(const QByteArray &arg);
|
||||||
}
|
|
||||||
|
bool valid;
|
||||||
|
bool logging;
|
||||||
|
bool visible;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace PerformanceMonitor
|
||||||
|
|
||||||
#endif // PERFORMANCEMONITOR_H
|
#endif // PERFORMANCEMONITOR_H
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user