From bba13048176014cd6ff5b66cab388ef677d35aaf Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 14 Dec 2016 13:40:23 +0100 Subject: [PATCH] QmlProfiler: Add functions to check if timeline view is usable We can only use the timeline view if the scene graph is rendered via OpenGL. This can be checked from Qt 5.8 on by querying the RendererInterface. Earlier versions of Qt can only render with OpenGL. Change-Id: I3f77e2a4dee1f9a1df5d6b1946cf7eb05a1bad01 Task-number: QTCREATORBUG-16503 Reviewed-by: Eike Ziller --- src/plugins/qmlprofiler/qmlprofilertraceview.cpp | 10 ++++++++++ src/plugins/qmlprofiler/qmlprofilertraceview.h | 1 + src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp | 5 +++++ src/plugins/qmlprofiler/qmlprofilerviewmanager.h | 1 + 4 files changed, 17 insertions(+) diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp index 375181744b1..f8d9734ae14 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp @@ -293,6 +293,16 @@ void QmlProfilerTraceView::showContextMenu(QPoint position) } } +bool QmlProfilerTraceView::isUsable() const +{ +#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)) + return d->m_mainView->quickWindow()->rendererInterface()->graphicsApi() + == QSGRendererInterface::OpenGL; +#else + return true; +#endif +} + void QmlProfilerTraceView::changeEvent(QEvent *e) { if (e->type() == QEvent::EnabledChange) { diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.h b/src/plugins/qmlprofiler/qmlprofilertraceview.h index 29e7915c20a..48fbdafaaed 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.h +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.h @@ -55,6 +55,7 @@ public: qint64 selectionStart() const; qint64 selectionEnd() const; void showContextMenu(QPoint position); + bool isUsable() const; public slots: void clear(); diff --git a/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp index a832cae0c3a..6d8b67f03f8 100644 --- a/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp @@ -147,6 +147,11 @@ void QmlProfilerViewManager::restrictEventsToRange(qint64 rangeStart, qint64 ran d->profilerModelManager->restrictToRange(rangeStart, rangeEnd); } +bool QmlProfilerViewManager::isTimelineUsable() const +{ + return d->traceView->isUsable(); +} + void QmlProfilerViewManager::raiseTimeline() { QTC_ASSERT(qobject_cast(d->traceView->parentWidget()), return); diff --git a/src/plugins/qmlprofiler/qmlprofilerviewmanager.h b/src/plugins/qmlprofiler/qmlprofilerviewmanager.h index e7b5d9ee947..b6010ef589f 100644 --- a/src/plugins/qmlprofiler/qmlprofilerviewmanager.h +++ b/src/plugins/qmlprofiler/qmlprofilerviewmanager.h @@ -53,6 +53,7 @@ public: bool isEventsRestrictedToRange() const; void restrictEventsToRange(qint64 rangeStart, qint64 rangeEnd); + bool isTimelineUsable() const; void raiseTimeline(); public slots: