<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Subject: [PATCH] qapitrace: Add option to replay in singlethreaded mode * Some<o:p></o:p></p>
<p class="MsoNormal">traces fail to replay (hang) if glretrace does not have --singelthread on the<o:p></o:p></p>
<p class="MsoNormal">command line, this change makes a UI option available<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">---<o:p></o:p></p>
<p class="MsoNormal">gui/mainwindow.cpp | 6 ++++++<o:p></o:p></p>
<p class="MsoNormal">gui/retracer.cpp | 15 +++++++++++++++<o:p></o:p></p>
<p class="MsoNormal">gui/retracer.h | 4 ++++<o:p></o:p></p>
<p class="MsoNormal">gui/ui/retracerdialog.ui | 45 ++++++++++++++++++++++++++++++++++++++++++++-<o:p></o:p></p>
<p class="MsoNormal">4 files changed, 69 insertions(+), 1 deletion(-)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp<o:p></o:p></p>
<p class="MsoNormal">index cd4e5fd..607cfb8 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/gui/mainwindow.cpp<o:p></o:p></p>
<p class="MsoNormal">+++ b/gui/mainwindow.cpp<o:p></o:p></p>
<p class="MsoNormal">@@ -188,6 +188,9 @@ void MainWindow::replayStart()<o:p></o:p></p>
<p class="MsoNormal"> dlgUi.errorCheckCB->setChecked(<o:p></o:p></p>
<p class="MsoNormal"> !m_retracer->isBenchmarking());<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">+ dlgUi.singlethreadCB->setChecked(<o:p></o:p></p>
<p class="MsoNormal">+ m_retracer->isSinglethread());<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal"> if (dlg.exec() == QDialog::Accepted) {<o:p></o:p></p>
<p class="MsoNormal"> m_retracer->setDoubleBuffered(<o:p></o:p></p>
<p class="MsoNormal"> dlgUi.doubleBufferingCB->isChecked());<o:p></o:p></p>
<p class="MsoNormal">@@ -195,6 +198,9 @@ void MainWindow::replayStart()<o:p></o:p></p>
<p class="MsoNormal"> m_retracer->setBenchmarking(<o:p></o:p></p>
<p class="MsoNormal"> !dlgUi.errorCheckCB->isChecked());<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">+ m_retracer->setSinglethread(<o:p></o:p></p>
<p class="MsoNormal">+ dlgUi.singlethreadCB->isChecked());<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal"> m_retracer->setProfiling(false, false, false);<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal"> replayTrace(false, false);<o:p></o:p></p>
<p class="MsoNormal">diff --git a/gui/retracer.cpp b/gui/retracer.cpp<o:p></o:p></p>
<p class="MsoNormal">index 49c6182..48613f2 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/gui/retracer.cpp<o:p></o:p></p>
<p class="MsoNormal">+++ b/gui/retracer.cpp<o:p></o:p></p>
<p class="MsoNormal">@@ -130,6 +130,7 @@ Retracer::Retracer(QObject *parent)<o:p></o:p></p>
<p class="MsoNormal"> : QThread(parent),<o:p></o:p></p>
<p class="MsoNormal"> m_benchmarking(false),<o:p></o:p></p>
<p class="MsoNormal"> m_doubleBuffered(true),<o:p></o:p></p>
<p class="MsoNormal">+ m_singlethread(false),<o:p></o:p></p>
<p class="MsoNormal"> m_captureState(false),<o:p></o:p></p>
<p class="MsoNormal"> m_captureCall(0),<o:p></o:p></p>
<p class="MsoNormal"> m_profileGpu(false),<o:p></o:p></p>
<p class="MsoNormal">@@ -174,6 +175,16 @@ void Retracer::setDoubleBuffered(bool db)<o:p></o:p></p>
<p class="MsoNormal"> m_doubleBuffered = db;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">+bool Retracer::isSinglethread() const<o:p></o:p></p>
<p class="MsoNormal">+{<o:p></o:p></p>
<p class="MsoNormal">+ return m_singlethread;<o:p></o:p></p>
<p class="MsoNormal">+}<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal">+void Retracer::setSinglethread(bool singlethread)<o:p></o:p></p>
<p class="MsoNormal">+{<o:p></o:p></p>
<p class="MsoNormal">+ m_singlethread = singlethread;<o:p></o:p></p>
<p class="MsoNormal">+}<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal">bool Retracer::isProfilingGpu() const<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal"> return m_profileGpu;<o:p></o:p></p>
<p class="MsoNormal">@@ -305,6 +316,10 @@ void Retracer::run()<o:p></o:p></p>
<p class="MsoNormal"> return;<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">+ if (m_singlethread) {<o:p></o:p></p>
<p class="MsoNormal">+ arguments << QLatin1String("--singlethread");<o:p></o:p></p>
<p class="MsoNormal">+ }<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal"> if (m_captureState) {<o:p></o:p></p>
<p class="MsoNormal"> arguments << QLatin1String("-D");<o:p></o:p></p>
<p class="MsoNormal"> arguments << QString::number(m_captureCall);<o:p></o:p></p>
<p class="MsoNormal">diff --git a/gui/retracer.h b/gui/retracer.h<o:p></o:p></p>
<p class="MsoNormal">index 038a7d6..d363021 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/gui/retracer.h<o:p></o:p></p>
<p class="MsoNormal">+++ b/gui/retracer.h<o:p></o:p></p>
<p class="MsoNormal">@@ -29,6 +29,9 @@ public:<o:p></o:p></p>
<p class="MsoNormal"> bool isDoubleBuffered() const;<o:p></o:p></p>
<p class="MsoNormal"> void setDoubleBuffered(bool db);<o:p></o:p></p>
<p class="MsoNormal"><o:p></o:p></p>
<p class="MsoNormal">+ bool isSinglethread() const;<o:p></o:p></p>
<p class="MsoNormal">+ void setSinglethread(bool singlethread);<o:p></o:p></p>
<p class="MsoNormal">+<o:p></o:p></p>
<p class="MsoNormal"> bool isProfilingGpu() const;<o:p></o:p></p>
<p class="MsoNormal"> bool isProfilingCpu() const;<o:p></o:p></p>
<p class="MsoNormal"> bool isProfilingPixels() const;<o:p></o:p></p>
<p class="MsoNormal">@@ -65,6 +68,7 @@ private:<o:p></o:p></p>
<p class="MsoNormal"> trace::API m_api;<o:p></o:p></p>
<p class="MsoNormal"> bool m_benchmarking;<o:p></o:p></p>
<p class="MsoNormal"> bool m_doubleBuffered;<o:p></o:p></p>
<p class="MsoNormal">+ bool m_singlethread;<o:p></o:p></p>
<p class="MsoNormal"> bool m_captureState;<o:p></o:p></p>
<p class="MsoNormal"> bool m_captureThumbnails;<o:p></o:p></p>
<p class="MsoNormal"> qlonglong m_captureCall;<o:p></o:p></p>
<p class="MsoNormal">diff --git a/gui/ui/retracerdialog.ui b/gui/ui/retracerdialog.ui<o:p></o:p></p>
<p class="MsoNormal">index 8df9960..33ae85d 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/gui/ui/retracerdialog.ui<o:p></o:p></p>
<p class="MsoNormal">+++ b/gui/ui/retracerdialog.ui<o:p></o:p></p>
<p class="MsoNormal">@@ -10,7 +10,7 @@<o:p></o:p></p>
<p class="MsoNormal"> <x>0</x><o:p></o:p></p>
<p class="MsoNormal"> <y>0</y><o:p></o:p></p>
<p class="MsoNormal"> <width>286</width><o:p></o:p></p>
<p class="MsoNormal">- <height>94</height><o:p></o:p></p>
<p class="MsoNormal">+ <height>125</height><o:p></o:p></p>
<p class="MsoNormal"> </rect><o:p></o:p></p>
<p class="MsoNormal"> </property><o:p></o:p></p>
<p class="MsoNormal"> <property name="windowTitle"><o:p></o:p></p>
<p class="MsoNormal">@@ -101,6 +101,49 @@<o:p></o:p></p>
<p class="MsoNormal"> </layout><o:p></o:p></p>
<p class="MsoNormal"> </item><o:p></o:p></p>
<p class="MsoNormal"> <item><o:p></o:p></p>
<p class="MsoNormal">+ <layout class="QHBoxLayout" name="horizontalLayout_3"><o:p></o:p></p>
<p class="MsoNormal">+ <item><o:p></o:p></p>
<p class="MsoNormal">+ <spacer name="horizontalSpacer_5"><o:p></o:p></p>
<p class="MsoNormal">+ <property name="orientation"><o:p></o:p></p>
<p class="MsoNormal">+ <enum>Qt::Horizontal</enum><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ <property name="sizeHint" stdset="0"><o:p></o:p></p>
<p class="MsoNormal">+ <size><o:p></o:p></p>
<p class="MsoNormal">+ <width>40</width><o:p></o:p></p>
<p class="MsoNormal">+ <height>20</height><o:p></o:p></p>
<p class="MsoNormal">+ </size><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ </spacer><o:p></o:p></p>
<p class="MsoNormal">+ </item><o:p></o:p></p>
<p class="MsoNormal">+ <item><o:p></o:p></p>
<p class="MsoNormal">+ <widget class="QCheckBox" name="singlethreadCB"><o:p></o:p></p>
<p class="MsoNormal">+ <property name="sizePolicy"><o:p></o:p></p>
<p class="MsoNormal">+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed"><o:p></o:p></p>
<p class="MsoNormal">+ <horstretch>0</horstretch><o:p></o:p></p>
<p class="MsoNormal">+ <verstretch>0</verstretch><o:p></o:p></p>
<p class="MsoNormal">+ </sizepolicy><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ <property name="text"><o:p></o:p></p>
<p class="MsoNormal">+ <string>Singlethread</string><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ </widget><o:p></o:p></p>
<p class="MsoNormal">+ </item><o:p></o:p></p>
<p class="MsoNormal">+ <item><o:p></o:p></p>
<p class="MsoNormal">+ <spacer name="horizontalSpacer_6"><o:p></o:p></p>
<p class="MsoNormal">+ <property name="orientation"><o:p></o:p></p>
<p class="MsoNormal">+ <enum>Qt::Horizontal</enum><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ <property name="sizeHint" stdset="0"><o:p></o:p></p>
<p class="MsoNormal">+ <size><o:p></o:p></p>
<p class="MsoNormal">+ <width>40</width><o:p></o:p></p>
<p class="MsoNormal">+ <height>20</height><o:p></o:p></p>
<p class="MsoNormal">+ </size><o:p></o:p></p>
<p class="MsoNormal">+ </property><o:p></o:p></p>
<p class="MsoNormal">+ </spacer><o:p></o:p></p>
<p class="MsoNormal">+ </item><o:p></o:p></p>
<p class="MsoNormal">+ </layout><o:p></o:p></p>
<p class="MsoNormal">+ </item><o:p></o:p></p>
<p class="MsoNormal">+ <item><o:p></o:p></p>
<p class="MsoNormal"> <widget class="QDialogButtonBox" name="buttonBox"><o:p></o:p></p>
<p class="MsoNormal"> <property name="orientation"><o:p></o:p></p>
<p class="MsoNormal"> <enum>Qt::Horizontal</enum><o:p></o:p></p>
<p class="MsoNormal">-- <o:p></o:p></p>
<p class="MsoNormal">1.8.1.msysgit.1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>