<?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>130990</bug_id>
          
          <creation_ts>2014-03-31 15:19:56 -0700</creation_ts>
          <short_desc>Double-buffer RemoteLayerBackingStore</short_desc>
          <delta_ts>2014-03-31 16:01:09 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996022</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 15:19:56 -0700</bug_when>
    <thetext>We&apos;ll keep a front and back buffer for each surface; the front is generally currently
being displayed in the UI process, and the back is the one we&apos;ll paint into.

Swap the two surfaces each time we paint; since we synchronize with the UI process,
the old front surface will generally be out-of-use by the render server by the time
we paint again. However, since render server commits are asynchronous and we have 
no way to syncronize with them yet, we have to check if the (swapped to front) back buffer is in use,
and create a new front buffer if it is.

Triple-buffering would solve this problem, as would synchronization with the render server,
as would a pool of surfaces - we will revisit these solutions in future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996023</commentid>
    <comment_count>1</comment_count>
      <attachid>228209</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 15:20:44 -0700</bug_when>
    <thetext>Created attachment 228209
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996035</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 16:01:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/166541</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228209</attachid>
            <date>2014-03-31 15:20:44 -0700</date>
            <delta_ts>2014-03-31 15:36:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0005-Double-buffer-RemoteLayerBackingStore-if-possible.patch</filename>
            <type>text/plain</type>
            <size>10826</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSBlZGEzYmE4ZWE4NThiY2FiOGE3NjA5MTNhMjRkOTYwYzU1OGYyYjQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IFN1biwgMzAgTWFyIDIwMTQgMjA6MzQ6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIIDA1
LzEwXSBEb3VibGUtYnVmZmVyIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGlmIHBvc3NpYmxlCgot
LS0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
MzggKysrKysrKysrKwogLi4uL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oICAgfCAgOCArLQogLi4uL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSAgfCA4NiArKysrKysrKysrKy0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs
IDg4IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwODg2NTE0
Li4wMzU5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQgQEAKIDIwMTQtMDMtMzAgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgRG91YmxlLWJ1ZmZl
ciBSZW1vdGVMYXllckJhY2tpbmdTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2UnbGwga2VlcCBhIGZyb250IGFuZCBiYWNrIGJ1ZmZlciBmb3Ig
ZWFjaCBzdXJmYWNlOyB0aGUgZnJvbnQgaXMgZ2VuZXJhbGx5IGN1cnJlbnRseQorICAgICAgICBi
ZWluZyBkaXNwbGF5ZWQgaW4gdGhlIFVJIHByb2Nlc3MsIGFuZCB0aGUgYmFjayBpcyB0aGUgb25l
IHdlJ2xsIHBhaW50IGludG8uCisKKyAgICAgICAgU3dhcCB0aGUgdHdvIHN1cmZhY2VzIGVhY2gg
dGltZSB3ZSBwYWludDsgc2luY2Ugd2Ugc3luY2hyb25pemUgd2l0aCB0aGUgVUkgcHJvY2VzcywK
KyAgICAgICAgdGhlIG9sZCBmcm9udCBzdXJmYWNlIHdpbGwgZ2VuZXJhbGx5IGJlIG91dC1vZi11
c2UgYnkgdGhlIHJlbmRlciBzZXJ2ZXIgYnkgdGhlIHRpbWUKKyAgICAgICAgd2UgcGFpbnQgYWdh
aW4uIEhvd2V2ZXIsIHNpbmNlIHJlbmRlciBzZXJ2ZXIgY29tbWl0cyBhcmUgYXN5bmNocm9ub3Vz
IGFuZCB3ZSBoYXZlIAorICAgICAgICBubyB3YXkgdG8gc3luY3Jvbml6ZSB3aXRoIHRoZW0geWV0
LCB3ZSBoYXZlIHRvIGNoZWNrIGlmIHRoZSAoc3dhcHBlZCB0byBmcm9udCkgYmFjayBidWZmZXIg
aXMgaW4gdXNlLAorICAgICAgICBhbmQgY3JlYXRlIGEgbmV3IGZyb250IGJ1ZmZlciBpZiBpdCBp
cy4KKworICAgICAgICBUcmlwbGUtYnVmZmVyaW5nIHdvdWxkIHNvbHZlIHRoaXMgcHJvYmxlbSwg
YXMgd291bGQgc3luY2hyb25pemF0aW9uIHdpdGggdGhlIHJlbmRlciBzZXJ2ZXIsCisgICAgICAg
IGFzIHdvdWxkIGEgcG9vbCBvZiBzdXJmYWNlcyAtIHdlIHdpbGwgcmV2aXNpdCB0aGVzZSBzb2x1
dGlvbnMgaW4gZnV0dXJlIHBhdGNoZXMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgRmFjdG9yIGNsZWFyQmFja2luZ1N0b3JlKCkgb3V0IG9mIGVuc3Vy
ZUJhY2tpbmdTdG9yZSgpIGFuZCBkaXNwbGF5KCkuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgU3dhcCBidWZmZXJzLiBTaW5jZSBtX2JhY2tT
dXJmYWNlIHdpbGwgaG9sZCBvbiB0byB0aGUgYmFjayBzdXJmYWNlJ3MgQ0dDb250ZXh0LAorICAg
ICAgICB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRlYXJpbmcgZG93biB0aGUgaW1hZ2Ug
Zmlyc3QgYW55bW9yZS4KKyAgICAgICAgRG9uJ3Qgd29ycnkgYWJvdXQgY3JlYXRpbmcgYSBiYWNr
IGltYWdlIChub3IgY29weWluZyBpdCBpbnRvIHRoZSBmcm9udCBpbWFnZSkKKyAgICAgICAgaWYg
d2UncmUgZ29pbmcgdG8gcGFpbnQgdGhlIHdob2xlIGxheWVyLgorCisgICAgICAgIChSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgIEZpeCBzb21lIG5hbWVz
LgorCisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVU
b0xheWVyKToKKyAgICAgICAgUmVkdWNlIGR1cGxpY2F0aW9uLgorCisgICAgICAgIChSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6Y3JlYXRlSW1hZ2VGb3JGcm9udEJ1ZmZlcik6IERlbGV0ZWQuCisK
KzIwMTQtMDMtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgU3luY2hyb25pemUgV2ViIHByb2Nlc3MgcmVtb3RlIGxheWVyIHRyZWUgY29tbWl0cyB3
aXRoIENvcmVBbmltYXRpb24gY29tbWl0cyBpbiB0aGUgVUkgcHJvY2VzcwogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDkzZDI2MTAuLjI4YWY3MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgcmV0dXJu
ICEhbV9mcm9udEJ1ZmZlcjsKICAgICB9Ci1wcml2YXRlOgotICAgIHZvaWQgZHJhd0luQ29udGV4
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBDR0ltYWdlUmVmIGZyb250SW1hZ2UpOwogCi0g
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlRm9yRnJvbnRCdWZmZXIoKSBjb25z
dDsKK3ByaXZhdGU6CisgICAgdm9pZCBkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIENHSW1hZ2VSZWYgYmFja0ltYWdlKTsKKyAgICB2b2lkIGNsZWFyQmFja2luZ1N0b3Jl
KCk7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbGF5ZXI7CiAKQEAgLTg5LDggKzg5
LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVnaW9uIG1fZGlydHlSZWdpb247CiAKICAg
ICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2Zyb250QnVmZmVyOworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IG1fYmFja0J1ZmZlcjsKICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIFJlZlB0
cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1fZnJvbnRTdXJmYWNlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJT1N1cmZhY2U+IG1fYmFja1N1cmZhY2U7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9hY2NlbGVy
YXRlc0RyYXdpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA2N2RhOWViLi41NmU1OTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAg
LTY4LDEwICs2OCwxNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNr
aW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllciwgSQogICAgIG1fYWNjZWxlcmF0
ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5nOwogICAgIG1faXNPcGFxdWUgPSBpc09wYXF1
ZTsKIAorICAgIGNsZWFyQmFja2luZ1N0b3JlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKK3sKICNpZiBVU0UoSU9TVVJGQUNFKQogICAg
IG1fZnJvbnRTdXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX2JhY2tTdXJmYWNlID0gbnVsbHB0cjsK
ICNlbmRpZgogICAgIG1fZnJvbnRCdWZmZXIgPSBudWxscHRyOworICAgIG1fYmFja0J1ZmZlciA9
IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTE0MSwxNSArMTQ4LDYgQEAgdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0TmVlZHNEaXNwbGF5KCkKICAgICBzZXROZWVk
c0Rpc3BsYXkoSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKIH0KIAotUmV0YWluUHRyPENH
SW1hZ2VSZWY+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpjcmVhdGVJbWFnZUZvckZyb250QnVm
ZmVyKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fZnJvbnRCdWZmZXIgfHwgbV9hY2NlbGVyYXRlc0Ry
YXdpbmcpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgQ29weT8KLSAgICByZXR1cm4gbV9mcm9udEJ1ZmZlci0+bWFrZUNHSW1hZ2VDb3B5KCk7Ci19
Ci0KIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIGlmICgh
bV9sYXllcikKQEAgLTE1OSwyMCArMTU3LDE2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogICAgIC8vIHRvIG5vdGUgdGhhdCBvdXIgYmFja2luZyBzdG9yZSBoYXMg
YmVlbiBjbGVhcmVkLgogICAgIGlmICghbV9sYXllci0+b3duZXIoKSB8fCAhbV9sYXllci0+b3du
ZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgYm9vbCBwcmV2
aW91c2x5RHJld0NvbnRlbnRzID0gaGFzRnJvbnRCdWZmZXIoKTsKLQotICAgICAgICBtX2Zyb250
QnVmZmVyID0gbnVsbHB0cjsKLSNpZiBVU0UoSU9TVVJGQUNFKQotICAgICAgICBtX2Zyb250U3Vy
ZmFjZSA9IG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICBjbGVhckJhY2tpbmdTdG9yZSgpOwog
ICAgICAgICByZXR1cm4gcHJldmlvdXNseURyZXdDb250ZW50czsKICAgICB9CiAKICAgICBpZiAo
bV9kaXJ0eVJlZ2lvbi5pc0VtcHR5KCkgfHwgbV9zaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2ludCgpLCBtX3NpemUp
OwogICAgIGlmICghaGFzRnJvbnRCdWZmZXIoKSkKLSAgICAgICAgbV9kaXJ0eVJlZ2lvbi51bml0
ZShJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkpOworICAgICAgICBtX2RpcnR5UmVnaW9uLnVu
aXRlKGxheWVyQm91bmRzKTsKIAogICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKICAgICAgICAgSW50UmVjdCBpbmRp
Y2F0b3JSZWN0KDAsIDAsIDUyLCAyNyk7CkBAIC0xODMsMjQgKzE3NywyNyBAQCBib29sIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICBzY2FsZWRTaXplLnNjYWxlKG1fc2Nh
bGUpOwogICAgIEludFNpemUgZXhwYW5kZWRTY2FsZWRTaXplID0gZXhwYW5kZWRJbnRTaXplKHNj
YWxlZFNpemUpOwogCisgICAgYm9vbCB3aWxsUGFpbnRFbnRpcmVCYWNraW5nU3RvcmUgPSBtX2Rp
cnR5UmVnaW9uLmJvdW5kcygpLmNvbnRhaW5zKGxheWVyQm91bmRzKTsKICNpZiBVU0UoSU9TVVJG
QUNFKQogICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykgewotICAgICAgICBSZWZQdHI8SU9T
dXJmYWNlPiBiYWNrU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGV4cGFuZGVkU2NhbGVkU2l6
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IGJhY2tTdXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKKyAgICAgICAgc3RkOjpz
d2FwKG1fZnJvbnRTdXJmYWNlLCBtX2JhY2tTdXJmYWNlKTsKKworICAgICAgICBpZiAoIW1fZnJv
bnRTdXJmYWNlIHx8IG1fZnJvbnRTdXJmYWNlLT5pc0luVXNlKCkpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIGRpc2NhcmRpbmcgaXQsIHB1dCB0aGUgdW51c2FibGUgaW4tdXNl
IHN1cmZhY2UgaW50byBhIHBvb2wgZm9yIGZ1dHVyZSB1c2UuCisgICAgICAgICAgICBtX2Zyb250
U3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIH0KKworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
YmFja0ltYWdlOworICAgICAgICBpZiAobV9iYWNrU3VyZmFjZSAmJiAhd2lsbFBhaW50RW50aXJl
QmFja2luZ1N0b3JlKQorICAgICAgICAgICAgYmFja0ltYWdlID0gbV9iYWNrU3VyZmFjZS0+Y3Jl
YXRlSW1hZ2UoKTsKKworICAgICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250
U3VyZmFjZS0+ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgICAgIGNvbnRleHQuY2xlYXJS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGV4cGFuZGVkU2NhbGVkU2l6ZSkpOwogICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtZXhwYW5kZWRTY2FsZWRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgZHJhd0luQ29u
dGV4dChjb250ZXh0LCBiYWNrSW1hZ2UuZ2V0KCkpOwogCi0gICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBmcm9udEltYWdlOwotICAgICAgICBpZiAobV9mcm9udFN1cmZhY2UpCi0gICAgICAg
ICAgICBmcm9udEltYWdlID0gbV9mcm9udFN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7Ci0gICAgICAg
IGRyYXdJbkNvbnRleHQoY29udGV4dCwgZnJvbnRJbWFnZS5nZXQoKSk7Ci0KLSAgICAgICAgLy8g
SWYgb3VyIGZyb250SW1hZ2UgaXMgZGVyaXZlZCBmcm9tIGFuIElPU3VyZmFjZSwgd2UgbmVlZCB0
bwotICAgICAgICAvLyBkZXN0cm95IHRoZSBpbWFnZSBiZWZvcmUgdGhlIENHQ29udGV4dCBpdCdz
IGRlcml2ZWQgZnJvbSwKLSAgICAgICAgLy8gc28gdGhhdCB0aGUgY29udGV4dCBkb2Vzbid0IG1h
a2UgYSBDUFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgotICAgICAgICBmcm9udEltYWdlID0g
bnVsbHB0cjsKLSAgICAgICAgbV9mcm9udFN1cmZhY2UgPSBiYWNrU3VyZmFjZTsKKyAgICAgICAg
bV9mcm9udFN1cmZhY2UtPmNsZWFyR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMjA4LDE1ICsyMDUsMjEgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7CiAj
ZW5kaWYKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBmcm9udEltYWdlID0gY3JlYXRlSW1h
Z2VGb3JGcm9udEJ1ZmZlcigpOwotICAgIG1fZnJvbnRCdWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNpemUsIG1faXNPcGFxdWUgPyBTaGFyZWFi
bGVCaXRtYXA6Ok5vRmxhZ3MgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAg
IHN0ZDo6c3dhcChtX2Zyb250QnVmZmVyLCBtX2JhY2tCdWZmZXIpOworICAgIGlmICghbV9mcm9u
dEJ1ZmZlcikKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgbV9pc09wYXF1ZSA/IFNoYXJlYWJsZUJpdG1h
cDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fZnJvbnRCdWZmZXItPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGRyYXdJbkNvbnRleHQoKmNvbnRleHQsIGZyb250SW1h
Z2UuZ2V0KCkpOworCisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGJhY2tJbWFnZTsKKyAgICBp
ZiAobV9iYWNrQnVmZmVyICYmICF3aWxsUGFpbnRFbnRpcmVCYWNraW5nU3RvcmUpCisgICAgICAg
IGJhY2tJbWFnZSA9IG1fYmFja0J1ZmZlci0+bWFrZUNHSW1hZ2UoKTsKKworICAgIGRyYXdJbkNv
bnRleHQoKmNvbnRleHQsIGJhY2tJbWFnZS5nZXQoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBDR0ltYWdlUmVmIGZyb250SW1hZ2UpCit2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Q0dJbWFnZVJlZiBiYWNrSW1hZ2UpCiB7CiAgICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2lu
dCgpLCBtX3NpemUpOwogICAgIEludFJlY3Qgc2NhbGVkTGF5ZXJCb3VuZHMoSW50UG9pbnQoKSwg
ZXhwYW5kZWRJbnRTaXplKG1fc2l6ZSAqIG1fc2NhbGUpKTsKQEAgLTIyNyw2ICsyMzAsNyBAQCB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgIC8vIHRoYW4gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRo
cmVzaG9sZCBvZiB0aGUgdG90YWwgZGlydHkgYXJlYSwgd2UnbGwgcmVwYWludCBlYWNoIHJlY3Qg
c2VwYXJhdGVseS4KICAgICAvLyBPdGhlcndpc2UsIHJlcGFpbnQgdGhlIGVudGlyZSBib3VuZGlu
ZyBib3ggb2YgdGhlIGRpcnR5IHJlZ2lvbi4KICAgICBJbnRSZWN0IGRpcnR5Qm91bmRzID0gbV9k
aXJ0eVJlZ2lvbi5ib3VuZHMoKTsKKwogICAgIFZlY3RvcjxJbnRSZWN0PiBkaXJ0eVJlY3RzID0g
bV9kaXJ0eVJlZ2lvbi5yZWN0cygpOwogICAgIGlmIChkaXJ0eVJlY3RzLnNpemUoKSA+IHdlYkxh
eWVyTWF4UmVjdHNUb1BhaW50IHx8IG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPiB3ZWJMYXll
cldhc3RlZFNwYWNlVGhyZXNob2xkICogZGlydHlCb3VuZHMud2lkdGgoKSAqIGRpcnR5Qm91bmRz
LmhlaWdodCgpKSB7CiAgICAgICAgIGRpcnR5UmVjdHMuY2xlYXIoKTsKQEAgLTI0OCw3ICsyNTIs
NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgICAgICBjZ1BhaW50aW5nUmVjdHNbaV0g
PSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFBhaW50aW5nUmVjdCk7CiAgICAgfQogCi0gICAgaWYg
KGZyb250SW1hZ2UpIHsKKyAgICBpZiAoYmFja0ltYWdlKSB7CiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY2dDb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNnQ29u
dGV4dCwga0NHQmxlbmRNb2RlQ29weSk7CiAKQEAgLTI1OCw3ICsyNjIsNyBAQCB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgQ0dJbWFnZVJlZgogCiAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjZ0NvbnRleHQs
IDAsIHNjYWxlZExheWVyQm91bmRzLmhlaWdodCgpKTsKICAgICAgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY2dDb250ZXh0LCAxLCAtMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRl
eHQsIHNjYWxlZExheWVyQm91bmRzLCBmcm9udEltYWdlKTsKKyAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNnQ29udGV4dCwgc2NhbGVkTGF5ZXJCb3VuZHMsIGJhY2tJbWFnZSk7CiAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKICAgICB9CiAKQEAgLTMwOSwxNSAr
MzEzLDE1IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllcikKIHsKKyAg
ICBsYXllci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CisKICNpZiBVU0UoSU9TVVJGQUNF
KQotICAgIGlmIChhY2NlbGVyYXRlc0RyYXdpbmcoKSkKKyAgICBpZiAoYWNjZWxlcmF0ZXNEcmF3
aW5nKCkpIHsKICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpbV9mcm9udFN1cmZhY2UtPnN1
cmZhY2UoKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLmNvbnRlbnRzID0gKGlkKWNyZWF0ZUlt
YWdlRm9yRnJvbnRCdWZmZXIoKS5nZXQoKTsKLSNlbHNlCi0gICAgQVNTRVJUKCFhY2NlbGVyYXRl
c0RyYXdpbmcoKSk7Ci0gICAgbGF5ZXIuY29udGVudHMgPSAoaWQpY3JlYXRlSW1hZ2VGb3JGcm9u
dEJ1ZmZlcigpLmdldCgpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKLSAgICBs
YXllci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgQVNTRVJUKCFhY2NlbGVyYXRl
c0RyYXdpbmcoKSk7CisgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpbV9mcm9udEJ1ZmZlci0+bWFr
ZUNHSW1hZ2VDb3B5KCkuZ2V0KCk7CiB9Ci0tIAoxLjguNS4yIChBcHBsZSBHaXQtNDgpCgo=
</data>
<flag name="review"
          id="252497"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>