<?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>47751</bug_id>
          
          <creation_ts>2010-10-15 16:30:20 -0700</creation_ts>
          <short_desc>[chromium] Avoid creating excessively large textures for composited layers</short_desc>
          <delta_ts>2010-10-18 16:54:11 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295000</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-15 16:30:20 -0700</bug_when>
    <thetext>Switch the compositor to &quot;large layer&quot; mode when a layer&apos;s size exceeds a reasonable value rather than the max texture size supported by the driver in order to avoid running low on vram on pages that create large layer (zooming in on maps.google.com creates several layers that can be 4Kx4K or bigger).  This is a temporary solution until tiled layers are implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295036</commentid>
    <comment_count>1</comment_count>
      <attachid>70927</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-15 17:25:21 -0700</bug_when>
    <thetext>Created attachment 70927
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295049</commentid>
    <comment_count>2</comment_count>
      <attachid>70927</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-15 17:36:04 -0700</bug_when>
    <thetext>Comment on attachment 70927
Proposed patch

Will layers &gt;2000 pixels wide still work at all?  Monitors that support resolutions higher than that are still somewhat common</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295067</commentid>
    <comment_count>3</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-15 17:57:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 70927 [details])
&gt; Will layers &gt;2000 pixels wide still work at all?  Monitors that support resolutions higher than that are still somewhat common


They should work, as long as they are smaller than the max texture size supported by your driver. 

If you look at the ContentLayerChromium::requiresClippedUpdateRect() we switch to large layer mode when the layer exceeds the larger of 2000 or the browser window&apos;s visible area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295752</commentid>
    <comment_count>4</comment_count>
      <attachid>70927</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-18 14:28:20 -0700</bug_when>
    <thetext>Comment on attachment 70927
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=70927&amp;action=review

R=me

&gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:149
&gt; +    const int maxLayerSize = 2000;

nit: should be static. it&apos;ll probably get inlined anyway</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295759</commentid>
    <comment_count>5</comment_count>
      <attachid>70927</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-18 14:36:17 -0700</bug_when>
    <thetext>Comment on attachment 70927
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=70927&amp;action=review

&gt; WebCore/platform/graphics/chromium/LayerRendererChromium.h:169
&gt;      IntRect m_rootVisibleRect;
&gt;      IntRect m_rootContentRect;
&gt; +    IntRect m_currentScissorRect;
&gt;  

Can we remove m_rootContentRect, then? I think the scissor rect replaces its purpose entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295761</commentid>
    <comment_count>6</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-18 14:39:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 70927 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70927&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/graphics/chromium/LayerRendererChromium.h:169
&gt; &gt;      IntRect m_rootVisibleRect;
&gt; &gt;      IntRect m_rootContentRect;
&gt; &gt; +    IntRect m_currentScissorRect;
&gt; &gt;  
&gt; 
&gt; Can we remove m_rootContentRect, then? I think the scissor rect replaces its purpose entirely.

m_currentScissorRect can actually change while drawing the composited layers (for example when we hit a layer that clips its descendants).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295765</commentid>
    <comment_count>7</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-18 14:43:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 70927 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70927&amp;action=review
&gt; 
&gt; R=me
&gt; 
&gt; &gt; WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:149
&gt; &gt; +    const int maxLayerSize = 2000;
&gt; 
&gt; nit: should be static. it&apos;ll probably get inlined anyway

Good point. I&apos;ll fix that before checking in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295777</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2010-10-18 14:57:56 -0700</bug_when>
    <thetext>&gt; Can we remove m_rootContentRect, then? I think the scissor rect replaces its purpose entirely.

Oops, my mistake.  It&apos;s still getting used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295840</commentid>
    <comment_count>9</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-10-18 16:54:11 -0700</bug_when>
    <thetext>Committed r70010: &lt;http://trac.webkit.org/changeset/70010&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70927</attachid>
            <date>2010-10-15 17:25:21 -0700</date>
            <delta_ts>2010-10-18 14:36:17 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>largeLayerClip_47751.txt</filename>
            <type>text/plain</type>
            <size>11929</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTg5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMTAtMTUgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtjaHJvbWl1bV0gUHJldmVudCB0aGUgY3JlYXRpb24gb2YgdmVyeSBsYXJnZSB0ZXh0
dXJlcyBmb3IgbGF5ZXJzIGJ5IHN3aXRjaGluZworICAgICAgICB0byAibGFyZ2UgbGF5ZXIiIG1v
ZGUgd2hlbiBhIHRleHR1cmUgaXMgbGFyZ2VyIHRoYW4gc29tZSBmaXhlZCByZWFzb25hYmxlIHNp
emUKKyAgICAgICAgKHNldCB0byAyMDAwIHBpeGVscyBmb3Igbm93KS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NzUxCisKKyAgICAgICAgVGhlIGNv
ZGUgYWxzbyBjaGFuZ2VzIHRoZSBsYXJnZSBsYXllciBsb2dpYyB0byB1c2UgdGhlIGN1cnJlbnQg
c2Npc3NvciByZWN0IHVzZWQKKyAgICAgICAgYnkgdGhlIGNvbXBvc2l0b3IgaW5zdGVhZCBvZiB0
aGUgdmlzaWJsZSByZWN0IHRvIGRldGVybWluZSBob3cgdG8gY2xpcCBsYXJnZSBsYXllcnMuCisg
ICAgICAgIFRoaXMgd2lsbCBwcm92aWRlIGFkZGl0aW9uYWwgdGV4dHVyZSBzYXZpbmdzLiBJbiBh
ZGRpdGlvbiwgdGhlIHZhcmlvdXMgbGF5ZXIgcmVjdHMKKyAgICAgICAgaGF2ZSBiZWVuIGNvbnZl
cnRlZCB0byB1c2UgaW50ZWdlcnMgaW5zdGVhZCBvZiBmbG9hdHMgdG8gcHJlc2VydmUgdW5pZm9y
bWl0eSBpbiB0aGUgY29kZS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBFeGlzdGluZyBsYXJn
ZSBsYXllciBsYXlvdXQgdGVzdHMgaW5jbHVkaW5nIGh1Z2UtbGF5ZXIgYW5kIGh1Z2UtbGF5ZXIt
aW1nCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cmVx
dWlyZXNDbGlwcGVkVXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2FsY3VsYXRlQ2xpcHBlZFVwZGF0ZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6Z2V0RHJhd1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc1JlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNjaXNzb3JUb1JlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjdXJyZW50U2Npc3NvclJlY3QpOgorCiAy
MDEwLTEwLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAkocmV2
aXNpb24gNjk4MjIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0MywxMyBAQCB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyCiAKIGJvb2wgQ29udGVudExh
eWVyQ2hyb21pdW06OnJlcXVpcmVzQ2xpcHBlZFVwZGF0ZVJlY3QoKSBjb25zdAogewotICAgIHJl
dHVybiAhbGF5ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKG1fYm91bmRzKTsKKyAgICAv
LyBUbyBhdm9pZCBhbGxvY2F0aW5nIGV4Y2Vzc2l2ZWx5IGxhcmdlIHRleHR1cmVzLCBzd2l0Y2gg
aW50byAibGFyZ2UgbGF5ZXIgbW9kZSIgaWYKKyAgICAvLyBvbmUgb2YgdGhlIGxheWVyJ3MgZGlt
ZW5zaW9ucyBpcyBsYXJnZXIgdGhhbiAyMDAwIHBpeGVscyBvciB0aGUgY3VycmVudCBzaXplCisg
ICAgLy8gb2YgdGhlIHZpc2libGUgcmVjdC4gVGhpcyBpcyBhIHRlbXBvcmFyeSBtZWFzdXJlIHVu
dGlsIGxheWVyIHRpbGluZyBpcyBpbXBsZW1lbnRlZC4KKyAgICBjb25zdCBpbnQgbWF4TGF5ZXJT
aXplID0gMjAwMDsKKyAgICByZXR1cm4gKG1fYm91bmRzLndpZHRoKCkgPiBtYXgobWF4TGF5ZXJT
aXplLCBsYXllclJlbmRlcmVyKCktPnJvb3RMYXllckNvbnRlbnRSZWN0KCkud2lkdGgoKSkKKyAg
ICAgICAgICAgIHx8IG1fYm91bmRzLmhlaWdodCgpID4gbWF4KG1heExheWVyU2l6ZSwgbGF5ZXJS
ZW5kZXJlcigpLT5yb290TGF5ZXJDb250ZW50UmVjdCgpLmhlaWdodCgpKQorICAgICAgICAgICAg
fHwgIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShtX2JvdW5kcykpOwogfQogCiB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjYWxjdWxhdGVDbGlwcGVkVXBkYXRlUmVjdChJbnRS
ZWN0JiBkaXJ0eVJlY3QsIEludFJlY3QmIGRyYXdSZWN0KSBjb25zdApAQCAtMTUyLDcgKzE1OCw3
IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNhbGN1bGF0ZUNsaXAKICAgICAvLyAxKSBU
aGUgbWluaW1hbCB0ZXh0dXJlIHNwYWNlIHJlY3RhbmdsZSB0byBiZSB1cGxvYWRlZCwgcmV0dXJu
ZWQgaW4gZGlydHlSZWN0LgogICAgIC8vIDIpIFRoZSBjb250ZW50IHJlY3QtcmVsYXRpdmUgcmVj
dGFuZ2xlIHRvIGRyYXcgdGhpcyB0ZXh0dXJlIGluLCByZXR1cm5lZCBpbiBkcmF3UmVjdC4KIAot
ICAgIGNvbnN0IEludFJlY3QgY29udGVudFJlY3QgPSBsYXllclJlbmRlcmVyKCktPnJvb3RMYXll
ckNvbnRlbnRSZWN0KCk7CisgICAgY29uc3QgSW50UmVjdCBjbGlwUmVjdCA9IGxheWVyUmVuZGVy
ZXIoKS0+Y3VycmVudFNjaXNzb3JSZWN0KCk7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm0oKTsKICAgICAvLyBUaGUgbGF5ZXIncyBkcmF3
IHRyYW5zZm9ybSBwb2ludHMgdG8gdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIsIHJlbGF0aXZlIHRv
CiAgICAgLy8gdGhlIGNvbnRlbnQgcmVjdC4gIGxheWVyUG9zIGlzIHRoZSBkaXN0YW5jZSBmcm9t
IHRoZSB0b3AgbGVmdCBvZiB0aGUKQEAgLTE2MCw3ICsxNjYsNyBAQCB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpjYWxjdWxhdGVDbGlwCiAgICAgY29uc3QgSW50UG9pbnQgbGF5ZXJQb3MobV9i
b3VuZHMud2lkdGgoKSAvIDIgLSB0cmFuc2Zvcm0ubTQxKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ib3VuZHMuaGVpZ2h0KCkgLyAyIC0gdHJhbnNmb3JtLm00MigpKTsKICAgICAv
LyBUcmFuc2Zvcm0gdGhlIGNvbnRlbnRSZWN0IGludG8gdGhlIHNwYWNlIG9mIHRoZSBsYXllci4K
LSAgICBJbnRSZWN0IGNvbnRlbnRSZWN0SW5MYXllclNwYWNlKGxheWVyUG9zLCBjb250ZW50UmVj
dC5zaXplKCkpOworICAgIEludFJlY3QgY29udGVudFJlY3RJbkxheWVyU3BhY2UobGF5ZXJQb3Ms
IGNsaXBSZWN0LnNpemUoKSk7CiAKICAgICAvLyBDbGlwIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW5z
dCB0aGUgdmlzaWJsZSByZWdpb24gaW4gdGhlIGNvbnRlbnQgcmVjdAogICAgIC8vIGFuZCB1c2Ug
dGhhdCBhcyB0aGUgZHJhd2FibGUgdGV4dHVyZSwgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGxheWVy
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2OTgyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwx
NSArNDUxLDEyIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyKCkKICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
X0xPT1AsIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwgNiAqIHNpemVvZih1
bnNpZ25lZCBzaG9ydCkpKTsKIH0KIAotY29uc3QgRmxvYXRSZWN0IExheWVyQ2hyb21pdW06Omdl
dERyYXdSZWN0KCkgY29uc3QKK2NvbnN0IEludFJlY3QgTGF5ZXJDaHJvbWl1bTo6Z2V0RHJhd1Jl
Y3QoKSBjb25zdAogewogICAgIC8vIEZvcm0gdGhlIG1hdHJpeCB1c2VkIGJ5IHRoZSBzaGFkZXIg
dG8gbWFwIHRoZSBjb3JuZXJzIG9mIHRoZSBsYXllcidzCiAgICAgLy8gYm91bmRzIGludG8gdGhl
IHZpZXcgc3BhY2UuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJh
d1RyYW5zZm9ybSgpOwotICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKGJvdW5kcygpLndpZHRoKCks
IGJvdW5kcygpLmhlaWdodCgpLCAxKTsKLQotICAgIEZsb2F0UmVjdCBsYXllclJlY3QoLTAuNSwg
LTAuNSwgMSwgMSk7Ci0gICAgRmxvYXRSZWN0IG1hcHBlZFJlY3QgPSByZW5kZXJNYXRyaXgubWFw
UmVjdChsYXllclJlY3QpOworICAgIEZsb2F0UmVjdCBsYXllclJlY3QoLTAuNSAqIGJvdW5kcygp
LndpZHRoKCksIC0wLjUgKiBib3VuZHMoKS5oZWlnaHQoKSwgYm91bmRzKCkud2lkdGgoKSwgYm91
bmRzKCkuaGVpZ2h0KCkpOworICAgIEludFJlY3QgbWFwcGVkUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QoZHJhd1RyYW5zZm9ybSgpLm1hcFJlY3QobGF5ZXJSZWN0KSk7CiAgICAgcmV0dXJuIG1hcHBl
ZFJlY3Q7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA2OTgyMikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsNyArMTU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGVudHNEaXJ0eSgpIHsgcmV0dXJu
IG1fY29udGVudHNEaXJ0eTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCBjb250YWludGFp
bmluZyB0aGlzIGxheWVyIGluIHRoZSBjdXJyZW50IHZpZXcncyBjb29yZGluYXRlIHN5c3RlbS4K
LSAgICBjb25zdCBGbG9hdFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdDsKKyAgICBjb25zdCBJbnRS
ZWN0IGdldERyYXdSZWN0KCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxs
eSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDY5ODIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjEsNyArMzIxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnMoYwog
CiAgICAgLy8gRW5hYmxlIHNjaXNzb3JpbmcgdG8gYXZvaWQgcmVuZGVyaW5nIGNvbXBvc2l0ZWQg
bGF5ZXJzIG92ZXIgdGhlIHNjcm9sbGJhcnMuCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwotICAgIEZsb2F0UmVj
dCBzY2lzc29yUmVjdChjb250ZW50UmVjdCk7CisgICAgSW50UmVjdCBzY2lzc29yUmVjdChjb250
ZW50UmVjdCk7CiAKICAgICAvLyBUaGUgc2Npc3NvclJlY3Qgc2hvdWxkIG5vdCBpbmNsdWRlIHRo
ZSBzY3JvbGwgb2Zmc2V0LgogICAgIHNjaXNzb3JSZWN0Lm1vdmUoLW1fc2Nyb2xsUG9zaXRpb24u
eCgpLCAtbV9zY3JvbGxQb3NpdGlvbi55KCkpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKGMKIAogICAgIC8vIFRyYXZlcnNlIHRoZSBs
YXllciB0cmVlIG9uZSBtb3JlIHRpbWUgdG8gZHJhdyB0aGUgbGF5ZXJzLgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3VibGF5ZXJzLnNpemUoKTsgaSsrKQotICAgICAgICBkcmF3TGF5ZXJz
UmVjdXJzaXZlKHN1YmxheWVyc1tpXS5nZXQoKSwgc2Npc3NvclJlY3QpOworICAgICAgICBkcmF3
TGF5ZXJzUmVjdXJzaXZlKHN1YmxheWVyc1tpXS5nZXQoKSk7CiAKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwog
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpKTsKQEAgLTUwMSwxNCArNTAxLDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3TGF5ZXJJbnQKIH0KIAogLy8gUmVjdXJzaXZlbHkgd2FsayB0aGUgbGF5ZXIgdHJlZSBh
bmQgZHJhdyB0aGUgbGF5ZXJzLgotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXll
cnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgc2Npc3Nv
clJlY3QpCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc1JlY3Vyc2l2ZShM
YXllckNocm9taXVtKiBsYXllcikKIHsKICAgICBzdGF0aWMgYm9vbCBkZXB0aFRlc3RFbmFibGVk
Rm9yU3VidHJlZSA9IGZhbHNlOwogICAgIHN0YXRpYyBpbnQgY3VycmVudFN0ZW5jaWxWYWx1ZSA9
IDA7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgbGF5ZXIgZmFsbHMgd2l0aGluIHRoZSB2aXNpYmxl
IGJvdW5kcyBvZiB0aGUgcGFnZS4KLSAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0ID0gbGF5ZXItPmdl
dERyYXdSZWN0KCk7Ci0gICAgYm9vbCBpc0xheWVyVmlzaWJsZSA9IHNjaXNzb3JSZWN0LmludGVy
c2VjdHMobGF5ZXJSZWN0KTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGxheWVyLT5nZXREcmF3
UmVjdCgpOworICAgIGJvb2wgaXNMYXllclZpc2libGUgPSBtX2N1cnJlbnRTY2lzc29yUmVjdC5p
bnRlcnNlY3RzKGxheWVyUmVjdCk7CiAKICAgICAvLyBFbmFibGUgZGVwdGggdGVzdGluZyBmb3Ig
dGhpcyBsYXllciBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBpZiBwcmVzZXJ2ZXMzRCBpcyBzZXQu
CiAgICAgYm9vbCBtdXN0Q2xlYXJEZXB0aCA9IGZhbHNlOwpAQCAtNTI3LDE1ICs1MjcsMTYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcnNSZQogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBjaGVjayBoZXJlIGlmIHRoZSBsYXllciBoYXMgZGVzY2VuZGFudHMgdGhhdCBk
cmF3IGNvbnRlbnQKICAgICAvLyBiZWZvcmUgd2Ugc2V0dXAgZm9yIGNsaXBwaW5nLgotICAgIEZs
b2F0UmVjdCBjdXJyZW50U2Npc3NvclJlY3QgPSBzY2lzc29yUmVjdDsKKyAgICBJbnRSZWN0IHBy
ZXZpb3VzU2Npc3NvclJlY3QgPSBtX2N1cnJlbnRTY2lzc29yUmVjdDsKICAgICBib29sIG11c3RS
ZXNldFNjaXNzb3JSZWN0ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRTdGVuY2lsRHJhdyA9IGZhbHNl
OwogICAgIGlmIChsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CiAgICAgICAgIC8vIElmIHRoZSBs
YXllciBpc24ndCByb3RhdGVkIHRoZW4gd2UgY2FuIHVzZSBzY2lzc29yaW5nIG90aGVyd2lzZSB3
ZSBuZWVkCiAgICAgICAgIC8vIHRvIGNsaXAgdXNpbmcgdGhlIHN0ZW5jaWwgYnVmZmVyLgogICAg
ICAgICBpZiAobGF5ZXItPmRyYXdUcmFuc2Zvcm0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbigp
KSB7CisgICAgICAgICAgICBJbnRSZWN0IGN1cnJlbnRTY2lzc29yUmVjdCA9IHByZXZpb3VzU2Np
c3NvclJlY3Q7CiAgICAgICAgICAgICBjdXJyZW50U2Npc3NvclJlY3QuaW50ZXJzZWN0KGxheWVy
UmVjdCk7Ci0gICAgICAgICAgICBpZiAoY3VycmVudFNjaXNzb3JSZWN0ICE9IHNjaXNzb3JSZWN0
KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudFNjaXNzb3JSZWN0ICE9IHByZXZpb3VzU2Npc3Nv
clJlY3QpIHsKICAgICAgICAgICAgICAgICBzY2lzc29yVG9SZWN0KGN1cnJlbnRTY2lzc29yUmVj
dCk7CiAgICAgICAgICAgICAgICAgbXVzdFJlc2V0U2Npc3NvclJlY3QgPSB0cnVlOwogICAgICAg
ICAgICAgfQpAQCAtNTgwLDExICs1ODEsMTEgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdMYXllcnNSZQogICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KHN1YmxheWVyTGlzdC5iZWdp
bigpLCBzdWJsYXllckxpc3QuZW5kKCksIGNvbXBhcmVMYXllclopOwogCiAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBzdWJsYXllckxpc3Quc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBkcmF3TGF5
ZXJzUmVjdXJzaXZlKHN1YmxheWVyTGlzdFtpXSwgY3VycmVudFNjaXNzb3JSZWN0KTsKKyAgICAg
ICAgICAgIGRyYXdMYXllcnNSZWN1cnNpdmUoc3VibGF5ZXJMaXN0W2ldKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHN1YmxheWVy
cyA9IGxheWVyLT5nZXRTdWJsYXllcnMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdWJsYXllcnMuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBkcmF3TGF5ZXJzUmVjdXJzaXZl
KHN1YmxheWVyc1tpXS5nZXQoKSwgY3VycmVudFNjaXNzb3JSZWN0KTsKKyAgICAgICAgICAgIGRy
YXdMYXllcnNSZWN1cnNpdmUoc3VibGF5ZXJzW2ldLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAo
ZGlkU3RlbmNpbERyYXcpIHsKQEAgLTYwMCw3ICs2MDEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd0xheWVyc1JlCiAgICAgfQogCiAgICAgaWYgKG11c3RSZXNldFNjaXNzb3JS
ZWN0KSB7Ci0gICAgICAgIHNjaXNzb3JUb1JlY3Qoc2Npc3NvclJlY3QpOworICAgICAgICBzY2lz
c29yVG9SZWN0KHByZXZpb3VzU2Npc3NvclJlY3QpOwogICAgIH0KIAogICAgIGlmIChtdXN0Q2xl
YXJEZXB0aCkgewpAQCAtNjM2LDExICs2MzcsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdMYXllcihMYQogCiAvLyBTZXRzIHRoZSBzY2lzc29yIHJlZ2lvbiB0byB0aGUgZ2l2
ZW4gcmVjdGFuZ2xlLiBUaGUgY29vcmRpbmF0ZSBzeXN0ZW0gZm9yIHRoZQogLy8gc2Npc3NvclJl
Y3QgaGFzIGl0cyBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCB2
aXNpYmxlIHJlY3QuCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2Npc3NvclRvUmVjdChj
b25zdCBGbG9hdFJlY3QmIHNjaXNzb3JSZWN0KQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiB7CiAgICAgLy8gQ29t
cHV0ZSB0aGUgbG93ZXIgbGVmdCBjb3JuZXIgb2YgdGhlIHNjaXNzb3IgcmVjdC4KLSAgICBmbG9h
dCBib3R0b20gPSBzdGQ6Om1heCgoZmxvYXQpbV9yb290VmlzaWJsZVJlY3QuaGVpZ2h0KCkgLSBz
Y2lzc29yUmVjdC5ib3R0b20oKSwgMC5mKTsKKyAgICBpbnQgYm90dG9tID0gc3RkOjptYXgobV9y
b290VmlzaWJsZVJlY3QuaGVpZ2h0KCkgLSBzY2lzc29yUmVjdC5ib3R0b20oKSwgMCk7CiAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5zY2lzc29yKHNjaXNzb3JSZWN0LngoKSwgYm90dG9t
LCBzY2lzc29yUmVjdC53aWR0aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOworICAgIG1fY3Vy
cmVudFNjaXNzb3JSZWN0ID0gc2Npc3NvclJlY3Q7CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjptYWtlQ29udGV4dEN1cnJlbnQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCShy
ZXZpc2lvbiA2OTgyMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIGNyZWF0ZUxheWVyVGV4dHVyZSgpOwogICAgIHZvaWQgZGVsZXRl
TGF5ZXJUZXh0dXJlKHVuc2lnbmVkKTsKIAorICAgIEludFJlY3QgY3VycmVudFNjaXNzb3JSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U2Npc3NvclJlY3Q7IH0KKwogICAgIHN0YXRpYyB2
b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgY2hhciogY29tbWFuZCwg
Y29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb25NYXRy
aXg7IH0KQEAgLTExNiw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVMYXll
cnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXJlbnRNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOwogCi0gICAgdm9pZCBkcmF3TGF5ZXJz
UmVjdXJzaXZlKExheWVyQ2hyb21pdW0qLCBjb25zdCBGbG9hdFJlY3QmIHNjaXNzb3JSZWN0KTsK
KyAgICB2b2lkIGRyYXdMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSopOwogCiAgICAgdm9p
ZCBkcmF3TGF5ZXIoTGF5ZXJDaHJvbWl1bSopOwogCkBAIC0xMjQsNyArMTI2LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZHJhd0xheWVySW50b1N0ZW5jaWxCdWZmZXIoTGF5ZXJDaHJvbWl1bSos
IGJvb2wgZGVjcmVtZW50KTsKIAotICAgIHZvaWQgc2Npc3NvclRvUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKKyAgICB2b2lkIHNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIApAQCAtMTYzLDYgKzE2NSw3IEBAIHByaXZhdGU6CiAK
ICAgICBJbnRSZWN0IG1fcm9vdFZpc2libGVSZWN0OwogICAgIEludFJlY3QgbV9yb290Q29udGVu
dFJlY3Q7CisgICAgSW50UmVjdCBtX2N1cnJlbnRTY2lzc29yUmVjdDsKIAogICAgIGludCBtX21h
eFRleHR1cmVTaXplOwogCg==
</data>
<flag name="review"
          id="60862"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>