<?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>66154</bug_id>
          
          <creation_ts>2011-08-12 12:21:35 -0700</creation_ts>
          <short_desc>Ownership of canvas&apos;s GraphicsContext3D should be moved to PlatformContextSkia</short_desc>
          <delta_ts>2011-08-12 20:26:57 -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>New Bugs</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="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>jamesr</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450554</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 12:21:35 -0700</bug_when>
    <thetext>Ownership of canvas&apos;s GraphicsContext3D should be moved to PlatformContextSkia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450555</commentid>
    <comment_count>1</comment_count>
      <attachid>103790</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 12:22:30 -0700</bug_when>
    <thetext>Created attachment 103790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450580</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 12:43:28 -0700</bug_when>
    <thetext>The purpose of this patch is to allow a PlatformContextSkia to &quot;de-accelerate&quot; itself if DrawingBuffer FBO creation fails.  This will allow us to delay FBO creation until the first drawing call (in a future patch).  To do this, the &quot;ownership&quot; of the GraphicsContext3D is moved into PlatformContextSkia (in fact, it doesn&apos;t own anything at all and remains a bare pointer, but one that can be set to NULL to indicate de-acceleration).

One major change it makes is that the GraphicsContext3D used for canvas2d is now a function-static, created when the first accelerated canvas is created, and is not destroyed until the renderer process exits.  This also means the GPU process will stay alive until that renderer exits as well.  This allows us to easily handle the case of canvas 2D&apos;s ImageBuffer (and GraphicsContext and PlatformContext) destruction and re-creation: we know the context will remain alive over reset, and won&apos;t incur a performance penalty.  I think this is acceptable, since as we move to more and more accelerated rendering, the GPU process will be hanging around more often anyway, but I welcome your feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450649</commentid>
    <comment_count>3</comment_count>
      <attachid>103790</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-12 13:59:42 -0700</bug_when>
    <thetext>Comment on attachment 103790
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:40
&gt; +    static RefPtr&lt;GraphicsContext3D&gt; context = GraphicsContext3D::create(attributes, window);

What happens if the window that the GraphicsContext3D is initially created against goes away?

What happens if the GPU process crashes (context is lost)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450651</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-08-12 14:02:00 -0700</bug_when>
    <thetext>For offscreen contexts it doesn&apos;t matter what HostWindow is used to create the context and it doesn&apos;t matter if/when the HostWindow goes away.

I&apos;m pretty sure we make no attempt to recover from a GPU process crash in the canvas path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450658</commentid>
    <comment_count>5</comment_count>
      <attachid>103790</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 14:07:26 -0700</bug_when>
    <thetext>Comment on attachment 103790
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:40
&gt;&gt; +    static RefPtr&lt;GraphicsContext3D&gt; context = GraphicsContext3D::create(attributes, window);
&gt; 
&gt; What happens if the window that the GraphicsContext3D is initially created against goes away?
&gt; 
&gt; What happens if the GPU process crashes (context is lost)?

Good questions.

All canvases in the same rendering process currently use the same context (not new to this patch), which means the hostWindow is &quot;wrong&quot; for some of them.  Apparently, that is ok since the only thing it&apos;s used for at creation is to get the active URL for logging.  (Looking a bit further, it seems we also use it to determine of accelerated compositing is active.  I&apos;m not sure if we ever get into a state where that WebViewImpl can be non-composited while the original one was, not sure, but also not new to this patch).

Canvas in general cannot handle context loss, and sets the appropriate flag in context creation, but I&apos;m not sure if we should be doing something further.  I&apos;ll try nuking the GPU process before and after this patch to see if there&apos;s something I missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450660</commentid>
    <comment_count>6</comment_count>
      <attachid>103790</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-12 14:11:45 -0700</bug_when>
    <thetext>Comment on attachment 103790
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp:40
&gt;&gt;&gt; +    static RefPtr&lt;GraphicsContext3D&gt; context = GraphicsContext3D::create(attributes, window);
&gt;&gt; 
&gt;&gt; What happens if the window that the GraphicsContext3D is initially created against goes away?
&gt;&gt; 
&gt;&gt; What happens if the GPU process crashes (context is lost)?
&gt; 
&gt; Good questions.
&gt; 
&gt; All canvases in the same rendering process currently use the same context (not new to this patch), which means the hostWindow is &quot;wrong&quot; for some of them.  Apparently, that is ok since the only thing it&apos;s used for at creation is to get the active URL for logging.  (Looking a bit further, it seems we also use it to determine of accelerated compositing is active.  I&apos;m not sure if we ever get into a state where that WebViewImpl can be non-composited while the original one was, not sure, but also not new to this patch).
&gt; 
&gt; Canvas in general cannot handle context loss, and sets the appropriate flag in context creation, but I&apos;m not sure if we should be doing something further.  I&apos;ll try nuking the GPU process before and after this patch to see if there&apos;s something I missed.

OK. Please give this a little stress testing but otherwise this sounds fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450794</commentid>
    <comment_count>7</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 20:25:49 -0700</bug_when>
    <thetext>Just to verify:  killing the GPU process causes accelerated canvases to go blank, both before and after this patch.  Reloading the tab brings them back.

Ideally, it would be nice to drop to software in that case, but I that can wait for another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450795</commentid>
    <comment_count>8</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-08-12 20:26:57 -0700</bug_when>
    <thetext>Committed r93013: &lt;http://trac.webkit.org/changeset/93013&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103790</attachid>
            <date>2011-08-12 12:22:30 -0700</date>
            <delta_ts>2011-08-12 14:11:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66154-20110812152228.patch</filename>
            <type>text/plain</type>
            <size>12284</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyOTc5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMTIgIFN0ZXBoZW4g
V2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT3duZXJzaGlwIG9m
IGNhbnZhcydzIEdyYXBoaWNzQ29udGV4dDNEIHNob3VsZCBiZSBtb3ZlZCB0byBQbGF0Zm9ybUNv
bnRleHRTa2lhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NjE1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgaW4gZmFzdC9jYW52YXMgYW5kIGNhbnZhcy9waGls
aXAuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc0FjY2VsZXJh
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFpbnRz
SW50b0NhbnZhc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNsZWFyQWNjZWxlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6cmVzZXRBY2NlbGVyYXRpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmlzQWNjZWxlcmF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6cGFpbnRzSW50b0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVk
R3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Ojppc0FjY2VsZXJhdGVkQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnBhaW50c0ludG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa0JpdG1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnBhaW50c0ludG9JbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjppc0FjY2VsZXJh
dGVkKToKKwogMjAxMS0wOC0xMiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEZpeCBtYWMgYnVpbGQgd2hlbiB3ZWIgYXVkaW8gaXMgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCShyZXZpc2lvbiA5Mjk3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3
ICsxODMsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNBY2NlbGVyCiAgICAg
SW1hZ2VCdWZmZXIqIGJ1ZmZlciA9IGNhbnZhcygpLT5idWZmZXIoKTsKICAgICByZXR1cm4gYnVm
ZmVyID8gYnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkgOiBmYWxzZTsKICNlbGlmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCi0gICAgcmV0dXJuIG1fY29udGV4dDNEOworICAgIHJldHVybiBk
cmF3aW5nQ29udGV4dCgpICYmIGRyYXdpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMTkyLDggKzE5Miw4IEBA
IGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc0FjY2VsZXIKIGJvb2wgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotICAgIGlmIChtX2NvbnRleHQzRCkKLSAgICAg
ICAgcmV0dXJuIG1fY29udGV4dDNELT5jb250ZXh0KCktPnBhaW50c0ludG9DYW52YXNCdWZmZXIo
KTsKKyAgICBpZiAoZHJhd2luZ0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGRyYXdpbmdDb250
ZXh0KCktPnBhaW50c0ludG9JbWFnZUJ1ZmZlcigpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMDI5LDcgKzIwMjksNiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y2xlYXJBY2NlCiAgICAgICAgIGN0eC0+c2V0R3JhcGhpY3NDb250ZXh0M0QoMCwgMCwgSW50U2l6
ZSgpKTsKIAogICAgIG1fZHJhd2luZ0J1ZmZlci5jbGVhcigpOwotICAgIG1fY29udGV4dDNELmNs
ZWFyKCk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldEFjY2VsZXJh
dGlvbigpCkBAIC0yMDQ2LDEzICsyMDQ1LDExIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpyZXNldEFjY2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9jb250
ZXh0M0QpIHsKLSAgICAgICAgUGFnZSogcGFnZSA9IGNhbnZhcygpLT5kb2N1bWVudCgpLT5wYWdl
KCk7Ci0gICAgICAgIG1fY29udGV4dDNEID0gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZShwYWdlLT5jaHJvbWUoKSk7Ci0gICAgICAgIGlmICghbV9jb250ZXh0M0QpIHsKLSAgICAgICAg
ICAgIGNsZWFyQWNjZWxlcmF0aW9uKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
KyAgICBQYWdlKiBwYWdlID0gY2FudmFzKCktPmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNEID0gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZShwYWdlLT5jaHJvbWUoKSk7CisgICAgaWYgKCFjb250ZXh0M0QpIHsKKyAgICAgICAgY2xlYXJB
Y2NlbGVyYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2RyYXdp
bmdCdWZmZXIpIHsKQEAgLTIwNjEsMTQgKzIwNTgsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnJlc2V0QWNjZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyID0gbV9jb250ZXh0M0QtPmNvbnRleHQo
KS0+Y3JlYXRlRHJhd2luZ0J1ZmZlcihjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICAgICAgbV9kcmF3
aW5nQnVmZmVyID0gY29udGV4dDNELT5jcmVhdGVEcmF3aW5nQnVmZmVyKGNhbnZhcygpLT5zaXpl
KCkpOwogICAgICAgICBpZiAoIW1fZHJhd2luZ0J1ZmZlcikgewogICAgICAgICAgICAgY2xlYXJB
Y2NlbGVyYXRpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGN0eC0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QtPmNvbnRleHQoKSwgbV9k
cmF3aW5nQnVmZmVyLmdldCgpLCBjYW52YXMoKS0+c2l6ZSgpKTsKKyAgICBjdHgtPnNldEdyYXBo
aWNzQ29udGV4dDNEKGNvbnRleHQzRCwgbV9kcmF3aW5nQnVmZmVyLmdldCgpLCBjYW52YXMoKS0+
c2l6ZSgpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkocmV2aXNpb24gOTI5NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzA3LDcgKzMwNyw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKQogICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBtX2RyYXdp
bmdCdWZmZXI7Ci0gICAgUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQz
RDsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA5Mjk3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5MCw2ICs2OTAsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEdyYXBo
aWNzQ29udGV4dAogfQogI2VuZGlmCiAKKyNpZiAhVVNFKFNLSUEpICYmICFVU0UoQ0cpCitib29s
IEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgIVVTRShTS0lBKQorYm9vbCBHcmFwaGljc0Nv
bnRleHQ6OnBhaW50c0ludG9JbWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisjZW5kaWYKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkanVzdExpbmVUb1BpeGVsQm91
bmRhcmllcyhGbG9hdFBvaW50JiBwMSwgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHN0cm9rZVdpZHRo
LCBTdHJva2VTdHlsZSBwZW5TdHlsZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiA5Mjk3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzMsOCArMjczLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzQ0FMYXllckNvbnRleHQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldElzQWNj
ZWxlcmF0ZWRDb250ZXh0KGJvb2wpOwotICAgICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkgY29uc3Q7CiAjZW5kaWYKKyAgICAgICAgYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNv
bnN0OworICAgICAgICBib29sIHBhaW50c0ludG9JbWFnZUJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
ICAgIHZvaWQgc2F2ZSgpOwogICAgICAgICB2b2lkIHJlc3RvcmUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gOTI5NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwzNSArMzAsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
aGFyZWRHcmFwaGljc0NvbnRleHQzRCogU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OnNfaW5zdGFu
Y2UgPSAwOwotCi1QYXNzUmVmUHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKEhvc3RXaW5kb3cqIHdpbmRvdykKK0dyYXBoaWNzQ29udGV4
dDNEKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEhvc3RXaW5kb3cqIHdpbmRvdykK
IHsKLSAgICBpZiAoc19pbnN0YW5jZSkgewotICAgICAgICBzX2luc3RhbmNlLT5yZWYoKTsgLy8g
TWFudWFsbHkgaW5jcmVtZW50IHJlZmNvdW50IGZvciB0aGlzIGNhbGxlciBzaW5jZSBhZG9wdFJl
ZigpIGRvZXMgbm90IGluY3JlYXNlIHRoZSByZWZjb3VudC4KLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKHNfaW5zdGFuY2UpOwotICAgIH0KICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMuZGVwdGggPSBmYWxzZTsKICAgICBhdHRyaWJ1
dGVzLnN0ZW5jaWwgPSB0cnVlOwogICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAg
ICAgYXR0cmlidXRlcy5jYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzID0gZmFsc2U7IC8vIENhbnZh
cyBjb250ZXh0cyBjYW4gbm90IGhhbmRsZSBsb3N0IGNvbnRleHRzLgotICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cmli
dXRlcywgd2luZG93KTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPigpOwotICAgIFJlZlB0cjxTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRD4gc2hhcmVkQ29udGV4dCA9IGFkb3B0UmVmKG5ldyBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRChjb250ZXh0LnJlbGVhc2UoKSkpOwotICAgIHNfaW5zdGFuY2UgPSBzaGFyZWRDb250
ZXh0LmdldCgpOwotICAgIHJldHVybiBzaGFyZWRDb250ZXh0OwotfQotCi1TaGFyZWRHcmFwaGlj
c0NvbnRleHQzRDo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQotewotfQotCi1TaGFy
ZWRHcmFwaGljc0NvbnRleHQzRDo6flNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKLXsKLSAgICBz
X2luc3RhbmNlID0gMDsKKyAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250
ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShhdHRyaWJ1dGVzLCB3aW5kb3cpOworICAg
IHJldHVybiBjb250ZXh0LmdldCgpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0QuaAkocmV2aXNpb24gOTI5NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTggKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEPiB7
CitjbGFzcyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZShIb3N0V2luZG93Kik7Ci0g
ICAgflNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQotCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+KTsKLQotICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gbV9jb250ZXh0Owot
ICAgIHN0YXRpYyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRCogc19pbnN0YW5jZTsKKyAgICBzdGF0
aWMgR3JhcGhpY3NDb250ZXh0M0QqIGNyZWF0ZShIb3N0V2luZG93Kik7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDkyOTc4KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwMyw5ICsxMjAzLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0
cmFuc2xhdGUoZmxvYXQgdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJDb3JlRmxvYXRUb1NrU2NhbGFyKGgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBEcmF3
aW5nQnVmZmVyKiBmcmFtZWJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
LSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0R3JhcGhpY3NDb250ZXh0M0QoY29udGV4dCwgZnJh
bWVidWZmZXIsIHNpemUpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHcmFwaGljc0NvbnRl
eHQzRChjb250ZXh0LCBkcmF3aW5nQnVmZmVyLCBzaXplKTsKK30KKworYm9vbCBHcmFwaGljc0Nv
bnRleHQ6OmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGxhdGZv
cm1Db250ZXh0KCktPmlzQWNjZWxlcmF0ZWQoKTsKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQ6
OnBhaW50c0ludG9JbWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBsYXRmb3JtQ29u
dGV4dCgpLT5wYWludHNJbnRvSW1hZ2VCdWZmZXIoKTsKIH0KIAogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKSAmJiBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiA5Mjk3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U2tCaXRtYXAoUGxhdGZv
cm1Db250ZXgKICAgICBTa0NhbnZhcyogY2FudmFzID0gcGxhdGZvcm1Db250ZXh0LT5jYW52YXMo
KTsKIAogICAgIFJlc2FtcGxpbmdNb2RlIHJlc2FtcGxpbmc7Ci0gICAgaWYgKHBsYXRmb3JtQ29u
dGV4dC0+dXNlU2tpYUdQVSgpKQorICAgIGlmIChwbGF0Zm9ybUNvbnRleHQtPmlzQWNjZWxlcmF0
ZWQoKSkKICAgICAgICAgcmVzYW1wbGluZyA9IFJFU0FNUExFX0xJTkVBUjsKICAgICBlbHNlCiAg
ICAgICAgIHJlc2FtcGxpbmcgPSBwbGF0Zm9ybUNvbnRleHQtPnByaW50aW5nKCkgPyBSRVNBTVBM
RV9OT05FIDoKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQqCiAKICAgICAvLyBDb21wdXRlIHRoZSByZXNhbXBsaW5nIG1vZGUuCiAgICAg
UmVzYW1wbGluZ01vZGUgcmVzYW1wbGluZzsKLSAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPnVzZVNraWFHUFUoKSkKKyAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmlzQWNjZWxlcmF0ZWQoKSkKICAgICAgICAgcmVzYW1wbGluZyA9IFJFU0FNUExFX0xJTkVBUjsK
ICAgICBlbHNlIHsKICAgICAgICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmlu
dGluZygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0
Zm9ybUNvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA5Mjk3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NSw3ICs1NzUsNyBAQCBib29sIFBsYXRmb3Jt
Q29udGV4dFNraWE6OmlzTmF0aXZlRm9udFJlCiAjaWYgRU5BQkxFKFNLSUFfVEVYVCkKICAgICBy
ZXR1cm4gZmFsc2U7CiAjZWxzZQotICAgIGlmICh1c2VTa2lhR1BVKCkpCisgICAgaWYgKGlzQWNj
ZWxlcmF0ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBza2lhOjpTdXBw
b3J0c1BsYXRmb3JtUGFpbnQobV9jYW52YXMpOwogI2VuZGlmCkBAIC02ODIsNCArNjgyLDkgQEAg
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjptYWtlR3JDb250ZXh0QwogICAgICAgICBtX2dwdUNv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogfQogCitib29sIFBsYXRmb3JtQ29udGV4dFNr
aWE6OnBhaW50c0ludG9JbWFnZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3B1Q29u
dGV4dCA/IG1fZ3B1Q29udGV4dC0+cGFpbnRzSW50b0NhbnZhc0J1ZmZlcigpIDogdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJl
dmlzaW9uIDkyOTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw4ICsxNzcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckltYWdlUmVzYW1wbGluZ0hpbnQoKTsKICAgICBib29sIGhh
c0ltYWdlUmVzYW1wbGluZ0hpbnQoKSBjb25zdDsKIAotICAgIGJvb2wgdXNlU2tpYUdQVSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3B1Q29udGV4dDsgfQorICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3B1Q29udGV4dDsgfQogICAgIHZvaWQgc2V0R3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0QqLCBEcmF3aW5nQnVmZmVyKiwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIGJvb2wgcGFpbnRzSW50b0ltYWdlQnVmZmVyKCkgY29uc3Q7CiAgICAgdm9pZCBtYWtlR3JD
b250ZXh0Q3VycmVudCgpOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="99517"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>