OSDN Git Service

QmlProfiler: Make use of QSharedPointer for TracePlugin
authorKai Koehne <kai.koehne@nokia.com>
Thu, 14 Apr 2011 15:18:32 +0000 (17:18 +0200)
committerKai Koehne <kai.koehne@nokia.com>
Thu, 14 Apr 2011 15:36:45 +0000 (17:36 +0200)
THe plugin might be deleted when the client is deleted.

src/plugins/qmlprofiler/tracewindow.cpp
src/plugins/qmlprofiler/tracewindow.h

index 50a667d..d879758 100644 (file)
@@ -267,8 +267,7 @@ void TracePlugin::messageReceived(const QByteArray &data)
 }
 
 TraceWindow::TraceWindow(QWidget *parent)
-: QWidget(parent),
-  m_plugin(0)
+: QWidget(parent)
 {
     setObjectName(tr("Qml Performance Monitor"));
 
@@ -295,19 +294,20 @@ TraceWindow::TraceWindow(QWidget *parent)
 
 TraceWindow::~TraceWindow()
 {
-    delete m_plugin;
+    delete m_plugin.data();
 }
 
 void TraceWindow::reset(QDeclarativeDebugConnection *conn)
 {
     if (m_plugin)
-        disconnect(m_plugin,SIGNAL(complete()), this, SIGNAL(viewUpdated()));
-    delete m_plugin;
+        disconnect(m_plugin.data(), SIGNAL(complete()), this, SIGNAL(viewUpdated()));
+    delete m_plugin.data();
     m_plugin = new TracePlugin(conn);
-    connect(m_plugin,SIGNAL(complete()), this, SIGNAL(viewUpdated()));
-    connect(m_plugin,SIGNAL(range(int,qint64,qint64,QStringList,QString,int)),this,SIGNAL(range(int,qint64,qint64,QStringList,QString,int)));
+    connect(m_plugin.data(), SIGNAL(complete()), this, SIGNAL(viewUpdated()));
+    connect(m_plugin.data(), SIGNAL(range(int,qint64,qint64,QStringList,QString,int)),
+            this, SIGNAL(range(int,qint64,qint64,QStringList,QString,int)));
 
-    m_view->rootContext()->setContextProperty("connection", m_plugin);
+    m_view->rootContext()->setContextProperty("connection", m_plugin.data());
     m_view->setSource(QUrl("qrc:/qmlprofiler/MainView.qml"));
 
     connect(m_view->rootObject(), SIGNAL(updateCursorPosition()), this, SLOT(updateCursorPosition()));
@@ -328,17 +328,17 @@ void TraceWindow::updateTimer()
 void TraceWindow::clearDisplay()
 {
     if (m_plugin)
-        m_plugin->clearView();
+        m_plugin.data()->clearView();
 }
 
 void TraceWindow::setRecording(bool recording)
 {
-    m_plugin->setRecording(recording);
+    m_plugin.data()->setRecording(recording);
 }
 
 bool TraceWindow::isRecording() const
 {
-    return (m_plugin->recording());
+    return (m_plugin.data()->recording());
 }
 
 #include "tracewindow.moc"
index e7ebded..e19920a 100644 (file)
@@ -81,7 +81,7 @@ signals:
     void range(int type, qint64 startTime, qint64 length, const QStringList &data, const QString &fileName, int line);
 
 private:
-    TracePlugin *m_plugin;
+    QWeakPointer<TracePlugin> m_plugin;
     QSize m_sizeHint;
 
     QDeclarativeView *m_view;