forked from qt-creator/qt-creator
		
	
		
			
	
	
		
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/**************************************************************************
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** This file is part of Qt Creator
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** Contact: Nokia Corporation (info@qt.nokia.com)
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** No Commercial Usage
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** This file contains pre-release code and may not be distributed.
							 | 
						||
| 
								 | 
							
								** You may use this file in accordance with the terms and conditions
							 | 
						||
| 
								 | 
							
								** contained in the Technology Preview License Agreement accompanying
							 | 
						||
| 
								 | 
							
								** this package.
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** GNU Lesser General Public License Usage
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** Alternatively, 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.
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								** If you have questions regarding the use of this file, please contact
							 | 
						||
| 
								 | 
							
								** Nokia at info@qt.nokia.com.
							 | 
						||
| 
								 | 
							
								**
							 | 
						||
| 
								 | 
							
								**************************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef QMLPROFILERTRACECLIENT_H
							 | 
						||
| 
								 | 
							
								#define QMLPROFILERTRACECLIENT_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <qmljsdebugclient/qdeclarativedebugclient_p.h>
							 | 
						||
| 
								 | 
							
								#include <QtCore/QStack>
							 | 
						||
| 
								 | 
							
								#include <QtCore/QStringList>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace QmlProfiler {
							 | 
						||
| 
								 | 
							
								namespace Internal {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct Location
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    Location() : line(-1) {}
							 | 
						||
| 
								 | 
							
								    Location(const QString &file, int lineNumber) : fileName(file), line(lineNumber) {}
							 | 
						||
| 
								 | 
							
								    QString fileName;
							 | 
						||
| 
								 | 
							
								    int line;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class QmlProfilerTraceClient : public QmlJsDebugClient::QDeclarativeDebugClient
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    Q_OBJECT
							 | 
						||
| 
								 | 
							
								    Q_PROPERTY(bool recording READ isRecording WRITE setRecording NOTIFY recordingChanged)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
								    QmlProfilerTraceClient(QmlJsDebugClient::QDeclarativeDebugConnection *client);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enum EventType {
							 | 
						||
| 
								 | 
							
								        FramePaint,
							 | 
						||
| 
								 | 
							
								        Mouse,
							 | 
						||
| 
								 | 
							
								        Key,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        MaximumEventType
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enum Message {
							 | 
						||
| 
								 | 
							
								        Event,
							 | 
						||
| 
								 | 
							
								        RangeStart,
							 | 
						||
| 
								 | 
							
								        RangeData,
							 | 
						||
| 
								 | 
							
								        RangeLocation,
							 | 
						||
| 
								 | 
							
								        RangeEnd,
							 | 
						||
| 
								 | 
							
								        Complete,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        MaximumMessage
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    enum RangeType {
							 | 
						||
| 
								 | 
							
								        Painting,
							 | 
						||
| 
								 | 
							
								        Compiling,
							 | 
						||
| 
								 | 
							
								        Creating,
							 | 
						||
| 
								 | 
							
								        Binding,
							 | 
						||
| 
								 | 
							
								        HandlingSignal,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        MaximumRangeType
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    bool isRecording() const { return m_recording; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public slots:
							 | 
						||
| 
								 | 
							
								    void setRecording(bool);
							 | 
						||
| 
								 | 
							
								    void clearView();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								signals:
							 | 
						||
| 
								 | 
							
								    void complete();
							 | 
						||
| 
								 | 
							
								    void gap(qint64);
							 | 
						||
| 
								 | 
							
								    void event(int event, qint64 time);
							 | 
						||
| 
								 | 
							
								    void range(int type, int nestingLevel, int nestingInType, qint64 startTime, qint64 length,
							 | 
						||
| 
								 | 
							
								               const QStringList &data, const QString &fileName, int line);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void sample(int, int, int, bool);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void recordingChanged(bool arg);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    void enabled();
							 | 
						||
| 
								 | 
							
								    void clear();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								protected:
							 | 
						||
| 
								 | 
							
								    virtual void statusChanged(Status);
							 | 
						||
| 
								 | 
							
								    virtual void messageReceived(const QByteArray &);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
								    qint64 m_inProgressRanges;
							 | 
						||
| 
								 | 
							
								    QStack<qint64> m_rangeStartTimes[MaximumRangeType];
							 | 
						||
| 
								 | 
							
								    QStack<QStringList> m_rangeDatas[MaximumRangeType];
							 | 
						||
| 
								 | 
							
								    QStack<Location> m_rangeLocations[MaximumRangeType];
							 | 
						||
| 
								 | 
							
								    int m_rangeCount[MaximumRangeType];
							 | 
						||
| 
								 | 
							
								    qint64 m_maximumTime;
							 | 
						||
| 
								 | 
							
								    bool m_recording;
							 | 
						||
| 
								 | 
							
								    int m_nestingLevel;
							 | 
						||
| 
								 | 
							
								    int m_nestingInType[MaximumRangeType];
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // namespace Internal
							 | 
						||
| 
								 | 
							
								} // namespace QmlProfiler
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // QMLPROFILERTRACECLIENT_H
							 |