<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>15940</bug_id>
          
          <creation_ts>2007-11-10 18:45:09 -0800</creation_ts>
          <short_desc>Implement threading API for Qt</short_desc>
          <delta_ts>2008-04-24 02:06:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>15939</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Haygood">jhaygood</reporter>
          <assigned_to name="George Staikos">staikos</assigned_to>
          <cc>ap</cc>
    
    <cc>hausmann</cc>
    
    <cc>jchaffraix</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>60880</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-10 18:45:09 -0800</bug_when>
    <thetext>Qt needs a threading implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60881</commentid>
    <comment_count>1</comment_count>
      <attachid>17180</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-10 18:45:33 -0800</bug_when>
    <thetext>Created attachment 17180
Implements threading for Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61680</commentid>
    <comment_count>2</comment_count>
      <attachid>17180</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-11-19 07:58:31 -0800</bug_when>
    <thetext>Comment on attachment 17180
Implements threading for Qt

Overall this looks reasonable to me, but there are a bunch of coding style issues.

In a few places you have extra whitespace inside function calls, such as:

key( thread, 0 );

Constructors should initialize their members via the initialization list rather than via assignment in their body.

You&apos;ve used tabs for indentation in some places.

Methods in ThreadPrivate use &quot;this-&gt;&quot; when accessing their member variables.  The members should also have an m_ prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61685</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2007-11-19 08:56:01 -0800</bug_when>
    <thetext>The implementation looks incomplete to me... For example waitForThreadCompletion is not implemented, so clearThreadHandleForIdentifier is never called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62388</commentid>
    <comment_count>4</comment_count>
      <attachid>17535</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-26 13:06:39 -0800</bug_when>
    <thetext>Created attachment 17535
Updated threading for Qt

Fixes the CSG problems, as well as implements &quot;waitForThreadCompletion&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62451</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2007-11-27 01:53:46 -0800</bug_when>
    <thetext>From the patch:
-win32-*: DEFINES += ENABLE_ICONDATABASE=0 ENABLE_DATABASE=0

Until we eliminate the direct dependency on Sqlite I don&apos;t think we should enable database support for Win32 builds.

The goal instead is to port it to Qt&apos;s Sql module API with the sqlite driver behind.

The rest looks good to me, apart from two small coding style nitpicks (indentation in signal() and wakeOne() is wrong and there&apos;s a space missing before the if() in waitForThreadCompletion)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62524</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-27 19:51:03 -0800</bug_when>
    <thetext>&gt; The goal instead is to port it to Qt&apos;s Sql module API with the sqlite driver
&gt; behind.

Is there any reason for this? The current code in platform\sql\ has been changed to be cross platform, and has already been ported to the API implemented here. This allows for a common, well tested, consistent SQL processing path in my opinion that is shared by all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62544</commentid>
    <comment_count>7</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2007-11-27 22:43:32 -0800</bug_when>
    <thetext>Having two copies of sqlite in memory is bad, and we dont&apos; want to depend on external libraries if possible anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62571</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-28 05:35:20 -0800</bug_when>
    <thetext>Atm webkit does not depend on qtsql at all so porting to qtsql would add a imho an unneccesary dep</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62756</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2007-11-29 20:50:58 -0800</bug_when>
    <thetext>However, I do see your point. Anyway, I&apos;ll be submitting a &quot;cleaner&quot; patch soon, which doesn&apos;t patch WebCore.pro, and adds a lacking copyright line in the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62858</commentid>
    <comment_count>10</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-11-30 21:41:06 -0800</bug_when>
    <thetext>+    if(status) return 0;
+    else return 1;

Violates the coding style.

Further I wonder if we need to allocate m_mutex and m_condition on the heap. Can&apos;t these be ordinary members of Mutex and ThreadCondition?



+static Mutex&amp; threadMapMutex()
+{
+    static Mutex mutex;
+    return mutex;
+}

I&apos;m sure GCC is going to initialize the static in a thread safe way, is MSVC doing that as well? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63161</commentid>
    <comment_count>11</comment_count>
      <attachid>17535</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-12-03 10:54:29 -0800</bug_when>
    <thetext>Comment on attachment 17535
Updated threading for Qt

r- awaiting the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78312</commentid>
    <comment_count>12</comment_count>
      <attachid>20701</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-20 11:05:48 -0700</bug_when>
    <thetext>Created attachment 20701
Updated implementation

&gt; +static Mutex&amp; threadMapMutex()
&gt; +{
&gt; +    static Mutex mutex;
&gt; +    return mutex;
&gt; +}
&gt; I&apos;m sure GCC is going to initialize the static in a thread safe way, is MSVC
&gt; doing that as well? 

This is the way the Windows port do the initialization so it should be alright to do the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78400</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-21 08:04:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; This is the way the Windows port do the initialization so it should be alright
&gt; to do the same.

The Apple Windows port calls threadMapMutex() from WTF::initializeThreading() to safely create the mutex. Even with gcc, we disable thread-safe statics for better performance, and initialize them manually.

I haven&apos;t carefully examined implementation details, but the patch looks right to me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78654</commentid>
    <comment_count>14</comment_count>
      <attachid>20701</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-04-23 07:57:18 -0700</bug_when>
    <thetext>Comment on attachment 20701
Updated implementation

r=me. Good to have a working implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78751</commentid>
    <comment_count>15</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-24 02:06:56 -0700</bug_when>
    <thetext>Committed in r32477 including Ap&apos;s comment about calling threadMutex() in WTF::initializeThreading().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17180</attachid>
            <date>2007-11-10 18:45:33 -0800</date>
            <delta_ts>2007-11-26 13:06:39 -0800</delta_ts>
            <desc>Implements threading for Qt</desc>
            <filename>qt-thread.patch</filename>
            <type>text/plain</type>
            <size>5453</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3Njgw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDctMTEt
MTAgIEp1c3RpbiBIYXlnb29kICA8amhheWdvb2RAcmVha3RpeC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRzIHRo
cmVhZGluZyBBUElzIGZvciBRdCwgaW5jbHVkaW5nIGN1cnJlbnRUaHJlYWQoKQorCisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vcXQvVGhyZWFkaW5nUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGhyZWFkTWFwTXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6dGhy
ZWFkTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmVzdGFibGlzaElkZW50aWZpZXJGb3JUaHJlYWRI
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRpZmllckJ5VGhyZWFkSGFuZGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0ZXg6Ok11dGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGV4Ojp+TXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6TXV0ZXg6Omxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TXV0ZXg6OnRyeUxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRDb25kaXRpb246OlRo
cmVhZENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRDb25kaXRpb246On5UaHJl
YWRDb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZENvbmRpdGlvbjo6c2lnbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZENvbmRpdGlvbjo6YnJvYWRjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZFByaXZhdGU6OlRocmVhZFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkUHJp
dmF0ZTo6cnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpkZXRhY2hUaHJlYWQpOgorCiAyMDA3LTExLTEwICBOaWtvbGFzIFppbW1lcm1hbm4g
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYy4KSW5kZXg6
IFdlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJvCShyZXZpc2lvbiAyNzY4MCkK
KysrIFdlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC04ODIsOCArODgyLDcgQEAgcXQtcG9y
dCB7CiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJL
aXQvcXQvQXBpL3F3ZWJvYmplY3RwbHVnaW4uY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3
ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuY3BwIFwKLSAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJo
aXN0b3J5aW50ZXJmYWNlLmNwcCBcCi0gICAgcGxhdGZvcm0vVGhyZWFkaW5nTm9uZS5jcHAKKyAg
ICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcAogCiAgICAgdW5peDog
U09VUkNFUyArPSBwbGF0Zm9ybS9xdC9TeXN0ZW1UaW1lUXQuY3BwCiAgICAgZWxzZTogU09VUkNF
UyArPSBwbGF0Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKSW5kZXg6IHBsYXRmb3JtL3F0L1Ro
cmVhZGluZ1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9xdC9UaHJlYWRpbmdRdC5jcHAJ
KHJldmlzaW9uIDI3NjgwKQorKysgcGxhdGZvcm0vcXQvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMiArMjYsNjQgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgor
CisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFUaHJlYWQ+CisjaW5jbHVkZSA8UUhhc2g+CisjaW5jbHVkZSA8UU11dGV4PgorI2luY2x1
ZGUgPFFXYWl0Q29uZGl0aW9uPgogCi0jaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0jaW5jbHVk
ZSA8UXRDb3JlL1FDb3JlQXBwbGljYXRpb24+CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRp
YyBNdXRleCYgdGhyZWFkTWFwTXV0ZXgoKQoreworICAgIHN0YXRpYyBNdXRleCBtdXRleDsKKyAg
ICByZXR1cm4gbXV0ZXg7Cit9CisKK3N0YXRpYyBRSGFzaDxUaHJlYWRJZGVudGlmaWVyLCBRVGhy
ZWFkKj4mIHRocmVhZE1hcCgpCit7CisgICAgc3RhdGljIFFIYXNoPFRocmVhZElkZW50aWZpZXIs
IFFUaHJlYWQqPiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIFRocmVhZElkZW50
aWZpZXIgZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZEhhbmRsZShRVGhyZWFkKiB0aHJlYWQp
Cit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworCisgICAgc3Rh
dGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckNvdW50ID0gMTAwOworCisgICAgdGhyZWFk
TWFwKCkuaW5zZXJ0KGlkZW50aWZpZXJDb3VudCwgdGhyZWFkKTsKKyAgICAKKyAgICByZXR1cm4g
aWRlbnRpZmllckNvdW50Kys7Cit9CisKK3N0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXJCeVRocmVhZEhhbmRsZShRVGhyZWFkKiB0aHJlYWQpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIHJldHVybiB0aHJlYWRNYXAoKS5rZXkoIHRocmVh
ZCwgMCApOworfQorCitzdGF0aWMgUVRocmVhZCogdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihU
aHJlYWRJZGVudGlmaWVyIGlkKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBN
dXRleCgpKTsKKyAgICAKKyAgICByZXR1cm4gdGhyZWFkTWFwKCkudmFsdWUoaWQpOworfQorCitz
dGF0aWMgdm9pZCBjbGVhclRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmll
ciBpZCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisKKyAg
ICBBU1NFUlQodGhyZWFkTWFwKCkuY29udGFpbnMoaWQpKTsKKyAgICAKKyAgICB0aHJlYWRNYXAo
KS5yZW1vdmUoaWQpOworfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBlcmZvcm1G
dW5jdGlvbkV2ZW50IDogcHVibGljIFFFdmVudCB7CiBwdWJsaWM6CkBAIC03OCw2ICsxMzAsOTcg
QEAgdm9pZCBjYWxsT25NYWluVGhyZWFkKHZvaWQgKCpmdW5jdGlvblRvUAogICAgIFFDb3JlQXBw
bGljYXRpb246OnBvc3RFdmVudCh3ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpLCBuZXcgUGVy
Zm9ybUZ1bmN0aW9uRXZlbnQoZnVuY3Rpb25Ub1BlcmZvcm0pKTsKIH0KIAorVGhyZWFkSWRlbnRp
ZmllciBjdXJyZW50VGhyZWFkKCkKK3sKKyAgICBRVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gUVRo
cmVhZDo6Y3VycmVudFRocmVhZCgpOworICAgIFRocmVhZElkZW50aWZpZXIgaWQgPSBpZGVudGlm
aWVyQnlUaHJlYWRIYW5kbGUoY3VycmVudFRocmVhZCk7CisgICAgaWYgKCFpZCkKKyAgICAgICAg
aWQgPSBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQpOwor
ICAgIHJldHVybiBpZDsKK30KKworTXV0ZXg6Ok11dGV4KCkKK3sKKyAgICBtX211dGV4ID0gbmV3
IFFNdXRleCgpOworfQorCitNdXRleDo6fk11dGV4KCkKK3sKKyAgICBkZWxldGUgbV9tdXRleDsK
K30KKwordm9pZCBNdXRleDo6bG9jaygpCit7CisgICAgbV9tdXRleC0+bG9jaygpOworfQorICAg
IAorYm9vbCBNdXRleDo6dHJ5TG9jaygpCit7CisgICAgcmV0dXJuIG1fbXV0ZXgtPnRyeUxvY2so
KTsKK30KKwordm9pZCBNdXRleDo6dW5sb2NrKCkKK3sKKyAgICBtX211dGV4LT51bmxvY2soKTsK
K30KKworVGhyZWFkQ29uZGl0aW9uOjpUaHJlYWRDb25kaXRpb24oKQoreyAKKyAgICBtX2NvbmRp
dGlvbiA9IG5ldyBRV2FpdENvbmRpdGlvbigpOworfQorCitUaHJlYWRDb25kaXRpb246On5UaHJl
YWRDb25kaXRpb24oKQoreworICAgIGRlbGV0ZSBtX2NvbmRpdGlvbjsKK30KKyAgICAKK3ZvaWQg
VGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKK3sKKyAgICBtX2NvbmRpdGlvbi0+
d2FpdCggbXV0ZXguaW1wbCgpICk7Cit9CisgICAgCit2b2lkIFRocmVhZENvbmRpdGlvbjo6c2ln
bmFsKCkKK3sKKwltX2NvbmRpdGlvbi0+d2FrZU9uZSgpOworfQorCit2b2lkIFRocmVhZENvbmRp
dGlvbjo6YnJvYWRjYXN0KCkKK3sKKwltX2NvbmRpdGlvbi0+d2FrZUFsbCgpOworfQorCitjbGFz
cyBUaHJlYWRQcml2YXRlIDogcHVibGljIFFUaHJlYWQgeworcHVibGljOgorICAgIFRocmVhZFBy
aXZhdGUoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7CisgICAgdm9pZCBy
dW4oKTsKK3ByaXZhdGU6CisgICAgdm9pZCogZGF0YTsKKyAgICBUaHJlYWRGdW5jdGlvbiBlbnRy
eVBvaW50OworfTsKKworVGhyZWFkUHJpdmF0ZTo6VGhyZWFkUHJpdmF0ZShUaHJlYWRGdW5jdGlv
biBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKQoreworICAgIHRoaXMtPmRhdGEgPSBkYXRhOworICAg
IHRoaXMtPmVudHJ5UG9pbnQgPSBlbnRyeVBvaW50OworfQorCit2b2lkIFRocmVhZFByaXZhdGU6
OnJ1bigpCit7CisgICAgZW50cnlQb2ludChkYXRhKTsKK30KKworVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSkKK3sKKyAg
ICBUaHJlYWRQcml2YXRlKiB0aHJlYWQgPSBuZXcgVGhyZWFkUHJpdmF0ZShlbnRyeVBvaW50LGRh
dGEpOworICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBlc3RhYmxpc2hJZGVudGlmaWVy
Rm9yVGhyZWFkSGFuZGxlKHRocmVhZCk7CisJdGhyZWFkLT5zdGFydCgpOworICAgIHJldHVybiB0
aHJlYWRJRDsKK30KKwordm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllciBpZCkKK3sK
K30KKwogfQogCiAjaW5jbHVkZSAiVGhyZWFkaW5nUXQubW9jIgo=
</data>
<flag name="review"
          id="7317"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17535</attachid>
            <date>2007-11-26 13:06:39 -0800</date>
            <delta_ts>2008-04-20 11:05:48 -0700</delta_ts>
            <desc>Updated threading for Qt</desc>
            <filename>threading-qt.diff</filename>
            <type>text/plain</type>
            <size>5907</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4MDQ2
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDctMTEt
MjYgIEp1c3RpbiBIYXlnb29kIDxqaGF5Z29vZEByZWFrdGl4LmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnRzIHRocmVhZGluZyBBUElzIGZvciBRdAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0v
cXQvVGhyZWFkaW5nUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGhyZWFkTWFwTXV0ZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6dGhyZWFkTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OmVzdGFibGlz
aElkZW50aWZpZXJGb3JUaHJlYWRIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6aWRlbnRpZmll
ckJ5VGhyZWFkSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OnRocmVhZEhhbmRsZUZvcklkZW50
aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0ZXg6Ok11dGV4KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGV4Ojp+TXV0ZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6TXV0ZXg6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6TXV0ZXg6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpU
aHJlYWRDb25kaXRpb246On5UaHJlYWRDb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkQ29uZGl0aW9uOjp3YWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZENvbmRpdGlvbjo6
c2lnbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZENvbmRpdGlvbjo6YnJvYWRjYXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZFByaXZhdGU6OlRocmVhZFByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkUHJpdmF0ZTo6cnVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpkZXRhY2hUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2FpdEZvclRocmVhZENvbXBsZXRpb24pOgorCiAyMDA3LTExLTI2ICBTdGV2ZSBGYWxr
ZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpJbmRleDog
V2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5wcm8JKHJldmlzaW9uIDI4MDQ2KQor
KysgV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUxLDYgQEAgZnJlZWJzZC0q
OiBERUZJTkVTICs9IEhBVkVfUFRIUkVBRF9OUF9ICiAKIERFRklORVMgKz0gQlVJTERfV0VCS0lU
CiAKLXdpbjMyLSo6IERFRklORVMgKz0gRU5BQkxFX0lDT05EQVRBQkFTRT0wIEVOQUJMRV9EQVRB
QkFTRT0wCi0KICMgUGljayB1cCAzcmRwYXJ0eSBsaWJyYXJpZXMgZnJvbSBJTkNMVURFL0xJQiBq
dXN0IGxpa2Ugd2l0aCBNU1ZDCiB3aW4zMi1nKysgewogICAgIFRNUFBBVEggICAgICAgICAgICA9
ICQkcXVvdGUoJCQoSU5DTFVERSkpCkBAIC05MjUsOCArOTIzLDcgQEAgcXQtcG9ydCB7CiAgICAg
Li4vV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBp
L3F3ZWJvYmplY3RwbHVnaW4uY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJvYmplY3Rw
bHVnaW5jb25uZWN0b3IuY3BwIFwKLSAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50
ZXJmYWNlLmNwcCBcCi0gICAgcGxhdGZvcm0vVGhyZWFkaW5nTm9uZS5jcHAKKyAgICAuLi9XZWJL
aXQvcXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcAogCiAgICAgdW5peDogU09VUkNFUyAr
PSBwbGF0Zm9ybS9xdC9TeXN0ZW1UaW1lUXQuY3BwCiAgICAgZWxzZTogU09VUkNFUyArPSBwbGF0
Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKSW5kZXg6IHBsYXRmb3JtL3F0L1RocmVhZGluZ1F0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9xdC9UaHJlYWRpbmdRdC5jcHAJKHJldmlzaW9u
IDI4MDQ2KQorKysgcGxhdGZvcm0vcXQvVGhyZWFkaW5nUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMiArMjYsNTggQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwor
IAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZGluZy5oIgorCisjaW5jbHVk
ZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFUaHJl
YWQ+CisjaW5jbHVkZSA8UUhhc2g+CisjaW5jbHVkZSA8UU11dGV4PgorI2luY2x1ZGUgPFFXYWl0
Q29uZGl0aW9uPgogCi0jaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0jaW5jbHVkZSA8UXRDb3Jl
L1FDb3JlQXBwbGljYXRpb24+CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBNdXRleCYg
dGhyZWFkTWFwTXV0ZXgoKQoreworICAgIHN0YXRpYyBNdXRleCBtdXRleDsKKyAgICByZXR1cm4g
bXV0ZXg7Cit9CisKK3N0YXRpYyBRSGFzaDxUaHJlYWRJZGVudGlmaWVyLCBRVGhyZWFkKj4mIHRo
cmVhZE1hcCgpCit7CisgICAgc3RhdGljIFFIYXNoPFRocmVhZElkZW50aWZpZXIsIFFUaHJlYWQq
PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RhdGljIFRocmVhZElkZW50aWZpZXIgZXN0
YWJsaXNoSWRlbnRpZmllckZvclRocmVhZEhhbmRsZShRVGhyZWFkKiB0aHJlYWQpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIHN0YXRpYyBUaHJlYWRJ
ZGVudGlmaWVyIGlkZW50aWZpZXJDb3VudCA9IDEwMDsKKyAgICB0aHJlYWRNYXAoKS5pbnNlcnQo
aWRlbnRpZmllckNvdW50LCB0aHJlYWQpOworICAgIHJldHVybiBpZGVudGlmaWVyQ291bnQrKzsK
K30KKworc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckJ5VGhyZWFkSGFuZGxlKFFU
aHJlYWQqIHRocmVhZCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgo
KSk7CisgICAgcmV0dXJuIHRocmVhZE1hcCgpLmtleSh0aHJlYWQsMCk7Cit9CisKK3N0YXRpYyBR
VGhyZWFkKiB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIgaWQpCit7
CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworICAgIHJldHVybiB0
aHJlYWRNYXAoKS52YWx1ZShpZCk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyVGhyZWFkSGFuZGxl
Rm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQoreworICAgIE11dGV4TG9ja2VyIGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKyAgICBBU1NFUlQodGhyZWFkTWFwKCkuY29udGFpbnMo
aWQpKTsKKyAgICB0aHJlYWRNYXAoKS5yZW1vdmUoaWQpOworfQogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFBlcmZvcm1GdW5jdGlvbkV2ZW50IDogcHVibGljIFFFdmVudCB7CiBwdWJs
aWM6CkBAIC03OCw2ICsxMjQsMTA1IEBAIHZvaWQgY2FsbE9uTWFpblRocmVhZCh2b2lkICgqZnVu
Y3Rpb25Ub1AKICAgICBRQ29yZUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQod2Via2l0X21haW5fdGhy
ZWFkX2ludm9rZXIoKSwgbmV3IFBlcmZvcm1GdW5jdGlvbkV2ZW50KGZ1bmN0aW9uVG9QZXJmb3Jt
KSk7CiB9CiAKK1RocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpCit7CisgICAgUVRocmVh
ZCogY3VycmVudFRocmVhZCA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKTsKKyAgICBUaHJlYWRJ
ZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5VGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQpOwor
ICAgIGlmIChpZCA9PSAwKQorICAgICAgICBpZCA9IGVzdGFibGlzaElkZW50aWZpZXJGb3JUaHJl
YWRIYW5kbGUoY3VycmVudFRocmVhZCk7CisgICAgcmV0dXJuIGlkOworfQorCitNdXRleDo6TXV0
ZXgoKQoreworICAgIG1fbXV0ZXggPSBuZXcgUU11dGV4KCk7Cit9CisKK011dGV4Ojp+TXV0ZXgo
KQoreworICAgIGRlbGV0ZSBtX211dGV4OworfQorCit2b2lkIE11dGV4Ojpsb2NrKCkKK3sKKyAg
ICBtX211dGV4LT5sb2NrKCk7Cit9CisgICAgCitib29sIE11dGV4Ojp0cnlMb2NrKCkKK3sKKyAg
ICByZXR1cm4gbV9tdXRleC0+dHJ5TG9jaygpOworfQorCit2b2lkIE11dGV4Ojp1bmxvY2soKQor
eworICAgIG1fbXV0ZXgtPnVubG9jaygpOworfQorCitUaHJlYWRDb25kaXRpb246OlRocmVhZENv
bmRpdGlvbigpCit7IAorICAgIG1fY29uZGl0aW9uID0gbmV3IFFXYWl0Q29uZGl0aW9uKCk7Cit9
CisKK1RocmVhZENvbmRpdGlvbjo6flRocmVhZENvbmRpdGlvbigpCit7CisgICAgZGVsZXRlIG1f
Y29uZGl0aW9uOworfQorICAgIAordm9pZCBUaHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11
dGV4KQoreworICAgIG1fY29uZGl0aW9uLT53YWl0KG11dGV4LmltcGwoKSk7Cit9CisgICAgCit2
b2lkIFRocmVhZENvbmRpdGlvbjo6c2lnbmFsKCkKK3sKKwltX2NvbmRpdGlvbi0+d2FrZU9uZSgp
OworfQorCit2b2lkIFRocmVhZENvbmRpdGlvbjo6YnJvYWRjYXN0KCkKK3sKKwltX2NvbmRpdGlv
bi0+d2FrZUFsbCgpOworfQorCitjbGFzcyBUaHJlYWRQcml2YXRlIDogcHVibGljIFFUaHJlYWQg
eworcHVibGljOgorICAgIFRocmVhZFByaXZhdGUoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwg
dm9pZCogZGF0YSk7CisgICAgdm9pZCBydW4oKTsKK3ByaXZhdGU6CisgICAgdm9pZCogbV9kYXRh
OworICAgIFRocmVhZEZ1bmN0aW9uIG1fZW50cnlQb2ludDsKK307CisKK1RocmVhZFByaXZhdGU6
OlRocmVhZFByaXZhdGUoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSkgCisg
ICAgOiBtX2RhdGEoZGF0YSkKKyAgICAsIG1fZW50cnlQb2ludChlbnRyeVBvaW50KQoreworfQor
Cit2b2lkIFRocmVhZFByaXZhdGU6OnJ1bigpCit7CisgICAgbV9lbnRyeVBvaW50KG1fZGF0YSk7
Cit9CisKK1RocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5
UG9pbnQsIHZvaWQqIGRhdGEpCit7CisgICAgVGhyZWFkUHJpdmF0ZSogdGhyZWFkID0gbmV3IFRo
cmVhZFByaXZhdGUoZW50cnlQb2ludCxkYXRhKTsKKyAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVh
ZElEID0gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZEhhbmRsZSh0aHJlYWQpOworCXRocmVh
ZC0+c3RhcnQoKTsKKyAgICByZXR1cm4gdGhyZWFkSUQ7Cit9CisKK3ZvaWQgZGV0YWNoVGhyZWFk
KFRocmVhZElkZW50aWZpZXIgaWQpCit7Cit9CisKK2ludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bihUaHJlYWRJZGVudGlmaWVyIGlkLCB2b2lkKiopCit7CisgICAgUVRocmVhZCogdGhyZWFkID0g
dGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihpZCk7CisgICAgYm9vbCBzdGF0dXMgPSB0aHJlYWQt
PndhaXQoKTsKKyAgICBpZihzdGF0dXMpIHJldHVybiAwOworICAgIGVsc2UgcmV0dXJuIDE7Cit9
CisKIH0KIAogI2luY2x1ZGUgIlRocmVhZGluZ1F0Lm1vYyIK
</data>
<flag name="review"
          id="7539"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20701</attachid>
            <date>2008-04-20 11:05:48 -0700</date>
            <delta_ts>2008-04-23 07:57:18 -0700</delta_ts>
            <desc>Updated implementation</desc>
            <filename>ThreadQt.patch</filename>
            <type>text/plain</type>
            <size>7728</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA0M2U5ZTE2Li4wMGJjNGFjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMDgtMDQtMjAgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDE1
OTQwOiBJbXBsZW1lbnQgdGhyZWFkaW5nIEFQSSBmb3IgUXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQwCisKKyAgICAgICAgT3JpZ2luYWwgcGF0
Y2ggYnkgSnVzdGluIEhheWdvb2QsIHR3ZWFrZWQgYnkgbWUuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5wcmk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1F0LmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEY6OnRocmVhZE1hcE11dGV4KToKKyAgICAgICAgKFdURjo6dGhyZWFkTWFwKToKKyAg
ICAgICAgKFdURjo6ZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCk6CisgICAgICAgIChXVEY6
OmNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXVEY6OnRocmVhZEZvcklkZW50
aWZpZXIpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkUHJpdmF0ZTo6Z2V0UmV0dXJuVmFsdWUpOgorICAgICAgICAoV1RGOjpUaHJlYWRQ
cml2YXRlOjpUaHJlYWRQcml2YXRlKToKKyAgICAgICAgKFdURjo6VGhyZWFkUHJpdmF0ZTo6cnVu
KToKKyAgICAgICAgKFdURjo6Y3JlYXRlVGhyZWFkKToKKyAgICAgICAgKFdURjo6d2FpdEZvclRo
cmVhZENvbXBsZXRpb24pOiByZXR1cm4gIXJlcyB0byByZXR1cm4KKyAgICAgICAgMCBvbiBzdWNj
ZXNzICh0byBtYXRjaCB0aGUgcHRocmVhZHMgaW1wbGVtZW50YXRpb24pLgorICAgICAgICAoV1RG
OjpkZXRhY2hUaHJlYWQpOgorICAgICAgICAoV1RGOjppZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxl
KToKKyAgICAgICAgKFdURjo6Y3VycmVudFRocmVhZCk6CisgICAgICAgIChXVEY6Ok11dGV4OjpN
dXRleCk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp+TXV0ZXgpOgorICAgICAgICAoV1RGOjpNdXRl
eDo6bG9jayk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp0cnlMb2NrKToKKyAgICAgICAgKFdURjo6
TXV0ZXg6OnVubG9jayk6CisgICAgICAgIChXVEY6OlRocmVhZENvbmRpdGlvbjo6VGhyZWFkQ29u
ZGl0aW9uKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9u
KToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjp3YWl0KToKKyAgICAgICAgKFdURjo6
VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQpOgorICAgICAgICAoV1RGOjpUaHJlYWRDb25kaXRp
b246OnNpZ25hbCk6CisKIDIwMDgtMDQtMTkgIE1pa2UgSG9tbWV5ICA8Z2xhbmRpdW1AZGViaWFu
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcmkKaW5kZXggNjYyZDI2OS4uZTQxMDlkMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJpCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnByaQpAQCAtMTExLDcgKzExMSw3IEBAIGd0ay1wb3J0OlNPVVJDRVMgKz0gXAogICAgIHd0Zi9n
dGsvTWFpblRocmVhZEd0ay5jcHAKIAogIWd0ay1wb3J0OlNPVVJDRVMgKz0gXAotICAgIHd0Zi9U
aHJlYWRpbmdOb25lLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1F0LmNwcCBcCiAgICAgd3RmL3F0
L01haW5UaHJlYWRRdC5jcHAKIAogIUNPTkZJRyhRVERJUl9idWlsZCkgewpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1F0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9U
aHJlYWRpbmdRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJmYzQ1
NAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5jcHAK
QEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29k
IChqaGF5Z29vZEByZWFrdGl4LmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRo
cmVhZGluZy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorCisjaW5jbHVkZSA8UU11dGV4PgorI2luY2x1ZGUgPFFUaHJlYWQ+CisjaW5j
bHVkZSA8UVdhaXRDb25kaXRpb24+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBUaHJlYWRQ
cml2YXRlIDogcHVibGljIFFUaHJlYWQgeworcHVibGljOgorICAgIFRocmVhZFByaXZhdGUoVGhy
ZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7CisgICAgdm9pZCBydW4oKTsKKyAg
ICB2b2lkKiBnZXRSZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fcmV0dXJuVmFsdWU7IH0KK3ByaXZh
dGU6CisgICAgdm9pZCogbV9kYXRhOworICAgIFRocmVhZEZ1bmN0aW9uIG1fZW50cnlQb2ludDsK
KyAgICB2b2lkKiBtX3JldHVyblZhbHVlOworfTsKKworVGhyZWFkUHJpdmF0ZTo6VGhyZWFkUHJp
dmF0ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKSAKKyAgICA6IG1fZGF0
YShkYXRhKQorICAgICwgbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQpCisgICAgLCBtX3JldHVyblZh
bHVlKDApCit7Cit9CisKK3ZvaWQgVGhyZWFkUHJpdmF0ZTo6cnVuKCkKK3sKKyAgICBtX3JldHVy
blZhbHVlID0gbV9lbnRyeVBvaW50KG1fZGF0YSk7Cit9CisKKworTXV0ZXgqIGF0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4OworCitzdGF0aWMgTXV0ZXgmIHRocmVhZE1hcE11dGV4KCkK
K3sKKyAgICBzdGF0aWMgTXV0ZXggbXV0ZXg7CisgICAgcmV0dXJuIG11dGV4OworfQorCitzdGF0
aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBRVGhyZWFkKj4mIHRocmVhZE1hcCgpCit7Cisg
ICAgc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVhZCo+IG1hcDsKKyAgICBy
ZXR1cm4gbWFwOworfQorCitzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBlc3RhYmxpc2hJZGVudGlm
aWVyRm9yVGhyZWFkKFFUaHJlYWQqJiB0aHJlYWQpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KHRocmVhZE1hcE11dGV4KCkpOworCisgICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRp
ZmllckNvdW50ID0gMTsKKworICAgIHRocmVhZE1hcCgpLmFkZChpZGVudGlmaWVyQ291bnQsIHRo
cmVhZCk7CisKKyAgICByZXR1cm4gaWRlbnRpZmllckNvdW50Kys7Cit9CisKK3N0YXRpYyB2b2lk
IGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQoreworICAgIE11
dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKKworICAgIEFTU0VSVCh0aHJlYWRN
YXAoKS5jb250YWlucyhpZCkpOworCisgICAgdGhyZWFkTWFwKCkucmVtb3ZlKGlkKTsKK30KKwor
c3RhdGljIFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBpZCkK
K3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7CisKKyAgICByZXR1
cm4gdGhyZWFkTWFwKCkuZ2V0KGlkKTsKK30KKwordm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkK
K3sKKyAgICBpZighYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4
OworICAgIHd0Zl9yYW5kb21faW5pdCgpOworfQorCitUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKQoreworICAgIFRocmVh
ZFByaXZhdGUqIHRocmVhZCA9IG5ldyBUaHJlYWRQcml2YXRlKGVudHJ5UG9pbnQsIGRhdGEpOwor
ICAgIGlmICghdGhyZWFkKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB0
aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50cnlQb2ludCwgZGF0YSk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB0aHJlYWQtPnN0YXJ0KCk7CisKKyAgICBR
VGhyZWFkKiB0aHJlYWRSZWYgPSBzdGF0aWNfY2FzdDxRVGhyZWFkKj4odGhyZWFkKTsKKworICAg
IHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkKHRocmVhZFJlZik7Cit9CisKK2lu
dCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElELCB2b2lk
KiogcmVzdWx0KQoreworICAgIEFTU0VSVCh0aHJlYWRJRCk7CisKKyAgICBRVGhyZWFkKiB0aHJl
YWQgPSB0aHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKKworICAgIGJvb2wgcmVzID0gdGhy
ZWFkLT53YWl0KCk7CisKKyAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQpOwor
ICAgICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxUaHJlYWRQcml2YXRlKj4odGhyZWFkKS0+Z2V0UmV0
dXJuVmFsdWUoKTsKKworICAgIHJldHVybiAhcmVzOworfQorCit2b2lkIGRldGFjaFRocmVhZChU
aHJlYWRJZGVudGlmaWVyKQoreworfQorCitzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlm
aWVyQnlRdGhyZWFkSGFuZGxlKFFUaHJlYWQqJiB0aHJlYWQpCit7CisgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOworCisgICAgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVy
LCBRVGhyZWFkKj46Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOworICAgIGZvciAo
OyBpICE9IHRocmVhZE1hcCgpLmVuZCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGktPnNlY29uZCA9
PSB0aHJlYWQpCisgICAgICAgICAgICByZXR1cm4gaS0+Zmlyc3Q7CisgICAgfQorCisgICAgcmV0
dXJuIDA7Cit9CisKK1RocmVhZElkZW50aWZpZXIgY3VycmVudFRocmVhZCgpCit7CisgICAgUVRo
cmVhZCogY3VycmVudFRocmVhZCA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKTsKKyAgICBpZiAo
VGhyZWFkSWRlbnRpZmllciBpZCA9IGlkZW50aWZpZXJCeVF0aHJlYWRIYW5kbGUoY3VycmVudFRo
cmVhZCkpCisgICAgICAgIHJldHVybiBpZDsKKyAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmll
ckZvclRocmVhZChjdXJyZW50VGhyZWFkKTsKK30KKworTXV0ZXg6Ok11dGV4KCkKKyAgICA6IG1f
bXV0ZXgobmV3IFFNdXRleCgpKQoreworfQorCitNdXRleDo6fk11dGV4KCkKK3sKKyAgICBkZWxl
dGUgbV9tdXRleDsKK30KKwordm9pZCBNdXRleDo6bG9jaygpCit7CisgICAgbV9tdXRleC0+bG9j
aygpOworfQorCitib29sIE11dGV4Ojp0cnlMb2NrKCkKK3sKKyAgICByZXR1cm4gbV9tdXRleC0+
dHJ5TG9jaygpOworfQordm9pZCBNdXRleDo6dW5sb2NrKCkKK3sKKyAgICBtX211dGV4LT51bmxv
Y2soKTsKK30KKworVGhyZWFkQ29uZGl0aW9uOjpUaHJlYWRDb25kaXRpb24oKQorICAgIDogbV9j
b25kaXRpb24obmV3IFFXYWl0Q29uZGl0aW9uKCkpCit7Cit9CisKK1RocmVhZENvbmRpdGlvbjo6
flRocmVhZENvbmRpdGlvbigpCit7CisgICAgZGVsZXRlIG1fY29uZGl0aW9uOworfQorCit2b2lk
IFRocmVhZENvbmRpdGlvbjo6d2FpdChNdXRleCYgbXV0ZXgpCit7CisgICAgbV9jb25kaXRpb24t
PndhaXQobXV0ZXguaW1wbCgpKTsKK30KKworYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2Fp
dChNdXRleCYgbXV0ZXgsIGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICByZXR1cm4gbV9jb25kaXRp
b24tPndhaXQobXV0ZXguaW1wbCgpLCBpbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGhyZWFkQ29uZGl0
aW9uOjpzaWduYWwoKQoreworICAgIG1fY29uZGl0aW9uLT53YWtlT25lKCk7Cit9CisKK3ZvaWQg
VGhyZWFkQ29uZGl0aW9uOjpicm9hZGNhc3QoKQoreworICAgIG1fY29uZGl0aW9uLT53YWtlQWxs
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="9042"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>