<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>