<?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>51498</bug_id>
          
          <creation_ts>2010-12-22 14:53:44 -0800</creation_ts>
          <short_desc>Avoid decoding images twice in texImage2D</short_desc>
          <delta_ts>2011-04-01 15:28:34 -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>WebGL</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="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>jbauman</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325712</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-12-22 14:53:44 -0800</bug_when>
    <thetext>Maybe postpone the decoding of an image until it&apos;s accessed?

This needs to be very careful as it affects the HTMLImageElement behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325721</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-12-22 15:07:21 -0800</bug_when>
    <thetext>Could you expand upon the bug description? In the situation where we are supposed to skip the browser&apos;s normal color processing (i.e, premultiplication of alpha), then a WebGL-specific decode step is necessary. What could be avoided is the &quot;normal&quot; decode step for the HTMLImageElement, since these images likely won&apos;t be displayed on the page; that step could be made lazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376944</commentid>
    <comment_count>2</comment_count>
      <attachid>87666</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-03-30 22:07:49 -0700</bug_when>
    <thetext>Created attachment 87666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376945</commentid>
    <comment_count>3</comment_count>
      <attachid>87667</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-03-30 22:11:25 -0700</bug_when>
    <thetext>Created attachment 87667
This only helps when the image is opaque or the texture is premultiplied, but that&apos;s pretty often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377119</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-03-31 06:56:16 -0700</bug_when>
    <thetext>This looks good.  Are you planning to do the similar thing on the Mac/cg port also?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377313</commentid>
    <comment_count>5</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-03-31 10:35:32 -0700</bug_when>
    <thetext>Ideally yes, although CGImage doesn&apos;t have that nice isOpaque function, so figuring that out might be a bit more difficult (or not, I&apos;m not sure if it would be safe for BitmapImage::frameHasAlphaAtIndex to be public).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377413</commentid>
    <comment_count>6</comment_count>
      <attachid>87667</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-31 13:48:57 -0700</bug_when>
    <thetext>Comment on attachment 87667
This only helps when the image is opaque or the texture is premultiplied, but that&apos;s pretty often.

This looks good, but could you please either:
 - File another bug about fixing the CG port, or
 - Look further into how to make this work for CG

Another option would be to try to pass down a flag from a higher level about whether alpha is present. In particular, for JPEGs there is definitely no alpha channel.

Also, do you have any measurements of how much faster this makes texture uploads to WebGL when the new code path is taken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377832</commentid>
    <comment_count>7</comment_count>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-04-01 09:04:17 -0700</bug_when>
    <thetext>It looks like making BitmapImage::frameHasAlphaAtIndex public will work, so I&apos;ll just add CG support to this patch.

Times for doing texImage2D from 1000 images go from 5200 ms (jpeg to premultiplied), 4200 ms (jpeg to non-premultiplied), 9300 ms (png to premultiplied) and 8400 ms (png to nonpremultiplied) down to 1900ms, 2400ms, 4000ms, 8400 ms, respectively. On skia we even get a performance gain for pngs that have alpha channels but no transparent pixels, but unfortunately we can&apos;t get that gain on CG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377858</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-01 09:38:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; It looks like making BitmapImage::frameHasAlphaAtIndex public will work, so I&apos;ll just add CG support to this patch.
&gt; 
&gt; Times for doing texImage2D from 1000 images go from 5200 ms (jpeg to premultiplied), 4200 ms (jpeg to non-premultiplied), 9300 ms (png to premultiplied) and 8400 ms (png to nonpremultiplied) down to 1900ms, 2400ms, 4000ms, 8400 ms, respectively. On skia we even get a performance gain for pngs that have alpha channels but no transparent pixels, but unfortunately we can&apos;t get that gain on CG.

That&apos;s fantastic. Thanks for tracking down this horrible inefficiency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377876</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-01 09:58:45 -0700</bug_when>
    <thetext>Great job.  Once the patch lands, could you please open another bug to track the &quot;png to nonpremultiplied&quot; optimization?  We still decode twice on these situations and we don&apos;t have to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377939</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-01 11:27:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Great job.  Once the patch lands, could you please open another bug to track the &quot;png to nonpremultiplied&quot; optimization?  We still decode twice on these situations and we don&apos;t have to.

The difficulty there will be getting the PNG decoded in the background with the options desired for WebGL. The background decompression premultiplies the alpha channel into the color channels. I don&apos;t think we can change that without imposing a severe performance penalty for all web content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377941</commentid>
    <comment_count>11</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-01 11:31:02 -0700</bug_when>
    <thetext>We might be able to make the decoding on demand.  So if an image is never displayed in the browser and it&apos;s only used by WebGL as texture source, then we only need to decode it once.

However, I am not sure how this on-demand decoding will effect the web performance at the moment.  Haven&apos;t really talked to many people yet, except for James Robinson a while ago, and he thought it&apos;s quite possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377943</commentid>
    <comment_count>12</comment_count>
      <attachid>87886</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-04-01 11:35:57 -0700</bug_when>
    <thetext>Created attachment 87886
add CG support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377945</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 11:38:51 -0700</bug_when>
    <thetext>Attachment 87886 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377948</commentid>
    <comment_count>14</comment_count>
      <attachid>87889</attachid>
    <who name="John Bauman">jbauman</who>
    <bug_when>2011-04-01 11:43:38 -0700</bug_when>
    <thetext>Created attachment 87889
add CG support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378041</commentid>
    <comment_count>15</comment_count>
      <attachid>87889</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-01 13:37:07 -0700</bug_when>
    <thetext>Comment on attachment 87889
add CG support

Looks great. Thanks for optimizing the CG path too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378123</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 15:26:11 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 87889:

java/lc3/JSObject/ToObject-001.html bug 53091 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378127</commentid>
    <comment_count>17</comment_count>
      <attachid>87889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 15:28:27 -0700</bug_when>
    <thetext>Comment on attachment 87889
add CG support

Clearing flags on attachment: 87889

Committed r82728: &lt;http://trac.webkit.org/changeset/82728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378128</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 15:28:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87666</attachid>
            <date>2011-03-30 22:07:49 -0700</date>
            <delta_ts>2011-03-30 22:11:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51498-20110330220748.patch</filename>
            <type>text/plain</type>
            <size>2892</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIzMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZjRhODVmZTFmYTlmNGJm
MmUzNTRjZTU1ZjY5OGMyYzZkN2JmNmNmLi5lYmM4MjgyM2Y3YzY5NTZlOTQ4NzAwZGFhMzUyMmFm
ZDY0YjM2OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMzAgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZGVjb2RpbmcgaW1hZ2VzIHR3aWNlIGluIHRl
eEltYWdlMkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxNDk4CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHJlZGVjb2RlIHRoZSBpbWFnZSBvbmx5IGlm
IGl0J3Mgbm90IG9wYXF1ZSBhbmQgdGV4SW1hZ2UyRAorICAgICAgICB3b3VsZG4ndCBwcmVtdWx0
aXBseSBpdCBhbnl3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKToKKwogMjAxMS0wMy0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByODIyODIsIHBhcnQg
b2YgcjgyMjg4LCByODIyOTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggNTk1
MGMzNTNlN2FmNGYwYmYwNTI1ZWQ5YTgyMDZiYTc5NTkyMTEzMi4uN2FlNDc5M2VmODcwYTViM2I2
OTMwNjBhZGY5ZjhhOGIzNzU4YjYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApA
QCAtNTIsMTMgKzUyLDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJ
bWFnZSogaW1hZ2UsCiAgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gcGl4ZWxzOwogICAgIE5h
dGl2ZUltYWdlU2tpYSogc2tpYUltYWdlID0gMDsKICAgICBBbHBoYU9wIG5lZWRlZEFscGhhT3Ag
PSBBbHBoYURvTm90aGluZzsKLSAgICBpZiAoaW1hZ2UtPmRhdGEoKSkgeworICAgIHNraWFJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGJvb2wgaGFzQWxw
aGEgPSBza2lhSW1hZ2UgPyAhc2tpYUltYWdlLT5pc09wYXF1ZSgpIDogZmFsc2U7CisgICAgaWYg
KCghc2tpYUltYWdlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkpICYmIGltYWdl
LT5kYXRhKCkpIHsKICAgICAgICAgSW1hZ2VTb3VyY2UgZGVjb2RlcihJbWFnZVNvdXJjZTo6QWxw
aGFOb3RQcmVtdWx0aXBsaWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdu
b3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOworICAgICAg
ICAvLyBBdHRlbXB0IHRvIGdldCByYXcgdW5wcmVtdWx0aXBsaWVkIGltYWdlIGRhdGEgCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBib29sIGhhc0FscGhhID0gZGVj
b2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsKKyAgICAgICAgaGFzQWxwaGEgPSBkZWNvZGVy
LmZyYW1lSGFzQWxwaGFBdEluZGV4KDApOwogICAgICAgICBwaXhlbHMgPSBhZG9wdFB0cihkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CiAgICAgICAgIGlmICghcGl4ZWxzLmdldCgpIHx8
ICFwaXhlbHMtPmlzRGF0YUNvbXBsZXRlKCkgfHwgIXBpeGVscy0+d2lkdGgoKSB8fCAhcGl4ZWxz
LT5oZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4LDExICs3MSw4IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAg
ICAgIHNraWFJbWFnZSA9IHBpeGVscy5nZXQoKTsKICAgICAgICAgaWYgKGhhc0FscGhhICYmIHBy
ZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0gQWxwaGFEb1ByZW11
bHRpcGx5OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ug
Zm9yIHRleEltYWdlMkQgd2l0aCBIVE1MQ2FudmFzRWxlbWVudCBpbnB1dC4KLSAgICAgICAgc2tp
YUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlm
ICghcHJlbXVsdGlwbHlBbHBoYSkKLSAgICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKKyAgICB9IGVsc2UgaWYgKCFwcmVtdWx0aXBseUFscGhhICYmIGhhc0FscGhh
KSB7CisgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvVW5tdWx0aXBseTsKICAgICB9CiAg
ICAgaWYgKCFza2lhSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87667</attachid>
            <date>2011-03-30 22:11:25 -0700</date>
            <delta_ts>2011-04-01 11:35:53 -0700</delta_ts>
            <desc>This only helps when the image is opaque or the texture is premultiplied, but that&apos;s pretty often.</desc>
            <filename>bug-51498-20110330221124.patch</filename>
            <type>text/plain</type>
            <size>2892</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODIzMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZjRhODVmZTFmYTlmNGJm
MmUzNTRjZTU1ZjY5OGMyYzZkN2JmNmNmLi5lYmM4MjgyM2Y3YzY5NTZlOTQ4NzAwZGFhMzUyMmFm
ZDY0YjM2OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMzAgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZGVjb2RpbmcgaW1hZ2VzIHR3aWNlIGluIHRl
eEltYWdlMkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxNDk4CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHJlZGVjb2RlIHRoZSBpbWFnZSBvbmx5IGlm
IGl0J3Mgbm90IG9wYXF1ZSBhbmQgdGV4SW1hZ2UyRAorICAgICAgICB3b3VsZG4ndCBwcmVtdWx0
aXBseSBpdCBhbnl3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKToKKwogMjAxMS0wMy0yOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByODIyODIsIHBhcnQg
b2YgcjgyMjg4LCByODIyOTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggNTk1
MGMzNTNlN2FmNGYwYmYwNTI1ZWQ5YTgyMDZiYTc5NTkyMTEzMi4uN2FlNDc5M2VmODcwYTViM2I2
OTMwNjBhZGY5ZjhhOGIzNzU4YjYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApA
QCAtNTIsMTMgKzUyLDE2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJ
bWFnZSogaW1hZ2UsCiAgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gcGl4ZWxzOwogICAgIE5h
dGl2ZUltYWdlU2tpYSogc2tpYUltYWdlID0gMDsKICAgICBBbHBoYU9wIG5lZWRlZEFscGhhT3Ag
PSBBbHBoYURvTm90aGluZzsKLSAgICBpZiAoaW1hZ2UtPmRhdGEoKSkgeworICAgIHNraWFJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGJvb2wgaGFzQWxw
aGEgPSBza2lhSW1hZ2UgPyAhc2tpYUltYWdlLT5pc09wYXF1ZSgpIDogZmFsc2U7CisgICAgaWYg
KCghc2tpYUltYWdlIHx8IChoYXNBbHBoYSAmJiAhcHJlbXVsdGlwbHlBbHBoYSkpICYmIGltYWdl
LT5kYXRhKCkpIHsKICAgICAgICAgSW1hZ2VTb3VyY2UgZGVjb2RlcihJbWFnZVNvdXJjZTo6QWxw
aGFOb3RQcmVtdWx0aXBsaWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdu
b3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOworICAgICAg
ICAvLyBBdHRlbXB0IHRvIGdldCByYXcgdW5wcmVtdWx0aXBsaWVkIGltYWdlIGRhdGEgCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBib29sIGhhc0FscGhhID0gZGVj
b2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsKKyAgICAgICAgaGFzQWxwaGEgPSBkZWNvZGVy
LmZyYW1lSGFzQWxwaGFBdEluZGV4KDApOwogICAgICAgICBwaXhlbHMgPSBhZG9wdFB0cihkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CiAgICAgICAgIGlmICghcGl4ZWxzLmdldCgpIHx8
ICFwaXhlbHMtPmlzRGF0YUNvbXBsZXRlKCkgfHwgIXBpeGVscy0+d2lkdGgoKSB8fCAhcGl4ZWxz
LT5oZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4LDExICs3MSw4IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAg
ICAgIHNraWFJbWFnZSA9IHBpeGVscy5nZXQoKTsKICAgICAgICAgaWYgKGhhc0FscGhhICYmIHBy
ZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0gQWxwaGFEb1ByZW11
bHRpcGx5OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ug
Zm9yIHRleEltYWdlMkQgd2l0aCBIVE1MQ2FudmFzRWxlbWVudCBpbnB1dC4KLSAgICAgICAgc2tp
YUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlm
ICghcHJlbXVsdGlwbHlBbHBoYSkKLSAgICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKKyAgICB9IGVsc2UgaWYgKCFwcmVtdWx0aXBseUFscGhhICYmIGhhc0FscGhh
KSB7CisgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvVW5tdWx0aXBseTsKICAgICB9CiAg
ICAgaWYgKCFza2lhSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87886</attachid>
            <date>2011-04-01 11:35:57 -0700</date>
            <delta_ts>2011-04-01 11:43:36 -0700</delta_ts>
            <desc>add CG support</desc>
            <filename>bug-51498-20110401113555.patch</filename>
            <type>text/plain</type>
            <size>6235</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2UxMWEyMTA0MTk1NWU0
YWUxMzg4Y2E4ZWNkNDUwYzYzNDVlYTk4Li4wNGYzZjYwZThkYTljOGViOWNkZjk5ZGIzOTJhMDE0
Mzk0NjFiZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMDEgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZGVjb2RpbmcgaW1hZ2VzIHR3aWNlIGluIHRl
eEltYWdlMkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxNDk4CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHJlZGVjb2RlIHRoZSBpbWFnZSBvbmx5IGlm
IGl0J3Mgbm90IG9wYXF1ZSBhbmQgdGV4SW1hZ2UyRAorICAgICAgICB3b3VsZG4ndCBwcmVtdWx0
aXBseSBpdCBhbnl3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6
CisKIDIwMTEtMDQtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MjY4Ny4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDZhM2UwNDI1MTkz
ZjgwMmFhZDU5YjQ5Nzc3NjJmNWYwYTE5ODA4NjUuLjYwN2JhYzI4MzdmZDcyZDUzMDJkMWJmNDll
MGIwNDQ5MDEzZWQ2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaApAQCAtMTU2LDYgKzE1Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCk7IAogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBSZXBldGl0aW9uQ291
bnRTdGF0dXMgewpAQCAtMTg2LDcgKzE4Nyw2IEBAIHByb3RlY3RlZDoKICAgICBOYXRpdmVJbWFn
ZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAg
IGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgCiAKICAgICAvLyBEZWNvZGVzIGFu
ZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQgZXhjZXB0IGludGVybmFsbHkuCiAgICAg
dm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4
IDE4N2QyOTY2ZTlhZTZiY2RjYjFjNWZhMzY3YTljNjRlOGNjODgwMDUuLmM2N2ZlMzQ2ZTUyOWU2
NGI3YTU2OTJmNmU3MzI0NmYyMWQ0ZGRhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRDRy5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQml0bWFwQ29udGV4dC5oPgpA
QCAtOTksNyArMTAwLDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKElt
YWdlKiBpbWFnZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIENHSW1hZ2VSZWYgY2dJbWFn
ZTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZGVjb2RlZEltYWdlOwotICAgIGlmIChpbWFn
ZS0+ZGF0YSgpKSB7CisgICAgYm9vbCBoYXNBbHBoYSA9IGltYWdlLT5pc0JpdG1hcEltYWdlKCkg
PyBzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKS0+ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
MCkgOiB0cnVlOworICAgIGlmICgoaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgfHwgKGhhc0Fs
cGhhICYmICFwcmVtdWx0aXBseUFscGhhKSkgJiYgaW1hZ2UtPmRhdGEoKSkgewogICAgICAgICBJ
bWFnZVNvdXJjZSBkZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBJ
bWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkIDogSW1hZ2VTb3VyY2U6Okdh
bW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFn
ZS0+ZGF0YSgpLCB0cnVlKTsKQEAgLTE5NiwxMSArMTk4LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICBBbHBoYUZvcm1hdCBhbHBoYUZv
cm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKICAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8o
Y2dJbWFnZSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6Ci0g
ICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRleEltYWdlMkQgd2l0aCBIVE1M
Q2FudmFzRWxlbWVudCBpbnB1dCwKLSAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBpbWFnZS0+ZGF0
YSgpIHNob3VsZCBiZSBudWxsLCBvciBpbmRleGVkIGNvbG9yIG1vZGVscywKLSAgICAgICAgLy8g
d2hlcmUgd2UgbmVlZCBwcmVtdWx0aXBsaWVkIGFscGhhIHRvIGNyZWF0ZSB0aGUgYml0bWFwIGNv
bnRleHQKLSAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5LgotICAgICAgICBBU1NFUlQoIWltYWdlLT5k
YXRhKCkgfHwgbW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVsSW5kZXhlZCk7CiAgICAgICAgIGlm
ICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKICAgICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdEZpcnN0OwpAQCAt
MjE2LDkgKzIxMyw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFn
ZSogaW1hZ2UsCiAgICAgICAgIGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXRGaXJzdDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Q6Ci0gICAg
ICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRleEltYWdlMkQgd2l0aCBIVE1MQ2Fu
dmFzRWxlbWVudCBpbnB1dCwKLSAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBpbWFnZS0+ZGF0YSgp
IHNob3VsZCBiZSBudWxsLgotICAgICAgICBBU1NFUlQoIWltYWdlLT5kYXRhKCkpOwogICAgICAg
ICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0gQWxw
aGFEb1VubXVsdGlwbHk7CiAgICAgICAgIGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXRMYXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCmluZGV4IDU5NTBjMzUzZTdhZjRmMGJmMDUyNWVk
OWE4MjA2YmE3OTU5MjExMzIuLmQzMmE0MDIwMzQ4M2YxMjM2Y2FhNzY4OGYwMzlmM2VlOGU4YzAw
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0M0RTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRl
ICJOYXRpdmVJbWFnZVNraWEuaCIKQEAgLTUyLDEzICs1MywxNSBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgIE93blB0cjxOYXRpdmVJbWFn
ZVNraWE+IHBpeGVsczsKICAgICBOYXRpdmVJbWFnZVNraWEqIHNraWFJbWFnZSA9IDA7CiAgICAg
QWxwaGFPcCBuZWVkZWRBbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7Ci0gICAgaWYgKGltYWdlLT5k
YXRhKCkpIHsKKyAgICBib29sIGhhc0FscGhhID0gaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSA/IHN0
YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5mcmFtZUhhc0FscGhhQXRJbmRleCgwKSA6
IHRydWU7CisgICAgaWYgKChpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxwaGEg
JiYgIXByZW11bHRpcGx5QWxwaGEpKSAmJiBpbWFnZS0+ZGF0YSgpKSB7CiAgICAgICAgIEltYWdl
U291cmNlIGRlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQgOiBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKKyAgICAgICAgLy8gQXR0ZW1wdCB0byBnZXQgcmF3IHVu
cHJlbXVsdGlwbGllZCBpbWFnZSBkYXRhIAogICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2Ut
PmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRl
Y29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgYm9vbCBoYXNBbHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgo
MCk7CisgICAgICAgIGhhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsK
ICAgICAgICAgcGl4ZWxzID0gYWRvcHRQdHIoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkp
OwogICAgICAgICBpZiAoIXBpeGVscy5nZXQoKSB8fCAhcGl4ZWxzLT5pc0RhdGFDb21wbGV0ZSgp
IHx8ICFwaXhlbHMtPndpZHRoKCkgfHwgIXBpeGVscy0+aGVpZ2h0KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02OSw5ICs3Miw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGlmIChoYXNBbHBoYSAmJiBwcmVtdWx0
aXBseUFscGhhKQogICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9QcmVtdWx0aXBs
eTsKICAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIGZvciB0
ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQuCiAgICAgICAgIHNraWFJbWFn
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpZiAoIXBy
ZW11bHRpcGx5QWxwaGEpCisgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSAmJiBoYXNBbHBo
YSkKICAgICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvVW5tdWx0aXBseTsKICAgICB9
CiAgICAgaWYgKCFza2lhSW1hZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87889</attachid>
            <date>2011-04-01 11:43:38 -0700</date>
            <delta_ts>2011-04-01 15:28:27 -0700</delta_ts>
            <desc>add CG support</desc>
            <filename>bug-51498-20110401114337.patch</filename>
            <type>text/plain</type>
            <size>6288</size>
            <attacher name="John Bauman">jbauman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2UxMWEyMTA0MTk1NWU0
YWUxMzg4Y2E4ZWNkNDUwYzYzNDVlYTk4Li4wNGYzZjYwZThkYTljOGViOWNkZjk5ZGIzOTJhMDE0
Mzk0NjFiZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDQtMDEgIEpvaG4g
QmF1bWFuICA8amJhdW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZGVjb2RpbmcgaW1hZ2VzIHR3aWNlIGluIHRl
eEltYWdlMkQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxNDk4CisKKyAgICAgICAgTWFrZSBzdXJlIHRvIHJlZGVjb2RlIHRoZSBpbWFnZSBvbmx5IGlm
IGl0J3Mgbm90IG9wYXF1ZSBhbmQgdGV4SW1hZ2UyRAorICAgICAgICB3b3VsZG4ndCBwcmVtdWx0
aXBseSBpdCBhbnl3YXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6
CisKIDIwMTEtMDQtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MjY4Ny4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDZhM2UwNDI1MTkz
ZjgwMmFhZDU5YjQ5Nzc3NjJmNWYwYTE5ODA4NjUuLjYwN2JhYzI4MzdmZDcyZDUzMDJkMWJmNDll
MGIwNDQ5MDEzZWQ2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaApAQCAtMTU2LDYgKzE1Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KKyAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCk7IAogCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBSZXBldGl0aW9uQ291
bnRTdGF0dXMgewpAQCAtMTg2LDcgKzE4Nyw2IEBAIHByb3RlY3RlZDoKICAgICBOYXRpdmVJbWFn
ZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAg
IGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgCiAKICAgICAvLyBEZWNvZGVzIGFu
ZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQgZXhjZXB0IGludGVybmFsbHkuCiAgICAg
dm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4
IDE4N2QyOTY2ZTlhZTZiY2RjYjFjNWZhMzY3YTljNjRlOGNjODgwMDUuLjU3YWJlNzFhMzY4ZGQ5
OGUxMTgxMzEzMTdjZTQ5ZjIwOWI2NmUzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0y
OSw4ICsyOSw5IEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogCisjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CkBAIC05
OSw3ICsxMDAsOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2Uq
IGltYWdlLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlOwog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBkZWNvZGVkSW1hZ2U7Ci0gICAgaWYgKGltYWdlLT5k
YXRhKCkpIHsKKyAgICBib29sIGhhc0FscGhhID0gaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSA/IHN0
YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5mcmFtZUhhc0FscGhhQXRJbmRleCgwKSA6
IHRydWU7CisgICAgaWYgKChpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSB8fCAoaGFzQWxwaGEg
JiYgIXByZW11bHRpcGx5QWxwaGEpKSAmJiBpbWFnZS0+ZGF0YSgpKSB7CiAgICAgICAgIEltYWdl
U291cmNlIGRlY29kZXIoSW1hZ2VTb3VyY2U6OkFscGhhTm90UHJlbXVsdGlwbGllZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEltYWdl
U291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUlnbm9yZWQgOiBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5k
YXRhKCksIHRydWUpOwpAQCAtMTk2LDExICsxOTgsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0
ID0gQWxwaGFGb3JtYXROb25lOwogICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhjZ0lt
YWdlKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKLSAgICAg
ICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBmb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxDYW52
YXNFbGVtZW50IGlucHV0LAotICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGltYWdlLT5kYXRhKCkg
c2hvdWxkIGJlIG51bGwsIG9yIGluZGV4ZWQgY29sb3IgbW9kZWxzLAotICAgICAgICAvLyB3aGVy
ZSB3ZSBuZWVkIHByZW11bHRpcGxpZWQgYWxwaGEgdG8gY3JlYXRlIHRoZSBiaXRtYXAgY29udGV4
dAotICAgICAgICAvLyBzdWNjZXNzZnVsbHkuCi0gICAgICAgIEFTU0VSVCghaW1hZ2UtPmRhdGEo
KSB8fCBtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRleGVkKTsKICAgICAgICAgaWYgKCFw
cmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Vbm11
bHRpcGx5OwogICAgICAgICBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Rmlyc3Q7CkBAIC0yMTYs
OSArMjEzLDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBp
bWFnZSwKICAgICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdEZpcnN0OwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdDoKLSAgICAgICAg
Ly8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBmb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxDYW52YXNF
bGVtZW50IGlucHV0LAotICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGltYWdlLT5kYXRhKCkgc2hv
dWxkIGJlIG51bGwuCi0gICAgICAgIEFTU0VSVCghaW1hZ2UtPmRhdGEoKSk7CiAgICAgICAgIGlm
ICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKICAgICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdExhc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggNTk1MGMzNTNlN2FmNGYwYmYwNTI1ZWQ5YTgy
MDZiYTc5NTkyMTEzMi4uZDMyYTQwMjAzNDgzZjEyMzZjYWE3Njg4ZjAzOWYzZWU4ZThjMDBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIk5h
dGl2ZUltYWdlU2tpYS5oIgpAQCAtNTIsMTMgKzUzLDE1IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tp
YT4gcGl4ZWxzOwogICAgIE5hdGl2ZUltYWdlU2tpYSogc2tpYUltYWdlID0gMDsKICAgICBBbHBo
YU9wIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvTm90aGluZzsKLSAgICBpZiAoaW1hZ2UtPmRhdGEo
KSkgeworICAgIGJvb2wgaGFzQWxwaGEgPSBpbWFnZS0+aXNCaXRtYXBJbWFnZSgpID8gc3RhdGlj
X2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSktPmZyYW1lSGFzQWxwaGFBdEluZGV4KDApIDogdHJ1
ZTsKKyAgICBpZiAoKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlIHx8IChoYXNBbHBoYSAmJiAh
cHJlbXVsdGlwbHlBbHBoYSkpICYmIGltYWdlLT5kYXRhKCkpIHsKICAgICAgICAgSW1hZ2VTb3Vy
Y2UgZGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlSWdub3JlZCA6IEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZUFwcGxpZWQpOworICAgICAgICAvLyBBdHRlbXB0IHRvIGdldCByYXcgdW5wcmVt
dWx0aXBsaWVkIGltYWdlIGRhdGEgCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0
YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rl
ci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBib29sIGhhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsK
KyAgICAgICAgaGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KDApOwogICAg
ICAgICBwaXhlbHMgPSBhZG9wdFB0cihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CiAg
ICAgICAgIGlmICghcGl4ZWxzLmdldCgpIHx8ICFwaXhlbHMtPmlzRGF0YUNvbXBsZXRlKCkgfHwg
IXBpeGVscy0+d2lkdGgoKSB8fCAhcGl4ZWxzLT5oZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTY5LDkgKzcyLDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1h
Z2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgaWYgKGhhc0FscGhhICYmIHByZW11bHRpcGx5
QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0gQWxwaGFEb1ByZW11bHRpcGx5Owog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRleElt
YWdlMkQgd2l0aCBIVE1MQ2FudmFzRWxlbWVudCBpbnB1dC4KICAgICAgICAgc2tpYUltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghcHJlbXVs
dGlwbHlBbHBoYSkKKyAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhICYmIGhhc0FscGhhKQog
ICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5OwogICAgIH0KICAg
ICBpZiAoIXNraWFJbWFnZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>