<?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>24864</bug_id>
          
          <creation_ts>2009-03-26 17:44:13 -0700</creation_ts>
          <short_desc>Tidy up some accelerated compositing code related to direct image compositing</short_desc>
          <delta_ts>2009-03-26 18:12:32 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>115456</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-03-26 17:44:13 -0700</bug_when>
    <thetext>We have some cleanup of code related to &quot;direct compositing&quot; of images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115457</commentid>
    <comment_count>1</comment_count>
      <attachid>28995</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-03-26 17:46:44 -0700</bug_when>
    <thetext>Created attachment 28995
Patch, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115462</commentid>
    <comment_count>2</comment_count>
      <attachid>28995</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-26 18:03:31 -0700</bug_when>
    <thetext>Comment on attachment 28995
Patch, changelog

&gt; -// A layer can use an inner content layer if the render layer&apos;s object is a replaced object and has no children.
&gt; +// A layer can use direct composoting if the render layer&apos;s object is a replaced object and has no children.

Typo here.

&gt; +void RenderLayerBacking::updateImageContents()
&gt; +{
&gt; +    ASSERT(renderer()-&gt;isImage());
&gt; +    RenderImage* imageRenderer = static_cast&lt;RenderImage*&gt;(renderer());
&gt; +    if (imageRenderer-&gt;cachedImage() &amp;&amp;
&gt; +        imageRenderer-&gt;cachedImage()-&gt;image() &amp;&amp;
&gt; +        imageRenderer-&gt;cachedImage()-&gt;isLoaded()) {
&gt; +        // We have to wait until the image is fully loaded before setting it on the layer.
&gt; +        
&gt; +        // This is a no-op if the layer doesn&apos;t have an inner layer for the image.
&gt; +        m_graphicsLayer-&gt;setContentsToImage(imageRenderer-&gt;cachedImage()-&gt;image());
&gt; +        
&gt; +        // Image animation is &quot;lazy&quot;, in that it automatically stops unless someone is drawing
&gt; +        // the image. So we have to kick the animation each time; this has the downside that the
&gt; +        // image will keep animating, even if its layer is not visible.
&gt; +        imageRenderer-&gt;cachedImage()-&gt;image()-&gt;startAnimation();
&gt;      }
&gt;  }

Now that this is in its own function, you can use early returns to get rid of that cascaded &amp;&amp;, make space to comment about each return if you like, and even put things into local variables instead of repeating imageRenderer-&gt;cachedImage()-&gt;image(). Look how attractive it is!

    CachedImage* cachedImage = imageRenderer-&gt;cachedImage();
    if (!cachedImage)
        return;

    Image* image = cachedImage-&gt;image();
    if (!image)
        return;

    // We have to wait until the image is fully loaded before setting it on the layer.
    if (!cachedImage-&gt;isLoaded())
        return;

    // This is a no-op if the layer doesn&apos;t have an inner layer for the image.
    m_graphicsLayer-&gt;setContentsToImage(image);

    // Image animation is &quot;lazy&quot;, in that it automatically stops unless someone is drawing
    // the image. So we have to kick the animation each time; this has the downside that the
    // image will keep animating, even if its layer is not visible.
    image)-&gt;startAnimation();

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115465</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-03-26 18:12:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42024</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28995</attachid>
            <date>2009-03-26 17:46:44 -0700</date>
            <delta_ts>2009-03-26 18:03:31 -0700</delta_ts>
            <desc>Patch, changelog</desc>
            <filename>24864_patch.txt</filename>
            <type>text/plain</type>
            <size>10196</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmYwYzJmYi4uNmI2ZWIwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOSBAQAogMjAwOS0wMy0yNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDg2NAorCisgICAgICAgIENoYW5nZSB0aGUgdGVybWlub2xvZ3kgZnJvbSAi
aW5uZXIgY29udGVudCBsYXllciIgdG8gImRpcmVjdCBjb21wb3NpdGluZyIKKyAgICAgICAgZm9y
IGNhc2VzIHdoZXJlIHdlIGNhbiBwdXNoIGFuIGltYWdlIGRpcmVjdGx5IG92ZXIgdG8gdGhlIGNv
bXBvc2l0aW5nIHN5c3RlbSwKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHJhdyBpdC4KKyAg
ICAgICAgCisgICAgICAgIENsZWFuIHVwIG11Y2ggb2YgdGhlIGNvZGUgd2hpY2ggbG9va3MgYXQg
c3R5bGUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgcG9zc2libGUsCisgICAgICAgIGFuZCBmaXgg
c29tZSBidWdzIHdoZW4gYmFja2dyb3VuZHMgY2hhbmdlIGR5bmFtaWNhbGx5LgorICAgICAgICAK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Omhhc0JvcmRlck91dGxpbmVPclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpoYXNC
b3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpoYXNCb3hEZWNvcmF0aW9uc1dpdGhC
YWNrZ3JvdW5kSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpj
YW5CZVNpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpjYW5Vc2VEaXJlY3RDb21wb3NpdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmRldGVjdERyYXdpbmdPcHRpbWl6YXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKwor
MjAwOS0wMy0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CiAgICAgICAgIAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MTQKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGY2MWI5NzYuLjg3YWI0ZjAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzkxLDE1ICszOTEsMTkgQEAgZmxvYXQg
UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wb3NpdGluZ09wYWNpdHkoZmxvYXQgcmVuZGVyZXJPcGFj
aXR5KSBjb25zdAogICAgIHJldHVybiBmaW5hbE9wYWNpdHk7CiB9CiAKLS8vIEEgc2ltcGxlIGJh
Y2tncm91bmQgaXMgZWl0aGVyIG5vbmUgb3IgYSBzb2xpZCBjb2xvci4KLXN0YXRpYyBib29sIGhh
c1NpbXBsZUJhY2tncm91bmQoUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIGJvb2wgaGFzQm9y
ZGVyT3V0bGluZU9yU2hhZG93KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gIXN0eWxlLT5oYXNCYWNrZ3JvdW5kSW1hZ2UoKTsKKyAgICByZXR1cm4gc3R5bGUtPmhhc0Jv
cmRlcigpIHx8IHN0eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSB8fCBzdHlsZS0+aGFzT3V0bGluZSgp
IHx8IHN0eWxlLT5oYXNBcHBlYXJhbmNlKCkgfHwgc3R5bGUtPmJveFNoYWRvdygpOwogfQogCi1z
dGF0aWMgYm9vbCBoYXNCb3JkZXJPdXRsaW5lT3JTaGFkb3coUmVuZGVyU3R5bGUqIHN0eWxlKQor
c3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ewotICAgIHJldHVybiAoc3R5bGUtPmhhc0JvcmRlcigpIHx8IHN0eWxlLT5oYXNCb3JkZXJSYWRp
dXMoKSB8fCBzdHlsZS0+aGFzT3V0bGluZSgpIHx8IChzdHlsZS0+Ym94U2hhZG93KCkgIT0gMCkp
OworICAgIHJldHVybiBoYXNCb3JkZXJPdXRsaW5lT3JTaGFkb3coc3R5bGUpIHx8IHN0eWxlLT5o
YXNCYWNrZ3JvdW5kKCk7Cit9CisKK3N0YXRpYyBib29sIGhhc0JveERlY29yYXRpb25zV2l0aEJh
Y2tncm91bmRJbWFnZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCit7CisgICAgcmV0dXJuIGhh
c0JvcmRlck91dGxpbmVPclNoYWRvdyhzdHlsZSkgfHwgc3R5bGUtPmhhc0JhY2tncm91bmRJbWFn
ZSgpOwogfQogCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJIYXNCYWNrZ3JvdW5k
KCkgY29uc3QKQEAgLTQ1NCw4ICs0NTgsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6Y2Fu
QmVTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgY29uc3QKICAgICAvLyBSZWplY3Qg
YW55dGhpbmcgdGhhdCBoYXMgYSBib3JkZXIsIGEgYm9yZGVyLXJhZGl1cyBvciBvdXRsaW5lLAog
ICAgIC8vIG9yIGFueSBiYWNrZ3JvdW5kIChjb2xvciBvciBpbWFnZSkuCiAgICAgLy8gRklYTUU6
IHdlIGNvdWxkIG9wdGltaXplIGxheWVycyBmb3Igc2ltcGxlIGJhY2tncm91bmRzLgotICAgIGlm
IChoYXNCb3JkZXJPdXRsaW5lT3JTaGFkb3coc3R5bGUpIHx8Ci0gICAgICAgIHN0eWxlLT5oYXNC
YWNrZ3JvdW5kKCkpCisgICAgaWYgKGhhc0JveERlY29yYXRpb25zKHN0eWxlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBnb3QgdGhpcyBmYXIgYW5kIHRoZSBy
ZW5kZXJlciBoYXMgbm8gY2hpbGRyZW4sIHRoZW4gd2UncmUgb2suCkBAIC00NzIsOCArNDc1LDcg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmNhbkJlU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRp
bmdMYXllcigpIGNvbnN0CiAgICAgICAgIAogICAgICAgICAvLyBSZWplY3QgYW55dGhpbmcgdGhh
dCBoYXMgYSBib3JkZXIsIGEgYm9yZGVyLXJhZGl1cyBvciBvdXRsaW5lLAogICAgICAgICAvLyBv
ciBpcyBub3QgYSBzaW1wbGUgYmFja2dyb3VuZCAobm8gYmFja2dyb3VuZCwgb3Igc29saWQgY29s
b3IpLgotICAgICAgICBpZiAoaGFzQm9yZGVyT3V0bGluZU9yU2hhZG93KHN0eWxlKSB8fAotICAg
ICAgICAgICAgIWhhc1NpbXBsZUJhY2tncm91bmQoc3R5bGUpKQorICAgICAgICBpZiAoaGFzQm94
RGVjb3JhdGlvbnNXaXRoQmFja2dyb3VuZEltYWdlKHN0eWxlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBsb29rIGF0IHRoZSBib2R5J3MgcmVu
ZGVyZXIuCkBAIC00ODQsOCArNDg2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmNhbkJl
U2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiAgICAgICAgIAogICAgICAg
ICBzdHlsZSA9IGJvZHlPYmplY3QtPnN0eWxlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoaGFz
Qm9yZGVyT3V0bGluZU9yU2hhZG93KHN0eWxlKSB8fAotICAgICAgICAgICAgIWhhc1NpbXBsZUJh
Y2tncm91bmQoc3R5bGUpKQorICAgICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnNXaXRoQmFja2dy
b3VuZEltYWdlKHN0eWxlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAv
LyBDZWNrIHRvIHNlZSBpZiBhbGwgdGhlIGJvZHkncyBjaGlsZHJlbiBhcmUgY29tcG9zaXRpbmcg
bGF5ZXJzLgpAQCAtNTU1LDM0ICs1NTYsMjQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Omhh
c05vbkNvbXBvc2l0aW5nQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0v
LyBBIGxheWVyIGNhbiB1c2UgYW4gaW5uZXIgY29udGVudCBsYXllciBpZiB0aGUgcmVuZGVyIGxh
eWVyJ3Mgb2JqZWN0IGlzIGEgcmVwbGFjZWQgb2JqZWN0IGFuZCBoYXMgbm8gY2hpbGRyZW4uCisv
LyBBIGxheWVyIGNhbiB1c2UgZGlyZWN0IGNvbXBvc290aW5nIGlmIHRoZSByZW5kZXIgbGF5ZXIn
cyBvYmplY3QgaXMgYSByZXBsYWNlZCBvYmplY3QgYW5kIGhhcyBubyBjaGlsZHJlbi4KIC8vIFRo
aXMgYWxsb3dzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRpc3BsYXkgdGhlIFJlbmRlckxheWVyIGNv
bnRlbnRzIGRpcmVjdGx5OyBpdCdzIHVzZWQgZm9yIGltYWdlcy4KLWJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpjYW5Vc2VJbm5lckNvbnRlbnRMYXllcigpIGNvbnN0Citib29sIFJlbmRlckxheWVy
QmFja2luZzo6Y2FuVXNlRGlyZWN0Q29tcG9zaXRpbmcoKSBjb25zdAogewogICAgIFJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0ID0gcmVuZGVyZXIoKTsKICAgICAKLSAgICAvLyBSZWplY3QgYW55
dGhpbmcgdGhhdCBpc24ndCBhIFJlbmRlclJlcGxhY2VkLgotICAgIGlmICghcmVuZGVyT2JqZWN0
LT5pc1JlcGxhY2VkKCkpCisgICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBSZW5k
ZXJSZXBsYWNlZCwgYW5kIG5vdCBhbiBpbWFnZSBvciB2aWRlbworICAgIGlmICghcmVuZGVyT2Jq
ZWN0LT5pc1JlcGxhY2VkKCkgfHwgKCFyZW5kZXJPYmplY3QtPmlzSW1hZ2UoKSAmJiAhcmVuZGVy
T2JqZWN0LT5pc1ZpZGVvKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KHJlbmRlck9iamVjdC0+aGFzTWFzaygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpOwotICAgIAotICAg
IC8vIFJlamVjdCBhbnl0aGluZyB0aGF0IGhhcyBhIGJhY2tncm91bmQgb3RoZXIgdGhhbiBhIHNv
bGlkIGNvbG9yLgotICAgIGlmICghaGFzU2ltcGxlQmFja2dyb3VuZChzdHlsZSkpCisgICAgaWYg
KHJlbmRlck9iamVjdC0+aGFzTWFzaygpIHx8IHJlbmRlck9iamVjdC0+aGFzUmVmbGVjdGlvbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgLy8gT25seSBvcHRpbWl6ZSBpbWFn
ZXMgdGhhdCBhcmUgdW5hZG9ybmVkLgotICAgIGlmIChyZW5kZXJPYmplY3QtPmlzSW1hZ2UoKSkK
LSAgICAgICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaGFzIGEgYm9yZGVyLCBhIGJvcmRlci1y
YWRpdXMsIG91dGxpbmUsIG1hcmdpbiBvciBwYWRkaW5nLgotICAgICAgICByZXR1cm4gIWhhc0Jv
cmRlck91dGxpbmVPclNoYWRvdyhzdHlsZSkgJiYgIXN0eWxlLT5oYXNNYXJnaW4oKSAmJiAhc3R5
bGUtPmhhc1BhZGRpbmcoKTsKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gUmVqZWN0
IGFueXRoaW5nIHRoYXQgd291bGQgcmVxdWlyZSB0aGUgaW1hZ2UgdG8gYmUgZHJhd24gdmlhIHRo
ZSBHcmFwaGljc0NvbnRleHQsCisgICAgLy8gbGlrZSBib3JkZXIsIHNoYWRvd3MgZXRjLiBTb2xp
ZCBiYWNrZ3JvdW5kIGNvbG9yIGlzIE9LLgorICAgIHJldHVybiAhaGFzQm94RGVjb3JhdGlvbnNX
aXRoQmFja2dyb3VuZEltYWdlKHJlbmRlck9iamVjdC0+c3R5bGUoKSk7CiB9CiAgICAgCi0gICAg
CiAvLyBBICJzaW1wbGUgY29udGFpbmVyIGxheWVyIiBpcyBhIFJlbmRlckxheWVyIHdoaWNoIGhh
cyBubyB2aXNpYmxlIGNvbnRlbnQgdG8gcmVuZGVyLgogLy8gSXQgbWF5IGhhdmUgbm8gY2hpbGRy
ZW4sIG9yIGFsbCBpdHMgY2hpbGRyZW4gbWF5IGJlIHRoZW1zZWx2ZXMgY29tcG9zaXRlZC4KIC8v
IFRoaXMgaXMgYSB1c2VmdWwgb3B0aW1pemF0aW9uLCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBh
dm9pZCBhbGxvY2F0aW5nIGJhY2tpbmcgc3RvcmUuCkBAIC02MDEsMzAgKzU5MiwyMyBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6ZGV0ZWN0RHJhd2luZ09wdGltaXphdGlvbnMoKQogICAgIGJv
b2wgZHJhd3NDb250ZW50ID0gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGlmIGEgcmVwbGFjZWQgbGF5
ZXIgY2FuIGJlIGZ1cnRoZXIgc2ltcGxpZmllZC4KLSAgICBib29sIGhhc0ltYWdlQmFja2dyb3Vu
ZENvbG9yID0gZmFsc2U7Ci0gICAgaWYgKGNhblVzZUlubmVyQ29udGVudExheWVyKCkpIHsKKyAg
ICBpZiAoY2FuVXNlRGlyZWN0Q29tcG9zaXRpbmcoKSkgewogICAgICAgICBpZiAocmVuZGVyZXIo
KS0+aXNJbWFnZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2VSZW5kZXJlciA9
IChSZW5kZXJJbWFnZSopcmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmIChpbWFnZVJlbmRlcmVy
ICYmIGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCkgJiYgaW1hZ2VSZW5kZXJlci0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlckNvbnRlbnRDaGFuZ2Vk
KCk7Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIHVwZGF0ZUltYWdlQ29udGVudHMoKTsKICAg
ICAgICAgICAgIGRyYXdzQ29udGVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAocmVuZGVyZXJIYXNCYWNrZ3JvdW5kKCkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVy
SGFzQmFja2dyb3VuZCgpKQogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IocmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKSk7Ci0gICAgICAgICAgICBoYXNJbWFn
ZUJhY2tncm91bmRDb2xvciA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5jbGVhckJhY2tncm91bmRDb2xvcigpOworCiAgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5jbGVhckJhY2tncm91bmRDb2xvcigpOwog
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPmNsZWFyQ29udGVudHMoKTsKLSAgICAgICAgZHJhd3ND
b250ZW50ID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc1NpbXBsZUNvbnRhaW5lckNv
bXBvc2l0aW5nTGF5ZXIoKSkKICAgICAgICAgICAgIGRyYXdzQ29udGVudCA9IGZhbHNlOwotICAg
ICAgICBlbHNlIGlmICghaGFzSW1hZ2VCYWNrZ3JvdW5kQ29sb3IpIHsKLSAgICAgICAgICAgIC8v
IENsZWFyIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGluIGNhc2Ugd2UgYXJlIHN3YXBwaW5nIGF3YXkg
ZnJvbSBhIHNpbXBsZSBsYXllci4KLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+Y2xlYXJC
YWNrZ3JvdW5kQ29sb3IoKTsKLSAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAocGFpbnRp
bmdHb2VzVG9XaW5kb3coKSkKQEAgLTY0MCwyMiArNjI0LDI2IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjppbnZhbGlkYXRlRHJhd2luZ09wdGltaXphdGlvbnMoKQogCiB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKGNhblVzZUlu
bmVyQ29udGVudExheWVyKCkgJiYgcmVuZGVyZXIoKS0+aXNJbWFnZSgpKSB7Ci0gICAgICAgIFJl
bmRlckltYWdlKiBpbWFnZVJlbmRlcmVyID0gKFJlbmRlckltYWdlKilyZW5kZXJlcigpOwotICAg
ICAgICBpZiAoaW1hZ2VSZW5kZXJlciAmJgotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+Y2Fj
aGVkSW1hZ2UoKSAmJgotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKS0+
aW1hZ2UoKSAmJgotICAgICAgICAgICAgaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKS0+aXNM
b2FkZWQoKSkgewotICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBpbWFn
ZSBpcyBmdWxseSBsb2FkZWQgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIGxheWVyLgotICAgICAg
ICAgICAgCi0gICAgICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNu
J3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgICAgICAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2Uo
KS0+aW1hZ2UoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEltYWdlIGFuaW1hdGlv
biBpcyAibGF6eSIsIGluIHRoYXQgaXQgYXV0b21hdGljYWxseSBzdG9wcyB1bmxlc3Mgc29tZW9u
ZSBpcyBkcmF3aW5nCi0gICAgICAgICAgICAvLyB0aGUgaW1hZ2UuIFNvIHdlIGhhdmUgdG8ga2lj
ayB0aGUgYW5pbWF0aW9uIGVhY2ggdGltZTsgdGhpcyBoYXMgdGhlIGRvd25zaWRlIHRoYXQgdGhl
Ci0gICAgICAgICAgICAvLyBpbWFnZSB3aWxsIGtlZXAgYW5pbWF0aW5nLCBldmVuIGlmIGl0cyBs
YXllciBpcyBub3QgdmlzaWJsZS4KLSAgICAgICAgICAgIGltYWdlUmVuZGVyZXItPmNhY2hlZElt
YWdlKCktPmltYWdlKCktPnN0YXJ0QW5pbWF0aW9uKCk7Ci0gICAgICAgIH0KKyAgICBpZiAoY2Fu
VXNlRGlyZWN0Q29tcG9zaXRpbmcoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAg
IHVwZGF0ZUltYWdlQ29udGVudHMoKTsKK30KKwordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUltYWdlQ29udGVudHMoKQoreworICAgIEFTU0VSVChyZW5kZXJlcigpLT5pc0ltYWdlKCkp
OworICAgIFJlbmRlckltYWdlKiBpbWFnZVJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1h
Z2UqPihyZW5kZXJlcigpKTsKKyAgICBpZiAoaW1hZ2VSZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKSAm
JgorICAgICAgICBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpICYmCisgICAg
ICAgIGltYWdlUmVuZGVyZXItPmNhY2hlZEltYWdlKCktPmlzTG9hZGVkKCkpIHsKKyAgICAgICAg
Ly8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBmdWxseSBsb2FkZWQgYmVmb3Jl
IHNldHRpbmcgaXQgb24gdGhlIGxheWVyLgorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpcyBh
IG5vLW9wIGlmIHRoZSBsYXllciBkb2Vzbid0IGhhdmUgYW4gaW5uZXIgbGF5ZXIgZm9yIHRoZSBp
bWFnZS4KKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2VS
ZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisgICAgICAgIAorICAgICAgICAvLyBJ
bWFnZSBhbmltYXRpb24gaXMgImxhenkiLCBpbiB0aGF0IGl0IGF1dG9tYXRpY2FsbHkgc3RvcHMg
dW5sZXNzIHNvbWVvbmUgaXMgZHJhd2luZworICAgICAgICAvLyB0aGUgaW1hZ2UuIFNvIHdlIGhh
dmUgdG8ga2ljayB0aGUgYW5pbWF0aW9uIGVhY2ggdGltZTsgdGhpcyBoYXMgdGhlIGRvd25zaWRl
IHRoYXQgdGhlCisgICAgICAgIC8vIGltYWdlIHdpbGwga2VlcCBhbmltYXRpbmcsIGV2ZW4gaWYg
aXRzIGxheWVyIGlzIG5vdCB2aXNpYmxlLgorICAgICAgICBpbWFnZVJlbmRlcmVyLT5jYWNoZWRJ
bWFnZSgpLT5pbWFnZSgpLT5zdGFydEFuaW1hdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAppbmRleCA0OTZmNDQ1Li40NmI4MWFkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMTQwLDcgKzE0MCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKTsKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgd2UgY2FuIG9wdGltaXplIHRoZSBSZW5kZXJMYXllciB0byBkcmF3
IHRoZSByZXBsYWNlZCBjb250ZW50CiAgICAgLy8gZGlyZWN0bHkgaW50byBhIGNvbXBvc2l0aW5n
IGJ1ZmZlcgotICAgIGJvb2wgY2FuVXNlSW5uZXJDb250ZW50TGF5ZXIoKSBjb25zdDsKKyAgICBi
b29sIGNhblVzZURpcmVjdENvbXBvc2l0aW5nKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVJbWFn
ZUNvbnRlbnRzKCk7CiAKICAgICBib29sIHJlbmRlcmVySGFzQmFja2dyb3VuZCgpIGNvbnN0Owog
ICAgIGNvbnN0IENvbG9yJiByZW5kZXJlckJhY2tncm91bmRDb2xvcigpIGNvbnN0Owo=
</data>
<flag name="review"
          id="14351"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>