<?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>24289</bug_id>
          
          <creation_ts>2009-03-02 07:15:29 -0800</creation_ts>
          <short_desc>[Qt] lacks clipToImageBuffer()</short_desc>
          <delta_ts>2011-02-18 06:40:20 -0800</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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>35784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Zoltan Herczeg">zherczeg</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>111818</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-03-02 07:15:29 -0800</bug_when>
    <thetext>Qt lacks support for GraphicsContext::clipToImageBuffer().

clipToImageBuffer gets a rect and an QPixmap. This is the mask image and the size of the masked area.

Before it is possible to use clipToImageBuffer, it needs a call of gc-&gt;save(). Everything that is drawn after clipToImageBuffer is the masked object. The masked object is closed be a gc-&gt;reset, that belongs to the gc-&gt;safe() before the clipToImageBuffer call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111820</commentid>
    <comment_count>1</comment_count>
      <attachid>28173</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-03-02 07:20:23 -0800</bug_when>
    <thetext>Created attachment 28173
first try

This is the first try to solve the problem.

We save the QPixmap create a new layer to draw on and wait to the call of the right gc-&gt;reset() (we have to count every save/restore to be sure).
On our restore, we take the QPixmap of the layer and mask it with the saved mask image.

Unfortunately image.setMask(maskImage.mask()) just creates a 1bit Bitmap. So we can&apos;t do half transparent things with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111821</commentid>
    <comment_count>2</comment_count>
      <attachid>28174</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-03-02 07:28:25 -0800</bug_when>
    <thetext>Created attachment 28174
second try

The second try. On calling clipToImageBuffer, we start a new layer and draw the mask to the context and use the composite operator SourceIn. We started a new Layer before to not affect the other drawings beside the masking process. 
After setting the compositeOperator, we start a new (second) Layer for the masked object. On the right call of restore, we draw both layers to the context.

Only problem: SourceIn seems not to have no affect on the new created layer. The GraphicsContext draws the mask to the context, but doesn&apos;t consider to the masked object. You&apos;ll just see the mask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146064</commentid>
    <comment_count>3</comment_count>
      <attachid>28174</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2009-09-09 19:03:29 -0700</bug_when>
    <thetext>Comment on attachment 28174
second try

Just a quick review before I give it a try.

&gt; +        [QT] lacks putImageData support in Canvas

Should be Qt.

&gt; +    if (!m_data-&gt;countSavesDuringMasking.empty())

Let us use isEmpty() to make the code more Qt-like.

&gt; +    QRect qrect(QRect(rect.x(), rect.y(), rect.width(), rect.height()));

Is it possible to convert FloatRect to QRectF first, then finally to QRect?

&gt; +    TransparencyLayer * maskLayer = new TransparencyLayer(m_data-&gt;p(), qrect);

Coding style with *.

&gt; +    p-&gt;setCompositionMode(QPainter::CompositionMode_SourceOver);

Should we save the composition mode and restore it again, instead of setting it to SourceOver?

&gt; +void ImageBuffer::putImageData(ImageData* source, const IntRect&amp; sourceRect, const IntPoint&amp; destPoint)

I guess this is not necessary anymore because it is already implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146156</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-09-10 04:05:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 28174 [details])
&gt; Just a quick review before I give it a try.
&gt; 
&gt; &gt; +        [QT] lacks putImageData support in Canvas
&gt; 
&gt; Should be Qt.
&gt; 
&gt; &gt; +    if (!m_data-&gt;countSavesDuringMasking.empty())
&gt; 
&gt; Let us use isEmpty() to make the code more Qt-like.
&gt; 
&gt; &gt; +    QRect qrect(QRect(rect.x(), rect.y(), rect.width(), rect.height()));
&gt; 
&gt; Is it possible to convert FloatRect to QRectF first, then finally to QRect?
&gt; 
&gt; &gt; +    TransparencyLayer * maskLayer = new TransparencyLayer(m_data-&gt;p(), qrect);
&gt; 
&gt; Coding style with *.
&gt; 
&gt; &gt; +    p-&gt;setCompositionMode(QPainter::CompositionMode_SourceOver);
&gt; 
&gt; Should we save the composition mode and restore it again, instead of setting it
&gt; to SourceOver?
&gt; 
&gt; &gt; +void ImageBuffer::putImageData(ImageData* source, const IntRect&amp; sourceRect, const IntPoint&amp; destPoint)
&gt; 
&gt; I guess this is not necessary anymore because it is already implemented?

Shall I upload a new patch with the corrections of above? It doesn&apos;t work anyway even if it should (in my understanding). But the things you pointed out are correct. The style-issues as well as your assumptions  about putImageData and to save the operator.
I would prefer the first patch (with fixed style issues), but qt just supports 1-Bit masks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146159</commentid>
    <comment_count>5</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2009-09-10 04:15:14 -0700</bug_when>
    <thetext>Yes, please update the patch so that I can give it a try.

Could you also mention which test file in LayoutTests is suitable for easy testing?

As for workaround the 1-bit mask, I guess I will pull one or two tricks from my sleeve :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146197</commentid>
    <comment_count>6</comment_count>
      <attachid>39348</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-09-10 07:46:52 -0700</bug_when>
    <thetext>Created attachment 39348
second try of second try

This is the update of the second patch with the comments of above. Goal was to draw everthing after the clipToImageBuffer into a new layer and use the stored mask with the new layer together with the composite operator source-in.
        Test: svg/W3C/masking-mask-01-b.svg
                 svg/W3C/masking-intro-01-f.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216382</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-23 05:57:04 -0700</bug_when>
    <thetext>I am also thinking now of implementing this function for Qt. If I understand correctly, clipToImageBuffer combines a layer and an alpha channel from two images:

imagebuffer  (RGBA) pixel (i,j): (rrggbbAA)
layer pixmap (RGBA) pixel (i,j): (RRGGBBaa)

after the combination, the resulting (i,j) pixel will be (RRGGBBAA), and the other bytes are discarded. I feel clipToImageBuffer is too Mac platform specific. Since it is combined with context-&gt;save() and context-&gt;restore(), would be better the following commands:

context-&gt;beginClipToImageBuffer()
context-&gt;endClipToImageBuffer()

Other platforms could use layers to emulate clipToImage behaviour.

In Qt, I would create QImage-s, and access pixel data through QImage::scanLine()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216461</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-23 10:21:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I am also thinking now of implementing this function for Qt. If I understand
&gt; correctly, clipToImageBuffer combines a layer and an alpha channel from two
&gt; images:
&gt; 
&gt; imagebuffer  (RGBA) pixel (i,j): (rrggbbAA)
&gt; layer pixmap (RGBA) pixel (i,j): (RRGGBBaa)

The alpha channel is not replaced. The alpha of the layer gets multiplied with the alpha of the imgaBuffer IIRC.

&gt; 
&gt; after the combination, the resulting (i,j) pixel will be (RRGGBBAA), and the
&gt; other bytes are discarded. I feel clipToImageBuffer is too Mac platform
&gt; specific. Since it is combined with context-&gt;save() and context-&gt;restore(),
&gt; would be better the following commands:
&gt; 
&gt; context-&gt;beginClipToImageBuffer()
&gt; context-&gt;endClipToImageBuffer()
&gt; 
&gt; Other platforms could use layers to emulate clipToImage behaviour.

Yes, thats what I tried at https://bugs.webkit.org/show_bug.cgi?id=23526#c3 . Not sure, but I think this concept failed, because the endClipToImageBuffer may don&apos;t get reached. Another problem was the confusing concept of the old SVG Masker code. It could be possible with the new masker code.

clipToImageBuffer is used in
* CSS3 text clip
* SVG masking: rendering/RenderSVGResourceMasker.cpp
* SVG clipping: rendering/RenderSVGResourceClipper.cpp
    both, masker and clipper, are called in SVGRenderSupport.cpp. To use your begin/end concept, you have to go the same way as filter and create a masker / clipper before calling SVGRenderSupport.cpp:prepareToRenderSVGContent. And give the masker / clipper to prepareToRenderSVGContent and finishRenderSVGContent. Not realy a clean way, but possible.
* SVG Filters: FEComposite.cpp and SourceAlpha.cpp shouldn&apos;t be a big problem
* Canvas to fill texts with stroke and fill (only on Cg)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216484</commentid>
    <comment_count>9</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-23 11:11:52 -0700</bug_when>
    <thetext>&gt; The alpha channel is not replaced. The alpha of the layer gets multiplied with
&gt; the alpha of the imgaBuffer IIRC.

So it is practically the same as the light map in texture mapping.

&gt; Yes, thats what I tried at https://bugs.webkit.org/show_bug.cgi?id=23526#c3 .
&gt; Not sure, but I think this concept failed, because the endClipToImageBuffer may
&gt; don&apos;t get reached. Another problem was the confusing concept of the old SVG
&gt; Masker code. It could be possible with the new masker code.

I support your solution. If I could be any help, I would gladly join to you improve pianting in WebKit. We might need to refactor many things in WebKit, but I am not afraid of challenges :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216490</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-23 11:29:10 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; The alpha channel is not replaced. The alpha of the layer gets multiplied with
&gt; &gt; the alpha of the imgaBuffer IIRC.
&gt; 
&gt; So it is practically the same as the light map in texture mapping.
&gt; 
&gt; &gt; Yes, thats what I tried at https://bugs.webkit.org/show_bug.cgi?id=23526#c3 .
&gt; &gt; Not sure, but I think this concept failed, because the endClipToImageBuffer may
&gt; &gt; don&apos;t get reached. Another problem was the confusing concept of the old SVG
&gt; &gt; Masker code. It could be possible with the new masker code.
&gt; 
&gt; I support your solution. If I could be any help, I would gladly join to you
&gt; improve pianting in WebKit. We might need to refactor many things in WebKit,
&gt; but I am not afraid of challenges :)

Sorry. But I am busy at the moment. So I can&apos;t work on that.

Another solution might be to store the maskImage, count save and restores and use the masking operation at the right time. Just like one of the patches above tries to do it, like the patch on bug 23526 tries it and like Skia already does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217674</commentid>
    <comment_count>11</comment_count>
      <attachid>54414</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-27 06:46:28 -0700</bug_when>
    <thetext>Created attachment 54414
proposed patch

Save counting is not yet implemented. And the implementation reuses the existing layer frame buffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217677</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-27 06:48:15 -0700</bug_when>
    <thetext>&gt; Another solution might be to store the maskImage, count save and restores and
&gt; use the masking operation at the right time. Just like one of the patches above
&gt; tries to do it, like the patch on bug 23526 tries it and like Skia already does
&gt; it.

Is it true, that only 1 clipToImageBuffer is allowed? Seems to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217683</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-27 07:22:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Another solution might be to store the maskImage, count save and restores and
&gt; &gt; use the masking operation at the right time. Just like one of the patches above
&gt; &gt; tries to do it, like the patch on bug 23526 tries it and like Skia already does
&gt; &gt; it.
&gt; 
&gt; Is it true, that only 1 clipToImageBuffer is allowed? Seems to me.

No. And IIRC SVG&apos;s clipPath may make use of multiple clipToImageBuffer calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217714</commentid>
    <comment_count>14</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-27 08:25:50 -0700</bug_when>
    <thetext>&gt; No. And IIRC SVG&apos;s clipPath may make use of multiple clipToImageBuffer calls.

Excellent. It was worth to follow the general (and more difficult) path. Anyway, I probably still need to implement some kind of save/restore counters, isn&apos;t it?

I hope eventually we can use beginClipToImage and endClipToImage calls to avoid such code hacks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217728</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-27 08:59:02 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; No. And IIRC SVG&apos;s clipPath may make use of multiple clipToImageBuffer calls.
&gt; 
&gt; Excellent. It was worth to follow the general (and more difficult) path.
&gt; Anyway, I probably still need to implement some kind of save/restore counters,
&gt; isn&apos;t it?
&gt; 
&gt; I hope eventually we can use beginClipToImage and endClipToImage calls to avoid
&gt; such code hacks.

Sure, just upload a patch if you have a good implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217729</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-27 09:02:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=54414) [details]
&gt; proposed patch
&gt; 
&gt; Save counting is not yet implemented. And the implementation reuses the
&gt; existing layer frame buffers.

IIRC, TransparencyLayer is used in SVG to handle opacity. That has nothing to do with clipToImageBuffer. So  a alpha mask would be wrong here. We need all channels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217796</commentid>
    <comment_count>17</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-27 11:07:38 -0700</bug_when>
    <thetext>&gt; IIRC, TransparencyLayer is used in SVG to handle opacity. That has nothing to
&gt; do with clipToImageBuffer. So  a alpha mask would be wrong here. We need all
&gt; channels.

I keep all chanels, if I understand you correctly. It is a stack composed of transparency layers and clipToImageBuffer layers. All have their image. For TransparencyLayer an opacity, for clipToImageBuffer an alpha-mask channel is stored, respectively. If you would implement an stack, the effect would be the same from the image storage view:

Common stack:                        Separated stack:

[Transp Layer 2]               [Transp Layer 2]
[clipToIm Layer 2]                                 [clipToIm Layer 2]
[Transp Layer 1]               [Transp Layer 1]
[clipToIm Layer 1]                                 [clipToIm Layer 1]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218376</commentid>
    <comment_count>18</comment_count>
      <attachid>54561</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-28 06:53:08 -0700</bug_when>
    <thetext>Created attachment 54561
final patch (I hope so)

The patch fixes 21 additional SVG related layout tests. Since these pixel results are not in the trunk (yet), I don&apos;t need to attach them to the patch.

I saw other wrong SVG filters in Qt and I plan to fix them. I like SVG more and more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218614</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-04-28 13:58:44 -0700</bug_when>
    <thetext>The parts that concern me the most about this patch are that

    a) It requires an expensive conversion from a QPixmap to a QImage (inside clipToImageBuffer)

and

    b) By painting onto a QImage a completely different paint engine is used, which may produce different output and certainly won&apos;t utilize any hardware acceleration.

I wish there was a way to do the masking without falling back to software rendering ;(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218628</commentid>
    <comment_count>20</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-28 14:13:11 -0700</bug_when>
    <thetext>&gt; I wish there was a way to do the masking without falling back to software
&gt; rendering ;(

I would prefer to move the ImageBuffer to QImage, since it suits far better for its purpose, and that would avoid conversions. Although your concern about using a different painting engine is right, mixed environments could make surprising results. Simon, what is your proposal? I would prefer a slow implementation over a no implementation :) but you might have other preferences. I could also use QPixmap for the layer, and do more (expensive) conversions, which would avoid the use of two raster engines for painting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218631</commentid>
    <comment_count>21</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-04-28 14:19:37 -0700</bug_when>
    <thetext>Dirk&apos;s patches use composition modes (DestinationIn / SourceIn), which is the HW accelerated way to do masks; see GraphicsLayerQt.cpp. I&apos;m sure this can be applied to your fix though if it works like it is I&apos;m fine with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218956</commentid>
    <comment_count>22</comment_count>
      <attachid>54690</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-29 04:30:25 -0700</bug_when>
    <thetext>Created attachment 54690
porter duff based version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219097</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-29 11:03:45 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=54690) [details]
&gt; porter duff based version

I would like to know, if this implementatin already works in pracitce. On my tries, I did not get SVG Masking working, or at least it did not look like it should look like. Does your patch work with http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/masking-mask-01-b.html and following pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219101</commentid>
    <comment_count>24</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-29 11:10:48 -0700</bug_when>
    <thetext>&gt; I would like to know, if this implementatin already works in pracitce. On my
&gt; tries, I did not get SVG Masking working, or at least it did not look like it
&gt; should look like. Does your patch work with
&gt; http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/masking-mask-01-b.html
&gt; and following pages?

What OS do you use? Did you try passing -graphicsystem raster option to QtLauncher?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219105</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-29 11:15:55 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; I would like to know, if this implementatin already works in pracitce. On my
&gt; &gt; tries, I did not get SVG Masking working, or at least it did not look like it
&gt; &gt; should look like. Does your patch work with
&gt; &gt; http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/masking-mask-01-b.html
&gt; &gt; and following pages?
&gt; 
&gt; What OS do you use? Did you try passing -graphicsystem raster option to
&gt; QtLauncher?

I was working on linux and did not pass any options. But does it mean, your patch won&apos;t work without any options? I did not check your patch. But maybe you can test the link of above on your build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219110</commentid>
    <comment_count>26</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-29 11:25:10 -0700</bug_when>
    <thetext>&gt; I was working on linux and did not pass any options. But does it mean, your
&gt; patch won&apos;t work without any options? I did not check your patch. But maybe you
&gt; can test the link of above on your build?

I think you remember when I told you about that Qt does not render anything on a QPixmap filled with transparent color. I discussed this problem with the Qt experts, and they told me that x11 implementation of QPixmap is not &quot;perfect&quot;. I should use this option on Linux or use a different OS :D This option is accepted by all Qt based program, since it is an internal (secret) option.

I can only check my build tomorrow. If you still have a Qt based build, you can try that option now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219380</commentid>
    <comment_count>27</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-04-29 23:45:34 -0700</bug_when>
    <thetext>&gt; I would like to know, if this implementatin already works in pracitce. On my
&gt; tries, I did not get SVG Masking working, or at least it did not look like it
&gt; should look like. Does your patch work with
&gt; http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/masking-mask-01-b.html
&gt; and following pages?

Well, it works on some examples, and not on others. The link itself is only partly work. I still feel the patch is a step ahead, but feel free to give an r- if you think it is not.

This works for example:

http://www.w3.org/Graphics/SVG/Test/20061213/htmlObjectHarness/full-filters-example-01-b.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219560</commentid>
    <comment_count>28</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-04-30 12:01:09 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; I would like to know, if this implementatin already works in pracitce. On my
&gt; &gt; tries, I did not get SVG Masking working, or at least it did not look like it
&gt; &gt; should look like. Does your patch work with
&gt; &gt; http://dev.w3.org/SVG/profiles/1.1F2/test/harness/htmlObject/masking-mask-01-b.html
&gt; &gt; and following pages?
&gt; 
&gt; Well, it works on some examples, and not on others. The link itself is only
&gt; partly work. I still feel the patch is a step ahead, but feel free to give an
&gt; r- if you think it is not.
&gt; 
&gt; This works for example:
&gt; 
&gt; http://www.w3.org/Graphics/SVG/Test/20061213/htmlObjectHarness/full-filters-example-01-b.html

I did not upload other patches I made, because of this problem. In one of my patches, the masking-mask-01-b seems to work, but the text &apos;SVG&apos; was not filled with green and different opacity values, but with black and different opacity values.
After this breakdown, I concentrated on the beginMask/endMask concept. This causes realy poor changes on the SVG code path (I mentioned it in one of the comments above).
At the end, your patch is the right direction. The Qt guys should look at the results, maybe they know why we don&apos;t see the expected results.
But we shouldn&apos;t land this patch until this problem is resolved. It&apos;s bad to have a clipToImageBuffer implementation that may, or may not work.
I&apos;ll give you a r- for this reason. Ask the Qt guys for help and if  this issue needs to be fixed on the Qt-side or somehow on the webkit side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221058</commentid>
    <comment_count>29</comment_count>
      <attachid>55108</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-05 04:49:59 -0700</bug_when>
    <thetext>Created attachment 55108
porter duff based version again

This patch is mainly for Tronical to review (basically the same as before, just an updated Changelog)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221069</commentid>
    <comment_count>30</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-05 05:43:42 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Created an attachment (id=55108) [details]
&gt; porter duff based version again
&gt; 
&gt; This patch is mainly for Tronical to review (basically the same as before, just
&gt; an updated Changelog)

How do you plan to solve the last issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221077</commentid>
    <comment_count>31</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-05 06:25:08 -0700</bug_when>
    <thetext>&gt; How do you plan to solve the last issues?

Discussing (#qtwebkit channel) the issue with Tronical, who is a Qt expert. He agrees with this solution, and happy about avoiding direct pixel manipulation. Just because the Qt X11 port has issues, the patch itself is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221553</commentid>
    <comment_count>32</comment_count>
      <attachid>55108</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-06 01:13:17 -0700</bug_when>
    <thetext>Comment on attachment 55108
porter duff based version again

WebCore/platform/graphics/qt/GraphicsContextQt.cpp:208
 +      QPixmap* alphaMask;
QPixmap is actually a pointer to a QPixmapData object. Storing a QPixmap pointer is a double indirection, and later in the patch we allocate a QPixmap on the heap. That&apos;s not necessary. I think the code would be simpler and faster when using a QPixmpap by value here.

WebCore/ChangeLog:11
 +          inTransparencyLayer() is removed as it is unnecessary.
This is not correct. When building QtWebKit for Windows we compile WebCore/plugins/PluginViewWin.cpp, which calls this function.

Otherwise this looks good to me. Less pixel manipulation. yay :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222287</commentid>
    <comment_count>33</comment_count>
      <attachid>55366</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-07 05:21:24 -0700</bug_when>
    <thetext>Created attachment 55366
next patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223316</commentid>
    <comment_count>34</comment_count>
      <attachid>55366</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-10 08:08:43 -0700</bug_when>
    <thetext>Comment on attachment 55366
next patch

layout tests are passed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227271</commentid>
    <comment_count>35</comment_count>
      <attachid>56364</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-18 06:08:34 -0700</bug_when>
    <thetext>Created attachment 56364
another patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227272</commentid>
    <comment_count>36</comment_count>
      <attachid>56364</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-18 06:10:43 -0700</bug_when>
    <thetext>Comment on attachment 56364
another patch

We discussed the patch online and this new patch incorporates mine and Simon&apos;s comments. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227275</commentid>
    <comment_count>37</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-05-18 06:26:57 -0700</bug_when>
    <thetext>Landed in 59668: http://trac.webkit.org/changeset/59668
Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227662</commentid>
    <comment_count>38</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-18 22:07:51 -0700</bug_when>
    <thetext>Revision r59668 cherry-picked into qtwebkit-2.0 with commit ef200e2a3259185c99bfa2cedc67abb1dc0e256b</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227782</commentid>
    <comment_count>39</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-19 05:38:17 -0700</bug_when>
    <thetext>Follow up fix landed in r59713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227810</commentid>
    <comment_count>40</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-19 07:14:16 -0700</bug_when>
    <thetext>&lt;cherry-pick-from-backport: r59713&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228267</commentid>
    <comment_count>41</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-20 01:23:28 -0700</bug_when>
    <thetext>Revision r59713 cherry-picked into qtwebkit-2.0 with commit d25f3446f1156215d57695bc3a99322e1fc7f365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353566</commentid>
    <comment_count>42</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-02-18 06:40:20 -0800</bug_when>
    <thetext>I unskipped tests fixed by this bug: http://trac.webkit.org/changeset/78999</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28173</attachid>
            <date>2009-03-02 07:20:23 -0800</date>
            <delta_ts>2010-05-18 06:08:34 -0700</delta_ts>
            <desc>first try</desc>
            <filename>qt-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>2461</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwCShyZXZpc2lvbiA0MDgyOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiUGVuLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1
ZGUgPFFCaXRtYXA+CiAjaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNp
bmNsdWRlIDxRUGFpbnRlcj4KQEAgLTIwNSw2ICsyMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBh
bnRpQWxpYXNpbmdGb3JSZWN0c0FuZExpbmVzOwogCiAgICAgUVN0YWNrPFRyYW5zcGFyZW5jeUxh
eWVyICo+IGxheWVyczsKKyAgICBRU3RhY2s8aW50PiBjb3VudFNhdmVzRHVyaW5nTWFza2luZzsK
KyAgICBRU3RhY2s8UVBpeG1hcD4gY2xpcHBlZEltYWdlQnVmZmVyOwogICAgIFFQYWludGVyKiBy
ZWRpcmVjdDsKIAogICAgIFFCcnVzaCBzb2xpZENvbG9yOwpAQCAtMjcyLDExICsyNzUsMjYgQEAg
VHJhbnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3NDb250ZXh0OjpnZQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogeworICAgIGlmICghbV9kYXRhLT5jb3VudFNh
dmVzRHVyaW5nTWFza2luZy5lbXB0eSgpKQorICAgICAgICBtX2RhdGEtPmNvdW50U2F2ZXNEdXJp
bmdNYXNraW5nLnRvcCgpKys7CiAgICAgbV9kYXRhLT5wKCktPnNhdmUoKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKIHsKKyAgICBpZiAoIW1fZGF0
YS0+Y291bnRTYXZlc0R1cmluZ01hc2tpbmcuZW1wdHkoKSkgeworICAgICAgICBpZiAobV9kYXRh
LT5jb3VudFNhdmVzRHVyaW5nTWFza2luZy50b3AoKSkKKyAgICAgICAgICAgICBtX2RhdGEtPmNv
dW50U2F2ZXNEdXJpbmdNYXNraW5nLnRvcCgpLS07CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgIG1fZGF0YS0+Y291bnRTYXZlc0R1cmluZ01hc2tpbmcucG9wKCk7CisgICAgICAgICAgICAg
VHJhbnNwYXJlbmN5TGF5ZXIgKmxheWVyID0gbV9kYXRhLT5sYXllcnMucG9wKCk7CisgICAgICAg
ICAgICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7CisgICAgICAgICAgICAgUVBpeG1hcCBtYXNrID0g
bV9kYXRhLT5jbGlwcGVkSW1hZ2VCdWZmZXIucG9wKCk7CisgICAgICAgICAgICAgbGF5ZXItPnBp
eG1hcC5zZXRNYXNrKG1hc2subWFzaygpKTsKKyAgICAgICAgICAgICBtX2RhdGEtPnAoKS0+ZHJh
d1BpeG1hcChsYXllci0+b2Zmc2V0LCBsYXllci0+cGl4bWFwKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIG1fZGF0YS0+cCgpLT5yZXN0b3JlKCk7CiAKICAgICBpZiAoIW1fZGF0YS0+Y3VycmVu
dFBhdGguaXNFbXB0eSgpICYmIG1fY29tbW9uLT5zdGF0ZS5wYXRoVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKSB7CkBAIC05OTUsOSArMTAxMywyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dEVsbGlwc2VJblJlCiAgICAgcC0+c2V0Q2xpcFBhdGgobmV3Q2xpcCwgUXQ6OkludGVyc2Vj
dENsaXApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUVBhaW50ZXIgKnAgPSBtX2Rh
dGEtPnAoKTsKKyAgICBpZiAoIXAtPnBhaW50RW5naW5lKCktPmhhc0ZlYXR1cmUoUVBhaW50RW5n
aW5lOjpQb3J0ZXJEdWZmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLT5jb3VudFNh
dmVzRHVyaW5nTWFza2luZy5wdXNoKDApOworICAgIG1fZGF0YS0+Y2xpcHBlZEltYWdlQnVmZmVy
LnB1c2goKihpbWFnZUJ1ZmZlci0+aW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSkpOworCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIgKiBsYXllciA9IG5ldyBUcmFuc3BhcmVuY3lM
YXllcihtX2RhdGEtPnAoKSwgUVJlY3QocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpKTsKKyAgICBtX2RhdGEtPmxheWVycy5wdXNoKGxheWVyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJl
Y3QmIHJlY3QsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28174</attachid>
            <date>2009-03-02 07:28:25 -0800</date>
            <delta_ts>2009-09-10 07:46:52 -0700</delta_ts>
            <desc>second try</desc>
            <filename>qt-clipToImageBuffer-with-composite-operator.patch</filename>
            <type>text/plain</type>
            <size>6345</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTMyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDMtMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBwdXRJbWFnZURhdGEgdG8gUXQuCisKKyAgICAgICAgW1FUXSBsYWNrcyBwdXRJbWFnZURhdGEg
c3VwcG9ydCBpbiBDYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTg2CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRJbWFnZURhdGEp
OgorCiAyMDA5LTAyLTI4ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAJKHJldmlzaW9u
IDQxMjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJQZW4uaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCisjaW5jbHVkZSA8UUJpdG1hcD4KICNpbmNs
dWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludGVyPgpA
QCAtMjA1LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGFudGlBbGlhc2luZ0ZvclJlY3Rz
QW5kTGluZXM7CiAKICAgICBRU3RhY2s8VHJhbnNwYXJlbmN5TGF5ZXIgKj4gbGF5ZXJzOworICAg
IFFTdGFjazxpbnQ+IGNvdW50U2F2ZXNEdXJpbmdNYXNraW5nOwogICAgIFFQYWludGVyKiByZWRp
cmVjdDsKIAogICAgIFFCcnVzaCBzb2xpZENvbG9yOwpAQCAtMjcyLDExICsyNzQsMjggQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3NDb250ZXh0OjpnZQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogeworICAgIGlmICghbV9kYXRhLT5jb3VudFNhdmVz
RHVyaW5nTWFza2luZy5lbXB0eSgpKQorICAgICAgICBtX2RhdGEtPmNvdW50U2F2ZXNEdXJpbmdN
YXNraW5nLnRvcCgpKys7CiAgICAgbV9kYXRhLT5wKCktPnNhdmUoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKIHsKKyAgICBpZiAoIW1fZGF0YS0+
Y291bnRTYXZlc0R1cmluZ01hc2tpbmcuZW1wdHkoKSkgeworICAgICAgICBpZiAobV9kYXRhLT5j
b3VudFNhdmVzRHVyaW5nTWFza2luZy50b3AoKSkKKyAgICAgICAgICAgICBtX2RhdGEtPmNvdW50
U2F2ZXNEdXJpbmdNYXNraW5nLnRvcCgpLS07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
IG1fZGF0YS0+Y291bnRTYXZlc0R1cmluZ01hc2tpbmcucG9wKCk7CisgICAgICAgICAgICAgVHJh
bnNwYXJlbmN5TGF5ZXIgKmxheWVyID0gbV9kYXRhLT5sYXllcnMucG9wKCk7CisgICAgICAgICAg
ICAgbGF5ZXItPnBhaW50ZXIuZW5kKCk7CisgICAgICAgICAgICAgbV9kYXRhLT5wKCktPmRyYXdQ
aXhtYXAobGF5ZXItPm9mZnNldCwgbGF5ZXItPnBpeG1hcCk7CisKKyAgICAgICAgICAgICBUcmFu
c3BhcmVuY3lMYXllciAqbWFza0xheWVyID0gbV9kYXRhLT5sYXllcnMucG9wKCk7CisgICAgICAg
ICAgICAgbWFza0xheWVyLT5wYWludGVyLmVuZCgpOworICAgICAgICAgICAgIG1fZGF0YS0+cCgp
LT5kcmF3UGl4bWFwKG1hc2tMYXllci0+b2Zmc2V0LCBtYXNrTGF5ZXItPnBpeG1hcCk7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBtX2RhdGEtPnAoKS0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFt
X2RhdGEtPmN1cnJlbnRQYXRoLmlzRW1wdHkoKSAmJiBtX2NvbW1vbi0+c3RhdGUucGF0aFRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkgewpAQCAtOTk1LDkgKzEwMTQsMjkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZQogICAgIHAtPnNldENsaXBQYXRoKG5ld0NsaXAs
IFF0OjpJbnRlcnNlY3RDbGlwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlQnVmZmVyKikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQYWlu
dGVyICpwID0gbV9kYXRhLT5wKCk7CisgICAgaWYgKCFwLT5wYWludEVuZ2luZSgpLT5oYXNGZWF0
dXJlKFFQYWludEVuZ2luZTo6UG9ydGVyRHVmZikpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZGF0YS0+Y291bnRTYXZlc0R1cmluZ01hc2tpbmcucHVzaCgwKTsKKworICAgIFFSZWN0IHFyZWN0
KFFSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7
CisKKyAgICBUcmFuc3BhcmVuY3lMYXllciAqIG1hc2tMYXllciA9IG5ldyBUcmFuc3BhcmVuY3lM
YXllcihtX2RhdGEtPnAoKSwgcXJlY3QpOworICAgIG1fZGF0YS0+bGF5ZXJzLnB1c2gobWFza0xh
eWVyKTsKKworICAgIHAtPmRyYXdQaXhtYXAocXJlY3QsICooaW1hZ2VCdWZmZXItPmltYWdlKCkt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKTsKKyAgICBwLT5zZXRDb21wb3NpdGlvbk1v
ZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VJbik7CisKKyAgICBUcmFuc3BhcmVu
Y3lMYXllciAqIGxheWVyID0gbmV3IFRyYW5zcGFyZW5jeUxheWVyKG1fZGF0YS0+cCgpLCBxcmVj
dCk7CisgICAgbV9kYXRhLT5sYXllcnMucHVzaChsYXllcik7CisKKyAgICBwLT5zZXRDb21wb3Np
dGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VPdmVyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3Qm
IHJlY3QsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZm
ZXJRdC5jcHAJKHJldmlzaW9uIDQxMjkzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZUJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNyArMzIsNiBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlN0
aWxsSW1hZ2VRdC5oIgogCiAjaW5jbHVkZSA8UUJ1ZmZlcj4KQEAgLTEzNCw5ICsxMzQsNjMgQEAg
UGFzc1JlZlB0cjxJbWFnZURhdGE+IEltYWdlQnVmZmVyOjpnZXRJbQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YShJbWFnZURhdGEqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmKQordm9pZCBJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VE
YXRhKEltYWdlRGF0YSogc291cmNlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRQb2ludCYgZGVzdFBvaW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJU
KHNvdXJjZVJlY3Qud2lkdGgoKSA+IDApOworICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgp
ID4gMCk7CisKKyAgICBpbnQgb3JpZ2lueCA9IHNvdXJjZVJlY3QueCgpOworICAgIGludCBkZXN0
eCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKTsKKyAgICBBU1NFUlQoZGVzdHggPj0g
MCk7CisgICAgQVNTRVJUKGRlc3R4IDwgbV9zaXplLndpZHRoKCkpOworICAgIEFTU0VSVChvcmln
aW54ID49IDApOworICAgIEFTU0VSVChvcmlnaW54IDw9IHNvdXJjZVJlY3QucmlnaHQoKSk7CisK
KyAgICBpbnQgZW5keCA9IGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LnJpZ2h0KCk7CisgICAg
QVNTRVJUKGVuZHggPD0gbV9zaXplLndpZHRoKCkpOworCisgICAgaW50IG51bUNvbHVtbnMgPSBl
bmR4IC0gZGVzdHg7CisKKyAgICBpbnQgb3JpZ2lueSA9IHNvdXJjZVJlY3QueSgpOworICAgIGlu
dCBkZXN0eSA9IGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0LnkoKTsKKyAgICBBU1NFUlQoZGVz
dHkgPj0gMCk7CisgICAgQVNTRVJUKGRlc3R5IDwgbV9zaXplLmhlaWdodCgpKTsKKyAgICBBU1NF
UlQob3JpZ2lueSA+PSAwKTsKKyAgICBBU1NFUlQob3JpZ2lueSA8PSBzb3VyY2VSZWN0LmJvdHRv
bSgpKTsKKworICAgIGludCBlbmR5ID0gZGVzdFBvaW50LnkoKSArIHNvdXJjZVJlY3QuYm90dG9t
KCk7CisgICAgQVNTRVJUKGVuZHkgPD0gbV9zaXplLmhlaWdodCgpKTsKKyAgICBpbnQgbnVtUm93
cyA9IGVuZHkgLSBkZXN0eTsKKworICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNv
dXJjZS0+d2lkdGgoKTsKKworICAgIGJvb2wgaXNQYWludGluZyA9IG1fZGF0YS5tX3BhaW50ZXIt
PmlzQWN0aXZlKCk7CisgICAgaWYgKGlzUGFpbnRpbmcpCisgICAgICAgIG1fZGF0YS5tX3BhaW50
ZXItPmVuZCgpOworICAgIFFJbWFnZSBpbWFnZSA9IG1fZGF0YS5tX3BpeG1hcC50b0ltYWdlKCk7
CisgICAgaWYgKGltYWdlLmZvcm1hdCgpICE9IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMikKKyAgICAg
ICAgaW1hZ2UgPSBpbWFnZS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsK
KyAgICBBU1NFUlQoaW1hZ2UpOworCisgICAgdW5zaWduZWQgY2hhciogc3JjUm93cyA9IHNvdXJj
ZS0+ZGF0YSgpLT5kYXRhKCktPmRhdGEoKSArIG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9y
aWdpbnggKiA0OworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbnVtUm93czsgKyt5KSB7CisgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgbnVtQ29sdW1uczsgeCsrKSB7CisgICAgICAgICAgICBp
bnQgYmFzZXggPSB4ICogNDsKKyAgICAgICAgICAgIFFSZ2IgdmFsdWUgPSBxUmdiYSgKKyAgICAg
ICAgICAgICAgICBzcmNSb3dzW2Jhc2V4XSwKKyAgICAgICAgICAgICAgICBzcmNSb3dzW2Jhc2V4
ICsgMV0sCisgICAgICAgICAgICAgICAgc3JjUm93c1tiYXNleCArIDJdLAorICAgICAgICAgICAg
ICAgIHNyY1Jvd3NbYmFzZXggKyAzXSk7CisKKyAgICAgICAgICAgIGltYWdlLnNldFBpeGVsKHgg
KyBkZXN0eCwgeSArIGRlc3R5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgc3JjUm93cyAr
PSBzcmNCeXRlc1BlclJvdzsKKyAgICB9CisgICAgaW1hZ2UgPSBpbWFnZS5jb252ZXJ0VG9Gb3Jt
YXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgIG1fZGF0YS5tX3Bp
eG1hcCA9IFFQaXhtYXA6OmZyb21JbWFnZShpbWFnZSk7CisKKyAgICBpZiAoaXNQYWludGluZykK
KyAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiB9CiAK
IC8vIFdlIGdldCBhIG1pbWVUeXBlIGhlcmUgYnV0IFFJbWFnZVdyaXRlciBkb2VzIG5vdCBzdXBw
b3J0IG1pbWV0eXBlcyBidXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39348</attachid>
            <date>2009-09-10 07:46:52 -0700</date>
            <delta_ts>2010-05-18 06:08:34 -0700</delta_ts>
            <desc>second try of second try</desc>
            <filename>qt-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>3727</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODI1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMDktMTAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBwdXRJbWFnZURhdGEgdG8gUXQuCisKKyAgICAgICAgW1F0XSBsYWNrcyBjbGlwVG9JbWFnZUJ1
ZmZlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDI4OQorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIGNsaXBUb0ltYWdlQnVmZmVyIGluIFF0
LgorCisgICAgICAgIFRoZXJlIGlzIGFscmVhZHkgYSB0ZXN0IGZvciBjbGlwVG9JbWFnZUJ1ZmZl
cgorICAgICAgICBUZXN0OiBzdmcvVzNDL21hc2tpbmctbWFzay0wMS1iLnN2ZworICAgICAgICAg
ICAgICBzdmcvVzNDL21hc2tpbmctaW50cm8tMDEtZi5zdmcKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKwogMjAwOS0wOS0wOSAgU3RldmUg
QmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gNDgyNDgpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlBlbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAKKyNpbmNsdWRlIDxRQml0bWFwPgogI2luY2x1ZGUgPFFCcnVzaD4KICNp
bmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgpAQCAtMjE3LDYgKzIxOCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGFudGlBbGlhc2luZ0ZvclJlY3RzQW5kTGluZXM7CiAKICAgICBR
U3RhY2s8VHJhbnNwYXJlbmN5TGF5ZXIqPiBsYXllcnM7CisgICAgUVN0YWNrPGludD4gY291bnRT
YXZlc0R1cmluZ01hc2tpbmc7CiAgICAgUVBhaW50ZXIqIHJlZGlyZWN0OwogCiAgICAgUUJydXNo
IHNvbGlkQ29sb3I7CkBAIC0yODYsMTEgKzI4OCwyOCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBH
cmFwaGljc0NvbnRleHQ6OmdlCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1T
dGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmNvdW50U2F2ZXNEdXJpbmdNYXNraW5nLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9kYXRhLT5jb3VudFNhdmVzRHVyaW5nTWFza2luZy50b3AoKSsrOwog
ICAgIG1fZGF0YS0+cCgpLT5zYXZlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0
b3JlUGxhdGZvcm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmNvdW50U2F2ZXNEdXJpbmdN
YXNraW5nLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9kYXRhLT5jb3VudFNhdmVzRHVyaW5n
TWFza2luZy50b3AoKSkKKyAgICAgICAgICAgICBtX2RhdGEtPmNvdW50U2F2ZXNEdXJpbmdNYXNr
aW5nLnRvcCgpLS07CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgIG1fZGF0YS0+Y291bnRT
YXZlc0R1cmluZ01hc2tpbmcucG9wKCk7CisgICAgICAgICAgICAgVHJhbnNwYXJlbmN5TGF5ZXIg
KmxheWVyID0gbV9kYXRhLT5sYXllcnMucG9wKCk7CisgICAgICAgICAgICAgbGF5ZXItPnBhaW50
ZXIuZW5kKCk7CisgICAgICAgICAgICAgbV9kYXRhLT5wKCktPmRyYXdQaXhtYXAobGF5ZXItPm9m
ZnNldCwgbGF5ZXItPnBpeG1hcCk7CisKKyAgICAgICAgICAgICBUcmFuc3BhcmVuY3lMYXllciAq
bWFza0xheWVyID0gbV9kYXRhLT5sYXllcnMucG9wKCk7CisgICAgICAgICAgICAgbWFza0xheWVy
LT5wYWludGVyLmVuZCgpOworICAgICAgICAgICAgIG1fZGF0YS0+cCgpLT5kcmF3UGl4bWFwKG1h
c2tMYXllci0+b2Zmc2V0LCBtYXNrTGF5ZXItPnBpeG1hcCk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICBtX2RhdGEtPnAoKS0+cmVzdG9yZSgpOwogCiAgICAgaWYgKCFtX2RhdGEtPmN1cnJlbnRQ
YXRoLmlzRW1wdHkoKSAmJiBtX2NvbW1vbi0+c3RhdGUucGF0aFRyYW5zZm9ybS5pc0ludmVydGli
bGUoKSkgewpAQCAtMTE1MCw5ICsxMTY5LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlw
T3V0RWxsaXBzZUluUmUKICAgICBwLT5zZXRDbGlwUGF0aChuZXdDbGlwLCBRdDo6SW50ZXJzZWN0
Q2xpcCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcFRvSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBRUGFpbnRlciAqcCA9IG1fZGF0
YS0+cCgpOworICAgIGlmICghcC0+cGFpbnRFbmdpbmUoKS0+aGFzRmVhdHVyZShRUGFpbnRFbmdp
bmU6OlBvcnRlckR1ZmYpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEtPmNvdW50U2F2
ZXNEdXJpbmdNYXNraW5nLnB1c2goMCk7CisgICAgUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZSBj
dXJyZW50Q29tcG9zaXRpb25Nb2RlID0gcC0+Y29tcG9zaXRpb25Nb2RlKCk7CisKKyAgICBRUmVj
dCBxcmVjdChRUmVjdEYocmVjdCkudG9SZWN0KCkpOworCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIg
Km1hc2tMYXllciA9IG5ldyBUcmFuc3BhcmVuY3lMYXllcihtX2RhdGEtPnAoKSwgcXJlY3QpOwor
ICAgIG1fZGF0YS0+bGF5ZXJzLnB1c2gobWFza0xheWVyKTsKKworICAgIHAtPmRyYXdQaXhtYXAo
cXJlY3QsICooaW1hZ2VCdWZmZXItPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkpKTsKKyAgICBwLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2VJbik7CisKKyAgICBUcmFuc3BhcmVuY3lMYXllciAqbGF5ZXIgPSBuZXcgVHJhbnNw
YXJlbmN5TGF5ZXIobV9kYXRhLT5wKCksIHFyZWN0KTsKKyAgICBtX2RhdGEtPmxheWVycy5wdXNo
KGxheWVyKTsKKworICAgIHAtPnNldENvbXBvc2l0aW9uTW9kZShjdXJyZW50Q29tcG9zaXRpb25N
b2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlY3RDbGlw
KGNvbnN0IEludFJlY3QmIHJlY3QsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54414</attachid>
            <date>2010-04-27 06:46:28 -0700</date>
            <delta_ts>2010-04-28 06:53:08 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>7333</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBjZjQwOTNlY2Y0NWNlOTU4ZDI0NjRlNDNjMjljYjdjMmRmYWIzYmY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDI3IEFwciAyMDEwIDE1OjQxOjQ3ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gY2xpcFRvSW1hZ2VCdWZmZXIKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVy
Y3plZ0BpbmYudS1zemVnZWQuaHU+Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDEgLQogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgfCAgIDkxICsrKysrKysrKysrKysrKyst
LS0KIDMgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBl
MzI5ZmMyLi4xZmIzNzBlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEwLTA0LTI3ICBab2x0YW4gSGVyY3pl
ZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnRpbmcgY2xpcFRvSW1hZ2VCdWZmZXIgZm9y
IFF0IHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDI4OQorCisgICAgICAgIFRoZSBRdCBpbXBsZW1lbnRhdGlvbiBvZiBjbGlwVG9JbWFnZUJ1
ZmZlciB1c2VzIGEgOCBiaXQKKyAgICAgICAgUkdCQSBRSW1hZ2UgdG8gY29sbGVjdCBwaXhlbCBk
YXRhIGFzIGEgbGF5ZXIsIGFuZCBjb21iaW5lcworICAgICAgICBpdCB3aXRoIHRoZSBhbHBoYSBj
aGFubmVsIG9mIHRoZSBtYXNrIGltYWdlLgorCisgICAgICAgIGluVHJhbnNwYXJlbmN5TGF5ZXIo
KSBpcyByZW1vdmVkIGFzIGl0IGlzIHVubmVjZXNzYXJ5LgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5
TGF5ZXI6OlRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUxheWVyOjp+VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJl
bmN5TGF5ZXI6Oik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQ
bGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisKIDIwMTAtMDQtMjUgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMWY5OWRhYi4uZTIyZDI3
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0z
NzUsNyArMzc1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShRVCkKLSAgICAgICAgYm9vbCBpblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3Q7CiAgICAgICAg
IFBsYXRmb3JtUGF0aCogY3VycmVudFBhdGgoKTsKICAgICAgICAgUVBlbiBwZW4oKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAppbmRleCBlZGFjMjY4Li4yNzM2ZGU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTY3LDEyICsxNjcsMTkgQEAg
c3RhdGljIGlubGluZSBRdDo6RmlsbFJ1bGUgdG9RdEZpbGxSdWxlKFdpbmRSdWxlIHJ1bGUpCiB9
CiAKIHN0cnVjdCBUcmFuc3BhcmVuY3lMYXllciA6IEZhc3RBbGxvY0Jhc2UgewotICAgIFRyYW5z
cGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCkKLSAgICAg
ICAgOiBwaXhtYXAocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKQorICAgIFRyYW5zcGFyZW5j
eUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCwgdWNoYXIqIGFscGhh
TWFzayA9IDApCisgICAgICAgIDogYWxwaGFNYXNrKGFscGhhTWFzaykKICAgICB7CiAgICAgICAg
IG9mZnNldCA9IHJlY3QudG9wTGVmdCgpOwotICAgICAgICBwaXhtYXAuZmlsbChRdDo6dHJhbnNw
YXJlbnQpOwotICAgICAgICBwYWludGVyLmJlZ2luKCZwaXhtYXApOworICAgICAgICBpZiAoIWFs
cGhhTWFzaykgeworICAgICAgICAgICAgdS5waXhtYXAgPSBuZXcgUVBpeG1hcChyZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgdS5waXhtYXAtPmZpbGwoUXQ6OnRyYW5z
cGFyZW50KTsKKyAgICAgICAgICAgIHBhaW50ZXIuYmVnaW4odS5waXhtYXApOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdS5pbWFnZSA9IG5ldyBRSW1hZ2UocmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgICAgICAgICAgdS5pbWFn
ZS0+ZmlsbChRQ29sb3IoUXQ6OnRyYW5zcGFyZW50KS5yZ2JhKCkpOworICAgICAgICAgICAgcGFp
bnRlci5iZWdpbih1LmltYWdlKTsKKyAgICAgICAgfQogICAgICAgICBwYWludGVyLnNldFJlbmRl
ckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZywgcC0+dGVzdFJlbmRlckhpbnQoUVBhaW50ZXI6
OkFudGlhbGlhc2luZykpOwogICAgICAgICBwYWludGVyLnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAg
ICAgICAgcGFpbnRlci5zZXRQZW4ocC0+cGVuKCkpOwpAQCAtMTgyLDE3ICsxODksMzMgQEAgc3Ry
dWN0IFRyYW5zcGFyZW5jeUxheWVyIDogRmFzdEFsbG9jQmFzZSB7CiAgICAgICAgIHBhaW50ZXIu
c2V0Rm9udChwLT5mb250KCkpOwogICAgICAgICBpZiAocGFpbnRlci5wYWludEVuZ2luZSgpLT5o
YXNGZWF0dXJlKFFQYWludEVuZ2luZTo6UG9ydGVyRHVmZikpCiAgICAgICAgICAgICBwYWludGVy
LnNldENvbXBvc2l0aW9uTW9kZShwLT5jb21wb3NpdGlvbk1vZGUoKSk7Ci0gICAgICAgIHBhaW50
ZXIuc2V0Q2xpcFBhdGgocC0+Y2xpcFBhdGgoKSk7CisgICAgICAgIGlmICghYWxwaGFNYXNrKQor
ICAgICAgICAgICAgcGFpbnRlci5zZXRDbGlwUGF0aChwLT5jbGlwUGF0aCgpKTsKICAgICB9CiAK
ICAgICBUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgewogICAgIH0KIAotICAgIFFQaXhtYXAgcGl4
bWFwOworICAgIH5UcmFuc3BhcmVuY3lMYXllcigpCisgICAgeworICAgICAgICBpZiAoIWFscGhh
TWFzaykKKyAgICAgICAgICAgIGRlbGV0ZSB1LnBpeG1hcDsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBmYXN0RnJlZShhbHBoYU1hc2spOworICAgICAgICAgICAgZGVsZXRlIHUuaW1hZ2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bmlvbiB7CisgICAgICAgIFFQaXhtYXAqIHBpeG1h
cDsKKyAgICAgICAgUUltYWdlKiBpbWFnZTsKKyAgICB9IHU7CiAgICAgUVBvaW50IG9mZnNldDsK
ICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CisgICAgLy8gZm9yIGNs
aXBUb0ltYWdlQnVmZmVyCisgICAgdWNoYXIqIGFscGhhTWFzazsKIHByaXZhdGU6CiAgICAgVHJh
bnNwYXJlbmN5TGF5ZXIoY29uc3QgVHJhbnNwYXJlbmN5TGF5ZXIgJikge30KICAgICBUcmFuc3Bh
cmVuY3lMYXllciAmIG9wZXJhdG9yPShjb25zdCBUcmFuc3BhcmVuY3lMYXllciAmKSB7IHJldHVy
biAqdGhpczsgfQpAQCAtMjk0LDYgKzMxNyw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZl
UGxhdGZvcm1TdGF0ZSgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1T
dGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgbV9kYXRhLT5s
YXllcnMudG9wKCktPmFscGhhTWFzaykKKyAgICAgICAgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
KwogICAgIG1fZGF0YS0+cCgpLT5yZXN0b3JlKCk7CiAKICAgICBpZiAoIW1fZGF0YS0+Y3VycmVu
dFBhdGguaXNFbXB0eSgpICYmIG1fY29tbW9uLT5zdGF0ZS5wYXRoVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKSB7CkBAIC02NzYsMTEgKzcwMiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgbV9kYXRhLT5jdXJyZW50UGF0aCA9IG5ld1BhdGg7
CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0OjppblRyYW5zcGFyZW5jeUxheWVyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gIW1fZGF0YS0+bGF5ZXJzLmlzRW1wdHkoKTsKLX0KLQogUGxhdGZvcm1Q
YXRoKiBHcmFwaGljc0NvbnRleHQ6OmN1cnJlbnRQYXRoKCkKIHsKICAgICByZXR1cm4gJm1fZGF0
YS0+Y3VycmVudFBhdGg7CkBAIC04NTQsOCArODc1LDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsK
ICAgICBwLT5zYXZlKCk7CiAgICAgcC0+cmVzZXRUcmFuc2Zvcm0oKTsKLSAgICBwLT5zZXRPcGFj
aXR5KGxheWVyLT5vcGFjaXR5KTsKLSAgICBwLT5kcmF3UGl4bWFwKGxheWVyLT5vZmZzZXQsIGxh
eWVyLT5waXhtYXApOworICAgIGlmICghbGF5ZXItPmFscGhhTWFzaykgeworICAgICAgICBwLT5z
ZXRPcGFjaXR5KGxheWVyLT5vcGFjaXR5KTsKKyAgICAgICAgcC0+ZHJhd1BpeG1hcChsYXllci0+
b2Zmc2V0LCAqbGF5ZXItPnUucGl4bWFwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgaGVp
Z2h0ID0gbGF5ZXItPnUuaW1hZ2UtPmhlaWdodCgpOworICAgICAgICBpbnQgd2lkdGggPSBsYXll
ci0+dS5pbWFnZS0+d2lkdGgoKSAqIDQ7CisgICAgICAgIHVjaGFyKiBhbHBoYU1hc2sgPSBsYXll
ci0+YWxwaGFNYXNrOworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7
CisgICAgICAgICAgICB1Y2hhciogc2NhbkxpbmUgPSBsYXllci0+dS5pbWFnZS0+c2NhbkxpbmUo
eSk7CisgICAgICAgICAgICB1Y2hhciogc2NhbkxpbmVFbmQgPSBzY2FuTGluZSArIHdpZHRoOwor
ICAgICAgICAgICAgLy8gRm9yIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMsIHRoZSBzY2FuTGluZSBz
aG91bGQgYmUgaW5jcmVhc2VkIGJ5IDMKKyNpZiAhQ1BVKEJJR19FTkRJQU4pCisgICAgICAgICAg
ICBzY2FuTGluZSArPSAzOworI2VuZGlmCisgICAgICAgICAgICBmb3IgKCA7IHNjYW5MaW5lIDwg
c2NhbkxpbmVFbmQ7IHNjYW5MaW5lICs9IDQpCisgICAgICAgICAgICAgICAgKnNjYW5MaW5lID0g
KChpbnQpKnNjYW5MaW5lICogKGludCkqYWxwaGFNYXNrKyspIC8gMjU1OworICAgICAgICB9Cisg
ICAgICAgIHAtPmRyYXdJbWFnZShsYXllci0+b2Zmc2V0LCAqbGF5ZXItPnUuaW1hZ2UpOworICAg
IH0KICAgICBwLT5yZXN0b3JlKCk7CiAKICAgICBkZWxldGUgbGF5ZXI7CkBAIC0xMDg2LDkgKzEx
MjQsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgZmxvYXRS
ZWN0LCBjb25zdCBJbWFnZUJ1ZmZlciogaW1hZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBJbnRSZWN0IHJlY3QoZmxvYXRSZWN0KTsKKyAgICBRUGl4bWFwKiBuYXRpdmVJbWFnZSA9
IGltYWdlLT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGlmICgh
bmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIFFJbWFnZSBtYXNrID0gbmF0aXZl
SW1hZ2UtPnRvSW1hZ2UoKTsKKyAgICBpZiAobWFzay53aWR0aCgpICE9IHJlY3Qud2lkdGgoKSB8
fCBtYXNrLmhlaWdodCgpICE9IHJlY3QuaGVpZ2h0KCkpCisgICAgICAgIG1hc2sgPSBtYXNrLnNj
YWxlZChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIG1hc2sgPSBtYXNrLmNvbnZl
cnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworCisgICAgdWNoYXIqIGFscGhhTWFz
ayA9ICh1Y2hhciopZmFzdE1hbGxvYyhyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogc2l6
ZW9mKHVjaGFyKSk7CisgICAgbV9kYXRhLT5sYXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5
ZXIobV9kYXRhLT5wKCksIHJlY3QsIGFscGhhTWFzaykpOworCisgICAgaW50IHdpZHRoID0gcmVj
dC53aWR0aCgpICogNDsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IHJlY3QuaGVpZ2h0KCk7ICsr
eSkgeworICAgICAgICAgY29uc3QgdWNoYXIqIHNjYW5MaW5lID0gbWFzay5zY2FuTGluZSh5KTsK
KyAgICAgICAgIGNvbnN0IHVjaGFyKiBzY2FuTGluZUVuZCA9IHNjYW5MaW5lICsgd2lkdGg7Cisg
ICAgICAgICAvLyBGb3IgbGl0dGxlIGVuZGlhbiBtYWNoaW5lcywgdGhlIHNjYW5MaW5lIHNob3Vs
ZCBiZSBpbmNyZWFzZWQgYnkgMworI2lmICFDUFUoQklHX0VORElBTikKKyAgICAgICAgIHNjYW5M
aW5lICs9IDM7CisjZW5kaWYKKyAgICAgICAgIGZvciAoIDsgc2NhbkxpbmUgPCBzY2FuTGluZUVu
ZDsgc2NhbkxpbmUgKz0gNCkKKyAgICAgICAgICAgICAqYWxwaGFNYXNrKysgPSAqc2NhbkxpbmU7
CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENs
aXAoY29uc3QgSW50UmVjdCYgcmVjdCwKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54561</attachid>
            <date>2010-04-28 06:53:08 -0700</date>
            <delta_ts>2010-04-29 04:30:25 -0700</delta_ts>
            <desc>final patch (I hope so)</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>7668</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA2ZWQ4NDZlNmM4NjVkZjU0YjYwM2JmYTk2YzRlYmJhY2NhMDA3MjFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDI4IEFwciAyMDEwIDA4OjU5OjM1ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gY2xpcFRvSW1hZ2VCdWZmZXIKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVy
Y3plZ0BpbmYudS1zemVnZWQuaHU+Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDEgLQogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgfCAgIDk2ICsrKysrKysrKysrKysrKysr
LS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGUzMjlmYzIuLjFmYjM3MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDQtMjcgIFpvbHRhbiBIZXJj
emVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIEltcGxlbWVudGluZyBjbGlwVG9JbWFnZUJ1ZmZlciBm
b3IgUXQgcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0Mjg5CisKKyAgICAgICAgVGhlIFF0IGltcGxlbWVudGF0aW9uIG9mIGNsaXBUb0ltYWdl
QnVmZmVyIHVzZXMgYSA4IGJpdAorICAgICAgICBSR0JBIFFJbWFnZSB0byBjb2xsZWN0IHBpeGVs
IGRhdGEgYXMgYSBsYXllciwgYW5kIGNvbWJpbmVzCisgICAgICAgIGl0IHdpdGggdGhlIGFscGhh
IGNoYW5uZWwgb2YgdGhlIG1hc2sgaW1hZ2UuCisKKyAgICAgICAgaW5UcmFuc3BhcmVuY3lMYXll
cigpIGlzIHJlbW92ZWQgYXMgaXQgaXMgdW5uZWNlc3NhcnkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVu
Y3lMYXllcjo6VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJl
bmN5TGF5ZXI6On5UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3Bh
cmVuY3lMYXllcjo6KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVzdG9y
ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKToKKwogMjAxMC0wNC0yNSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxZjk5ZGFiLi5lMjJk
MjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAg
LTM3NSw3ICszNzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKFFUKQotICAgICAgICBib29sIGluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdDsKICAgICAg
ICAgUGxhdGZvcm1QYXRoKiBjdXJyZW50UGF0aCgpOwogICAgICAgICBRUGVuIHBlbigpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCmluZGV4IGVkYWMyNjguLjQ1NDRhMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0xNjcsMTIgKzE2NywyMCBA
QCBzdGF0aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkK
IH0KIAogc3RydWN0IFRyYW5zcGFyZW5jeUxheWVyIDogRmFzdEFsbG9jQmFzZSB7Ci0gICAgVHJh
bnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNvbnN0IFFSZWN0ICZyZWN0KQotICAg
ICAgICA6IHBpeG1hcChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpCisgICAgVHJhbnNwYXJl
bmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNvbnN0IFFSZWN0ICZyZWN0LCB1Y2hhciogYWxw
aGFNYXNrID0gMCkKKyAgICAgICAgOiBhbHBoYU1hc2soYWxwaGFNYXNrKQorICAgICAgICAsIHNh
dmVSZXN0b3JlQ291bnRlcigxKQogICAgIHsKICAgICAgICAgb2Zmc2V0ID0gcmVjdC50b3BMZWZ0
KCk7Ci0gICAgICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7Ci0gICAgICAgIHBhaW50
ZXIuYmVnaW4oJnBpeG1hcCk7CisgICAgICAgIGlmICghYWxwaGFNYXNrKSB7CisgICAgICAgICAg
ICB1LnBpeG1hcCA9IG5ldyBRUGl4bWFwKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgICAgICAgICB1LnBpeG1hcC0+ZmlsbChRdDo6dHJhbnNwYXJlbnQpOworICAgICAgICAgICAg
cGFpbnRlci5iZWdpbih1LnBpeG1hcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1
LmltYWdlID0gbmV3IFFJbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIFFJbWFnZTo6
Rm9ybWF0X0FSR0IzMik7CisgICAgICAgICAgICB1LmltYWdlLT5maWxsKFFDb2xvcihRdDo6dHJh
bnNwYXJlbnQpLnJnYmEoKSk7CisgICAgICAgICAgICBwYWludGVyLmJlZ2luKHUuaW1hZ2UpOwor
ICAgICAgICB9CiAgICAgICAgIHBhaW50ZXIuc2V0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFs
aWFzaW5nLCBwLT50ZXN0UmVuZGVySGludChRUGFpbnRlcjo6QW50aWFsaWFzaW5nKSk7CiAgICAg
ICAgIHBhaW50ZXIudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICBwYWludGVyLnNldFBlbihw
LT5wZW4oKSk7CkBAIC0xODIsMTcgKzE5MCwzNCBAQCBzdHJ1Y3QgVHJhbnNwYXJlbmN5TGF5ZXIg
OiBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgcGFpbnRlci5zZXRGb250KHAtPmZvbnQoKSk7CiAg
ICAgICAgIGlmIChwYWludGVyLnBhaW50RW5naW5lKCktPmhhc0ZlYXR1cmUoUVBhaW50RW5naW5l
OjpQb3J0ZXJEdWZmKSkKICAgICAgICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKHAt
PmNvbXBvc2l0aW9uTW9kZSgpKTsKLSAgICAgICAgcGFpbnRlci5zZXRDbGlwUGF0aChwLT5jbGlw
UGF0aCgpKTsKKyAgICAgICAgaWYgKCFhbHBoYU1hc2spCisgICAgICAgICAgICBwYWludGVyLnNl
dENsaXBQYXRoKHAtPmNsaXBQYXRoKCkpOwogICAgIH0KIAogICAgIFRyYW5zcGFyZW5jeUxheWVy
KCkKICAgICB7CiAgICAgfQogCi0gICAgUVBpeG1hcCBwaXhtYXA7CisgICAgflRyYW5zcGFyZW5j
eUxheWVyKCkKKyAgICB7CisgICAgICAgIGlmICghYWxwaGFNYXNrKQorICAgICAgICAgICAgZGVs
ZXRlIHUucGl4bWFwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZhc3RGcmVlKGFscGhh
TWFzayk7CisgICAgICAgICAgICBkZWxldGUgdS5pbWFnZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHVuaW9uIHsKKyAgICAgICAgUVBpeG1hcCogcGl4bWFwOworICAgICAgICBRSW1hZ2UqIGlt
YWdlOworICAgIH0gdTsKICAgICBRUG9pbnQgb2Zmc2V0OwogICAgIFFQYWludGVyIHBhaW50ZXI7
CiAgICAgcXJlYWwgb3BhY2l0eTsKKyAgICAvLyBmb3IgY2xpcFRvSW1hZ2VCdWZmZXIKKyAgICB1
Y2hhciogYWxwaGFNYXNrOworICAgIGludCBzYXZlUmVzdG9yZUNvdW50ZXI7CiBwcml2YXRlOgog
ICAgIFRyYW5zcGFyZW5jeUxheWVyKGNvbnN0IFRyYW5zcGFyZW5jeUxheWVyICYpIHt9CiAgICAg
VHJhbnNwYXJlbmN5TGF5ZXIgJiBvcGVyYXRvcj0oY29uc3QgVHJhbnNwYXJlbmN5TGF5ZXIgJikg
eyByZXR1cm4gKnRoaXM7IH0KQEAgLTI4OSwxMSArMzE0LDE3IEBAIEFmZmluZVRyYW5zZm9ybSBH
cmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
YXZlUGxhdGZvcm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkg
JiYgbV9kYXRhLT5sYXllcnMudG9wKCktPmFscGhhTWFzaykKKyAgICAgICAgKyttX2RhdGEtPmxh
eWVycy50b3AoKS0+c2F2ZVJlc3RvcmVDb3VudGVyOwogICAgIG1fZGF0YS0+cCgpLT5zYXZlKCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Cisg
ICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgbV9kYXRhLT5sYXllcnMudG9wKCkt
PmFscGhhTWFzaykKKyAgICAgICAgaWYgKCEtLW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5zYXZlUmVz
dG9yZUNvdW50ZXIpCisgICAgICAgICAgICBlbmRUcmFuc3BhcmVuY3lMYXllcigpOworCiAgICAg
bV9kYXRhLT5wKCktPnJlc3RvcmUoKTsKIAogICAgIGlmICghbV9kYXRhLT5jdXJyZW50UGF0aC5p
c0VtcHR5KCkgJiYgbV9jb21tb24tPnN0YXRlLnBhdGhUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
IHsKQEAgLTY3NiwxMSArNzA3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKICAgICBtX2RhdGEtPmN1cnJlbnRQYXRoID0gbmV3UGF0aDsKIH0KIAot
Ym9vbCBHcmFwaGljc0NvbnRleHQ6OmluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAotewotICAg
IHJldHVybiAhbV9kYXRhLT5sYXllcnMuaXNFbXB0eSgpOwotfQotCiBQbGF0Zm9ybVBhdGgqIEdy
YXBoaWNzQ29udGV4dDo6Y3VycmVudFBhdGgoKQogewogICAgIHJldHVybiAmbV9kYXRhLT5jdXJy
ZW50UGF0aDsKQEAgLTg1NCw4ICs4ODAsMjUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRy
YW5zcGFyZW5jeUxheWVyKCkKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIHAt
PnNhdmUoKTsKICAgICBwLT5yZXNldFRyYW5zZm9ybSgpOwotICAgIHAtPnNldE9wYWNpdHkobGF5
ZXItPm9wYWNpdHkpOwotICAgIHAtPmRyYXdQaXhtYXAobGF5ZXItPm9mZnNldCwgbGF5ZXItPnBp
eG1hcCk7CisgICAgaWYgKCFsYXllci0+YWxwaGFNYXNrKSB7CisgICAgICAgIHAtPnNldE9wYWNp
dHkobGF5ZXItPm9wYWNpdHkpOworICAgICAgICBwLT5kcmF3UGl4bWFwKGxheWVyLT5vZmZzZXQs
ICpsYXllci0+dS5waXhtYXApOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBoZWlnaHQgPSBs
YXllci0+dS5pbWFnZS0+aGVpZ2h0KCk7CisgICAgICAgIGludCB3aWR0aCA9IGxheWVyLT51Lmlt
YWdlLT53aWR0aCgpICogNDsKKyAgICAgICAgdWNoYXIqIGFscGhhTWFzayA9IGxheWVyLT5hbHBo
YU1hc2s7CisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAg
ICAgICAgIHVjaGFyKiBzY2FuTGluZSA9IGxheWVyLT51LmltYWdlLT5zY2FuTGluZSh5KTsKKyAg
ICAgICAgICAgIHVjaGFyKiBzY2FuTGluZUVuZCA9IHNjYW5MaW5lICsgd2lkdGg7CisgICAgICAg
ICAgICAvLyBGb3IgbGl0dGxlIGVuZGlhbiBtYWNoaW5lcywgdGhlIHNjYW5MaW5lIHNob3VsZCBi
ZSBpbmNyZWFzZWQgYnkgMworI2lmICFDUFUoQklHX0VORElBTikKKyAgICAgICAgICAgIHNjYW5M
aW5lICs9IDM7CisjZW5kaWYKKyAgICAgICAgICAgIGZvciAoIDsgc2NhbkxpbmUgPCBzY2FuTGlu
ZUVuZDsgc2NhbkxpbmUgKz0gNCkKKyAgICAgICAgICAgICAgICAqc2NhbkxpbmUgPSAoKGludCkq
c2NhbkxpbmUgKiAoaW50KSphbHBoYU1hc2srKykgLyAyNTU7CisgICAgICAgIH0KKyAgICAgICAg
cC0+ZHJhd0ltYWdlKGxheWVyLT5vZmZzZXQsICpsYXllci0+dS5pbWFnZSk7CisgICAgfQogICAg
IHAtPnJlc3RvcmUoKTsKIAogICAgIGRlbGV0ZSBsYXllcjsKQEAgLTEwODYsOSArMTEyOSwzMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBmbG9hdFJlY3QsIGNv
bnN0IEltYWdlQnVmZmVyKiBpbWFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIElu
dFJlY3QgcmVjdChmbG9hdFJlY3QpOworICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
PmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJ
bWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUUltYWdlIG1hc2sgPSBuYXRpdmVJbWFnZS0+
dG9JbWFnZSgpOworICAgIGlmIChtYXNrLndpZHRoKCkgIT0gcmVjdC53aWR0aCgpIHx8IG1hc2su
aGVpZ2h0KCkgIT0gcmVjdC5oZWlnaHQoKSkKKyAgICAgICAgbWFzayA9IG1hc2suc2NhbGVkKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgbWFzayA9IG1hc2suY29udmVydFRvRm9y
bWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisKKyAgICB1Y2hhciogYWxwaGFNYXNrID0gKHVj
aGFyKilmYXN0TWFsbG9jKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiBzaXplb2YodWNo
YXIpKTsKKyAgICBtX2RhdGEtPmxheWVycy5wdXNoKG5ldyBUcmFuc3BhcmVuY3lMYXllcihtX2Rh
dGEtPnAoKSwgcmVjdCwgYWxwaGFNYXNrKSk7CisKKyAgICBpbnQgd2lkdGggPSByZWN0LndpZHRo
KCkgKiA0OworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVjdC5oZWlnaHQoKTsgKyt5KSB7Cisg
ICAgICAgICBjb25zdCB1Y2hhciogc2NhbkxpbmUgPSBtYXNrLnNjYW5MaW5lKHkpOworICAgICAg
ICAgY29uc3QgdWNoYXIqIHNjYW5MaW5lRW5kID0gc2NhbkxpbmUgKyB3aWR0aDsKKyAgICAgICAg
IC8vIEZvciBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzLCB0aGUgc2NhbkxpbmUgc2hvdWxkIGJlIGlu
Y3JlYXNlZCBieSAzCisjaWYgIUNQVShCSUdfRU5ESUFOKQorICAgICAgICAgc2NhbkxpbmUgKz0g
MzsKKyNlbmRpZgorICAgICAgICAgZm9yICggOyBzY2FuTGluZSA8IHNjYW5MaW5lRW5kOyBzY2Fu
TGluZSArPSA0KQorICAgICAgICAgICAgICphbHBoYU1hc2srKyA9ICpzY2FuTGluZTsKKyAgICB9
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25z
dCBJbnRSZWN0JiByZWN0LAotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54690</attachid>
            <date>2010-04-29 04:30:25 -0700</date>
            <delta_ts>2010-05-05 04:49:59 -0700</delta_ts>
            <desc>porter duff based version</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>6439</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBlNTU1MTdiMmQwZDFlMmY5MjJiMjM1OGIzNjMyOTU2MTc5YTBhMmM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDI5IEFwciAyMDEwIDEzOjI0OjU0ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gY2xpcFRvSW1hZ2VCdWZmZXIKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVy
Y3plZ0BpbmYudS1zemVnZWQuaHU+Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDEgLQogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgfCAgIDU1ICsrKysrKysrKysrKysr
Ky0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZmNkZjgxMC4uOTQ5ZDRhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNC0yOSAgWm9sdGFuIEhl
cmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50aW5nIGNsaXBUb0ltYWdlQnVmZmVy
IGZvciBRdCBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQyODkKKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gY29tYmluZXMgcGl4bWFw
IGxheWVycyBhbmQgZGVzdGluYXRpb25JbgorICAgICAgICBjb21wb3NpdGlvbiBtb2RlLgorCisg
ICAgICAgIGluVHJhbnNwYXJlbmN5TGF5ZXIoKSBpcyByZW1vdmVkIGFzIGl0IGlzIHVubmVjZXNz
YXJ5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXI6OlRyYW5zcGFyZW5jeUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUxheWVyOjp+VHJhbnNwYXJlbmN5TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YmVnaW5UcmFuc3BhcmVuY3lMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOgorCiAyMDEwLTA0LTI1ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxZjk5ZGFiLi5lMjJkMjdkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3NSw3ICszNzUs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQotICAg
ICAgICBib29sIGluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdDsKICAgICAgICAgUGxhdGZvcm1Q
YXRoKiBjdXJyZW50UGF0aCgpOwogICAgICAgICBRUGVuIHBlbigpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4
IGVkYWMyNjguLmE1MTM1OGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0xNjcsOCArMTY3LDExIEBAIHN0YXRpYyBpbmxp
bmUgUXQ6OkZpbGxSdWxlIHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogfQogCiBzdHJ1Y3Qg
VHJhbnNwYXJlbmN5TGF5ZXIgOiBGYXN0QWxsb2NCYXNlIHsKLSAgICBUcmFuc3BhcmVuY3lMYXll
cihjb25zdCBRUGFpbnRlciogcCwgY29uc3QgUVJlY3QgJnJlY3QpCisgICAgVHJhbnNwYXJlbmN5
TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNvbnN0IFFSZWN0ICZyZWN0LCBjb25zdCBxcmVhbCBv
cGFjaXR5LCBRUGl4bWFwKiBhbHBoYU1hc2sgPSAwKQogICAgICAgICA6IHBpeG1hcChyZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpCisgICAgICAgICwgb3BhY2l0eShvcGFjaXR5KQorICAgICAg
ICAsIGFscGhhTWFzayhhbHBoYU1hc2spCisgICAgICAgICwgc2F2ZVJlc3RvcmVDb3VudGVyKDEp
CiAgICAgewogICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKICAgICAgICAgcGl4bWFw
LmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKQEAgLTE4MiwxNyArMTg1LDI4IEBAIHN0cnVjdCBUcmFu
c3BhcmVuY3lMYXllciA6IEZhc3RBbGxvY0Jhc2UgewogICAgICAgICBwYWludGVyLnNldEZvbnQo
cC0+Zm9udCgpKTsKICAgICAgICAgaWYgKHBhaW50ZXIucGFpbnRFbmdpbmUoKS0+aGFzRmVhdHVy
ZShRUGFpbnRFbmdpbmU6OlBvcnRlckR1ZmYpKQogICAgICAgICAgICAgcGFpbnRlci5zZXRDb21w
b3NpdGlvbk1vZGUocC0+Y29tcG9zaXRpb25Nb2RlKCkpOwotICAgICAgICBwYWludGVyLnNldENs
aXBQYXRoKHAtPmNsaXBQYXRoKCkpOworICAgICAgICAvLyBpZiB0aGUgcGF0aCBpcyBhbiBlbXB0
eSByZWdpb24sIHRoaXMgYXNzaWdubWVudCBkaXNhYmxlcyBhbGwgcGFpbnRpbmcKKyAgICAgICAg
aWYgKCFwLT5jbGlwUGF0aCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhaW50ZXIuc2V0Q2xp
cFBhdGgocC0+Y2xpcFBhdGgoKSk7CiAgICAgfQogCiAgICAgVHJhbnNwYXJlbmN5TGF5ZXIoKQog
ICAgIHsKICAgICB9CiAKKyAgICB+VHJhbnNwYXJlbmN5TGF5ZXIoKQorICAgIHsKKyAgICAgICAg
aWYgKGFscGhhTWFzaykKKyAgICAgICAgICAgIGRlbGV0ZSBhbHBoYU1hc2s7CisgICAgfQorCiAg
ICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBvaW50IG9mZnNldDsKICAgICBRUGFpbnRlciBwYWlu
dGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CisgICAgLy8gZm9yIGNsaXBUb0ltYWdlQnVmZmVyCisg
ICAgUVBpeG1hcCogYWxwaGFNYXNrOworICAgIGludCBzYXZlUmVzdG9yZUNvdW50ZXI7CiBwcml2
YXRlOgogICAgIFRyYW5zcGFyZW5jeUxheWVyKGNvbnN0IFRyYW5zcGFyZW5jeUxheWVyICYpIHt9
CiAgICAgVHJhbnNwYXJlbmN5TGF5ZXIgJiBvcGVyYXRvcj0oY29uc3QgVHJhbnNwYXJlbmN5TGF5
ZXIgJikgeyByZXR1cm4gKnRoaXM7IH0KQEAgLTI4OSwxMSArMzAzLDE3IEBAIEFmZmluZVRyYW5z
Zm9ybSBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0Vt
cHR5KCkgJiYgbV9kYXRhLT5sYXllcnMudG9wKCktPmFscGhhTWFzaykKKyAgICAgICAgKyttX2Rh
dGEtPmxheWVycy50b3AoKS0+c2F2ZVJlc3RvcmVDb3VudGVyOwogICAgIG1fZGF0YS0+cCgpLT5z
YXZlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgp
CiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgbV9kYXRhLT5sYXllcnMu
dG9wKCktPmFscGhhTWFzaykKKyAgICAgICAgaWYgKCEtLW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5z
YXZlUmVzdG9yZUNvdW50ZXIpCisgICAgICAgICAgICBlbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
CiAgICAgbV9kYXRhLT5wKCktPnJlc3RvcmUoKTsKIAogICAgIGlmICghbV9kYXRhLT5jdXJyZW50
UGF0aC5pc0VtcHR5KCkgJiYgbV9jb21tb24tPnN0YXRlLnBhdGhUcmFuc2Zvcm0uaXNJbnZlcnRp
YmxlKCkpIHsKQEAgLTY3NiwxMSArNjk2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBtX2RhdGEtPmN1cnJlbnRQYXRoID0gbmV3UGF0aDsK
IH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiAhbV9kYXRhLT5sYXllcnMuaXNFbXB0eSgpOwotfQotCiBQbGF0Zm9ybVBh
dGgqIEdyYXBoaWNzQ29udGV4dDo6Y3VycmVudFBhdGgoKQogewogICAgIHJldHVybiAmbV9kYXRh
LT5jdXJyZW50UGF0aDsKQEAgLTgzNywxMCArODUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICB3ID0gaW50KHFCb3Vu
ZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC53aWR0aCgpLCAocXJlYWwpdykgKyAyKTsKICAgICBoID0g
aW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC5oZWlnaHQoKSwgKHFyZWFsKWgpICsgMik7
CiAKLSAgICBUcmFuc3BhcmVuY3lMYXllciAqIGxheWVyID0gbmV3IFRyYW5zcGFyZW5jeUxheWVy
KG1fZGF0YS0+cCgpLCBRUmVjdCh4LCB5LCB3LCBoKSk7Ci0KLSAgICBsYXllci0+b3BhY2l0eSA9
IG9wYWNpdHk7Ci0gICAgbV9kYXRhLT5sYXllcnMucHVzaChsYXllcik7CisgICAgbV9kYXRhLT5s
YXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5ZXIobV9kYXRhLT5wKCksIFFSZWN0KHgsIHks
IHcsIGgpLCBvcGFjaXR5KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3Bh
cmVuY3lMYXllcigpCkBAIC04NDksNiArODYxLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpl
bmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zcGFyZW5j
eUxheWVyKiBsYXllciA9IG1fZGF0YS0+bGF5ZXJzLnBvcCgpOworICAgIGlmIChsYXllci0+YWxw
aGFNYXNrKSB7CisgICAgICAgIGxheWVyLT5wYWludGVyLnJlc2V0VHJhbnNmb3JtKCk7CisgICAg
ICAgIGxheWVyLT5wYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX0Rlc3RpbmF0aW9uSW4pOworICAgICAgICBsYXllci0+cGFpbnRlci5kcmF3UGl4bWFw
KFFQb2ludCgpLCAqbGF5ZXItPmFscGhhTWFzayk7CisgICAgfQogICAgIGxheWVyLT5wYWludGVy
LmVuZCgpOwogCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKQEAgLTEwODYsOSArMTEw
MywyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBmbG9hdFJl
Y3QsIGNvbnN0IEltYWdlQnVmZmVyKiBpbWFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQaXht
YXAqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50
UmVjdCByZWN0KGZsb2F0UmVjdCk7CisgICAgUVBpeG1hcCBhbHBoYU1hc2sgPSAqbmF0aXZlSW1h
Z2U7CisgICAgaWYgKGFscGhhTWFzay53aWR0aCgpICE9IHJlY3Qud2lkdGgoKSB8fCBhbHBoYU1h
c2suaGVpZ2h0KCkgIT0gcmVjdC5oZWlnaHQoKSkKKyAgICAgICAgYWxwaGFNYXNrID0gYWxwaGFN
YXNrLnNjYWxlZChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworCisgICAgbV9kYXRhLT5s
YXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5ZXIobV9kYXRhLT5wKCksIHJlY3QsIDEuMCwg
bmV3IFFQaXhtYXAoYWxwaGFNYXNrKSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRk
SW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="38707"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55108</attachid>
            <date>2010-05-05 04:49:59 -0700</date>
            <delta_ts>2010-05-07 05:21:24 -0700</delta_ts>
            <desc>porter duff based version again</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>6523</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBlYWYwMDMwYmVmOWY1M2VhNDE0NzYwZDQxZDMwMWQzNzBhYjVkYWQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDUgTWF5IDIwMTAgMTM6NDI6NDIgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBjbGlwVG9JbWFnZUJ1ZmZlcgoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpoZXJj
emVnQGluZi51LXN6ZWdlZC5odT4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggICAgICAgIHwgICAgMSAtCiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgNTUgKysrKysrKysrKysrKysr
LS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA4ZDFiMWRkLi45N2QyYmJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEwLTA1LTA1ICBab2x0YW4gSGVy
Y3plZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnRpbmcgY2xpcFRvSW1hZ2VCdWZmZXIg
Zm9yIFF0IHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDI4OQorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBjb21iaW5lcyBwaXhtYXAg
bGF5ZXJzIGFuZCBkZXN0aW5hdGlvbkluCisgICAgICAgIGNvbXBvc2l0aW9uIG1vZGUuCisKKyAg
ICAgICAgaW5UcmFuc3BhcmVuY3lMYXllcigpIGlzIHJlbW92ZWQgYXMgaXQgaXMgdW5uZWNlc3Nh
cnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllcjo6VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXI6On5UcmFuc3BhcmVuY3lMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZl
cik6CisKIDIwMTAtMDUtMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBBZGQgbWlzc2luZyBmaWxlcyBnZW5lcmF0ZWQg
YnkgInJ1bi1iaW5kaW5ncy10ZXN0IiwgYWZ0ZXIgdGhlIERPTVRlc3RDYWxsYmFjay5pZGwgYWRk
aXRpb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCAxZjk5ZGFiLi5lMjJkMjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTM3NSw3ICszNzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICBib29sIGluVHJhbnNwYXJlbmN5TGF5ZXIo
KSBjb25zdDsKICAgICAgICAgUGxhdGZvcm1QYXRoKiBjdXJyZW50UGF0aCgpOwogICAgICAgICBR
UGVuIHBlbigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IGVkYWMyNjguLmE1MTM1OGQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC0x
NjcsOCArMTY3LDExIEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkZpbGxSdWxlIHRvUXRGaWxsUnVsZShX
aW5kUnVsZSBydWxlKQogfQogCiBzdHJ1Y3QgVHJhbnNwYXJlbmN5TGF5ZXIgOiBGYXN0QWxsb2NC
YXNlIHsKLSAgICBUcmFuc3BhcmVuY3lMYXllcihjb25zdCBRUGFpbnRlciogcCwgY29uc3QgUVJl
Y3QgJnJlY3QpCisgICAgVHJhbnNwYXJlbmN5TGF5ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNvbnN0
IFFSZWN0ICZyZWN0LCBjb25zdCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwKiBhbHBoYU1hc2sgPSAw
KQogICAgICAgICA6IHBpeG1hcChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpCisgICAgICAg
ICwgb3BhY2l0eShvcGFjaXR5KQorICAgICAgICAsIGFscGhhTWFzayhhbHBoYU1hc2spCisgICAg
ICAgICwgc2F2ZVJlc3RvcmVDb3VudGVyKDEpCiAgICAgewogICAgICAgICBvZmZzZXQgPSByZWN0
LnRvcExlZnQoKTsKICAgICAgICAgcGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKQEAgLTE4
MiwxNyArMTg1LDI4IEBAIHN0cnVjdCBUcmFuc3BhcmVuY3lMYXllciA6IEZhc3RBbGxvY0Jhc2Ug
ewogICAgICAgICBwYWludGVyLnNldEZvbnQocC0+Zm9udCgpKTsKICAgICAgICAgaWYgKHBhaW50
ZXIucGFpbnRFbmdpbmUoKS0+aGFzRmVhdHVyZShRUGFpbnRFbmdpbmU6OlBvcnRlckR1ZmYpKQog
ICAgICAgICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUocC0+Y29tcG9zaXRpb25Nb2Rl
KCkpOwotICAgICAgICBwYWludGVyLnNldENsaXBQYXRoKHAtPmNsaXBQYXRoKCkpOworICAgICAg
ICAvLyBpZiB0aGUgcGF0aCBpcyBhbiBlbXB0eSByZWdpb24sIHRoaXMgYXNzaWdubWVudCBkaXNh
YmxlcyBhbGwgcGFpbnRpbmcKKyAgICAgICAgaWYgKCFwLT5jbGlwUGF0aCgpLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHBhaW50ZXIuc2V0Q2xpcFBhdGgocC0+Y2xpcFBhdGgoKSk7CiAgICAgfQog
CiAgICAgVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIHsKICAgICB9CiAKKyAgICB+VHJhbnNwYXJl
bmN5TGF5ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGFscGhhTWFzaykKKyAgICAgICAgICAgIGRl
bGV0ZSBhbHBoYU1hc2s7CisgICAgfQorCiAgICAgUVBpeG1hcCBwaXhtYXA7CiAgICAgUVBvaW50
IG9mZnNldDsKICAgICBRUGFpbnRlciBwYWludGVyOwogICAgIHFyZWFsIG9wYWNpdHk7CisgICAg
Ly8gZm9yIGNsaXBUb0ltYWdlQnVmZmVyCisgICAgUVBpeG1hcCogYWxwaGFNYXNrOworICAgIGlu
dCBzYXZlUmVzdG9yZUNvdW50ZXI7CiBwcml2YXRlOgogICAgIFRyYW5zcGFyZW5jeUxheWVyKGNv
bnN0IFRyYW5zcGFyZW5jeUxheWVyICYpIHt9CiAgICAgVHJhbnNwYXJlbmN5TGF5ZXIgJiBvcGVy
YXRvcj0oY29uc3QgVHJhbnNwYXJlbmN5TGF5ZXIgJikgeyByZXR1cm4gKnRoaXM7IH0KQEAgLTI4
OSwxMSArMzAzLDE3IEBAIEFmZmluZVRyYW5zZm9ybSBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgp
IGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7Cisg
ICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgbV9kYXRhLT5sYXllcnMudG9wKCkt
PmFscGhhTWFzaykKKyAgICAgICAgKyttX2RhdGEtPmxheWVycy50b3AoKS0+c2F2ZVJlc3RvcmVD
b3VudGVyOwogICAgIG1fZGF0YS0+cCgpLT5zYXZlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5p
c0VtcHR5KCkgJiYgbV9kYXRhLT5sYXllcnMudG9wKCktPmFscGhhTWFzaykKKyAgICAgICAgaWYg
KCEtLW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5zYXZlUmVzdG9yZUNvdW50ZXIpCisgICAgICAgICAg
ICBlbmRUcmFuc3BhcmVuY3lMYXllcigpOworCiAgICAgbV9kYXRhLT5wKCktPnJlc3RvcmUoKTsK
IAogICAgIGlmICghbV9kYXRhLT5jdXJyZW50UGF0aC5pc0VtcHR5KCkgJiYgbV9jb21tb24tPnN0
YXRlLnBhdGhUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpIHsKQEAgLTY3NiwxMSArNjk2LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBtX2Rh
dGEtPmN1cnJlbnRQYXRoID0gbmV3UGF0aDsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6Omlu
VHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiAhbV9kYXRhLT5sYXllcnMu
aXNFbXB0eSgpOwotfQotCiBQbGF0Zm9ybVBhdGgqIEdyYXBoaWNzQ29udGV4dDo6Y3VycmVudFBh
dGgoKQogewogICAgIHJldHVybiAmbV9kYXRhLT5jdXJyZW50UGF0aDsKQEAgLTgzNywxMCArODUy
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQg
b3BhY2l0eSkKICAgICB3ID0gaW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC53aWR0aCgp
LCAocXJlYWwpdykgKyAyKTsKICAgICBoID0gaW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNlQ2xp
cC5oZWlnaHQoKSwgKHFyZWFsKWgpICsgMik7CiAKLSAgICBUcmFuc3BhcmVuY3lMYXllciAqIGxh
eWVyID0gbmV3IFRyYW5zcGFyZW5jeUxheWVyKG1fZGF0YS0+cCgpLCBRUmVjdCh4LCB5LCB3LCBo
KSk7Ci0KLSAgICBsYXllci0+b3BhY2l0eSA9IG9wYWNpdHk7Ci0gICAgbV9kYXRhLT5sYXllcnMu
cHVzaChsYXllcik7CisgICAgbV9kYXRhLT5sYXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5
ZXIobV9kYXRhLT5wKCksIFFSZWN0KHgsIHksIHcsIGgpLCBvcGFjaXR5KSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCkBAIC04NDksNiArODYxLDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFRyYW5zcGFyZW5jeUxheWVyKiBsYXllciA9IG1fZGF0YS0+bGF5ZXJz
LnBvcCgpOworICAgIGlmIChsYXllci0+YWxwaGFNYXNrKSB7CisgICAgICAgIGxheWVyLT5wYWlu
dGVyLnJlc2V0VHJhbnNmb3JtKCk7CisgICAgICAgIGxheWVyLT5wYWludGVyLnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0Rlc3RpbmF0aW9uSW4pOworICAgICAg
ICBsYXllci0+cGFpbnRlci5kcmF3UGl4bWFwKFFQb2ludCgpLCAqbGF5ZXItPmFscGhhTWFzayk7
CisgICAgfQogICAgIGxheWVyLT5wYWludGVyLmVuZCgpOwogCiAgICAgUVBhaW50ZXIqIHAgPSBt
X2RhdGEtPnAoKTsKQEAgLTEwODYsOSArMTEwMywyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICB9CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZUJ1ZmZlciopCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiBmbG9hdFJlY3QsIGNvbnN0IEltYWdlQnVmZmVyKiBpbWFnZSkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPmltYWdl
KCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCByZWN0KGZsb2F0UmVjdCk7CisgICAgUVBp
eG1hcCBhbHBoYU1hc2sgPSAqbmF0aXZlSW1hZ2U7CisgICAgaWYgKGFscGhhTWFzay53aWR0aCgp
ICE9IHJlY3Qud2lkdGgoKSB8fCBhbHBoYU1hc2suaGVpZ2h0KCkgIT0gcmVjdC5oZWlnaHQoKSkK
KyAgICAgICAgYWxwaGFNYXNrID0gYWxwaGFNYXNrLnNjYWxlZChyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOworCisgICAgbV9kYXRhLT5sYXllcnMucHVzaChuZXcgVHJhbnNwYXJlbmN5TGF5
ZXIobV9kYXRhLT5wKCksIHJlY3QsIDEuMCwgbmV3IFFQaXhtYXAoYWxwaGFNYXNrKSkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50
UmVjdCYgcmVjdCwKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="39209"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="39210"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55366</attachid>
            <date>2010-05-07 05:21:24 -0700</date>
            <delta_ts>2010-05-18 06:08:34 -0700</delta_ts>
            <desc>next patch</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>6354</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA3MTZmZjk3NDIzYjk4YTg4NzhlZDQzZTMwYjYyNWRiZDc1Yzg3OWJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBGcmksIDcgTWF5IDIwMTAgMTQ6MTc6MzEgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBjbGlwVG9JbWFnZUJ1ZmZlcgoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpoZXJj
emVnQGluZi51LXN6ZWdlZC5odT4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIHwgICA1MCArKysrKysrKysrKysrKysrLS0t
LQogMiBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ5
OGFhNS4uYzY2MDJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNS0wNyAgWm9sdGFuIEhlcmN6ZWcg
IDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50aW5nIGNsaXBUb0ltYWdlQnVmZmVyIGZvciBR
dCBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQyODkKKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gY29tYmluZXMgcGl4bWFwIGxheWVy
cyBhbmQgZGVzdGluYXRpb25JbgorICAgICAgICBjb21wb3NpdGlvbiBtb2RlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNwYXJlbmN5TGF5ZXI6OlRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2F2
ZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0
b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omlu
VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpi
ZWdpblRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisKIDIwMTAtMDUtMDYgIEZ1bWl0b3NoaSBVa2FpICA8
dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKaW5kZXggZWRhYzI2OC4uZjBiODQ5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTE2Nyw4ICsxNjcsMTEg
QEAgc3RhdGljIGlubGluZSBRdDo6RmlsbFJ1bGUgdG9RdEZpbGxSdWxlKFdpbmRSdWxlIHJ1bGUp
CiB9CiAKIHN0cnVjdCBUcmFuc3BhcmVuY3lMYXllciA6IEZhc3RBbGxvY0Jhc2UgewotICAgIFRy
YW5zcGFyZW5jeUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCkKKyAg
ICBUcmFuc3BhcmVuY3lMYXllcihjb25zdCBRUGFpbnRlciogcCwgY29uc3QgUVJlY3QgJnJlY3Qs
IGNvbnN0IHFyZWFsIG9wYWNpdHksIFFQaXhtYXAgYWxwaGFNYXNrKQogICAgICAgICA6IHBpeG1h
cChyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpCisgICAgICAgICwgb3BhY2l0eShvcGFjaXR5
KQorICAgICAgICAsIGFscGhhTWFzayhhbHBoYU1hc2spCisgICAgICAgICwgc2F2ZVJlc3RvcmVD
b3VudGVyKDEpCiAgICAgewogICAgICAgICBvZmZzZXQgPSByZWN0LnRvcExlZnQoKTsKICAgICAg
ICAgcGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKQEAgLTE4Miw3ICsxODUsOSBAQCBzdHJ1
Y3QgVHJhbnNwYXJlbmN5TGF5ZXIgOiBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgcGFpbnRlci5z
ZXRGb250KHAtPmZvbnQoKSk7CiAgICAgICAgIGlmIChwYWludGVyLnBhaW50RW5naW5lKCktPmhh
c0ZlYXR1cmUoUVBhaW50RW5naW5lOjpQb3J0ZXJEdWZmKSkKICAgICAgICAgICAgIHBhaW50ZXIu
c2V0Q29tcG9zaXRpb25Nb2RlKHAtPmNvbXBvc2l0aW9uTW9kZSgpKTsKLSAgICAgICAgcGFpbnRl
ci5zZXRDbGlwUGF0aChwLT5jbGlwUGF0aCgpKTsKKyAgICAgICAgLy8gaWYgdGhlIHBhdGggaXMg
YW4gZW1wdHkgcmVnaW9uLCB0aGlzIGFzc2lnbm1lbnQgZGlzYWJsZXMgYWxsIHBhaW50aW5nCisg
ICAgICAgIGlmICghcC0+Y2xpcFBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBwYWludGVy
LnNldENsaXBQYXRoKHAtPmNsaXBQYXRoKCkpOwogICAgIH0KIAogICAgIFRyYW5zcGFyZW5jeUxh
eWVyKCkKQEAgLTE5Myw2ICsxOTgsOSBAQCBzdHJ1Y3QgVHJhbnNwYXJlbmN5TGF5ZXIgOiBGYXN0
QWxsb2NCYXNlIHsKICAgICBRUG9pbnQgb2Zmc2V0OwogICAgIFFQYWludGVyIHBhaW50ZXI7CiAg
ICAgcXJlYWwgb3BhY2l0eTsKKyAgICAvLyBmb3IgY2xpcFRvSW1hZ2VCdWZmZXIKKyAgICBRUGl4
bWFwIGFscGhhTWFzazsKKyAgICBpbnQgc2F2ZVJlc3RvcmVDb3VudGVyOwogcHJpdmF0ZToKICAg
ICBUcmFuc3BhcmVuY3lMYXllcihjb25zdCBUcmFuc3BhcmVuY3lMYXllciAmKSB7fQogICAgIFRy
YW5zcGFyZW5jeUxheWVyICYgb3BlcmF0b3I9KGNvbnN0IFRyYW5zcGFyZW5jeUxheWVyICYpIHsg
cmV0dXJuICp0aGlzOyB9CkBAIC0yMTcsNiArMjI1LDcgQEAgcHVibGljOgogICAgIGJvb2wgYW50
aUFsaWFzaW5nRm9yUmVjdHNBbmRMaW5lczsKIAogICAgIFFTdGFjazxUcmFuc3BhcmVuY3lMYXll
cio+IGxheWVyczsKKyAgICBpbnQgbGF5ZXJDb3VudDsKICAgICBRUGFpbnRlciogcmVkaXJlY3Q7
CiAKICAgICAvLyByZXVzZSB0aGlzIGJydXNoIGZvciBzb2xpZCBjb2xvciAodG8gcHJldmVudCBl
eHBlbnNpdmUgUUJydXNoIGNvbnN0cnVjdGlvbikKQEAgLTIzNSw2ICsyNDQsNyBAQCBwcml2YXRl
OgogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUoUVBhaW50ZXIqIHApCiB7CiAgICAgcGFpbnRlciA9IHA7CisgICAgbGF5ZXJDb3Vu
dCA9IDA7CiAgICAgcmVkaXJlY3QgPSAwOwogCiAgICAgc29saWRDb2xvciA9IFFCcnVzaChRdDo6
YmxhY2spOwpAQCAtMjg5LDExICsyOTksMTcgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29u
dGV4dDo6Z2V0Q1RNKCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9y
bVN0YXRlKCkKIHsKKyAgICBpZiAoIW1fZGF0YS0+bGF5ZXJzLmlzRW1wdHkoKSAmJiAhbV9kYXRh
LT5sYXllcnMudG9wKCktPmFscGhhTWFzay5pc051bGwoKSkKKyAgICAgICAgKyttX2RhdGEtPmxh
eWVycy50b3AoKS0+c2F2ZVJlc3RvcmVDb3VudGVyOwogICAgIG1fZGF0YS0+cCgpLT5zYXZlKCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiB7Cisg
ICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgIW1fZGF0YS0+bGF5ZXJzLnRvcCgp
LT5hbHBoYU1hc2suaXNOdWxsKCkpCisgICAgICAgIGlmICghLS1tX2RhdGEtPmxheWVycy50b3Ao
KS0+c2F2ZVJlc3RvcmVDb3VudGVyKQorICAgICAgICAgICAgZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKKwogICAgIG1fZGF0YS0+cCgpLT5yZXN0b3JlKCk7CiAKICAgICBpZiAoIW1fZGF0YS0+Y3Vy
cmVudFBhdGguaXNFbXB0eSgpICYmIG1fY29tbW9uLT5zdGF0ZS5wYXRoVHJhbnNmb3JtLmlzSW52
ZXJ0aWJsZSgpKSB7CkBAIC02NzgsNyArNjk0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFk
ZFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmluVHJhbnNw
YXJlbmN5TGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiAhbV9kYXRhLT5sYXllcnMuaXNFbXB0
eSgpOworICAgIHJldHVybiBtX2RhdGEtPmxheWVyQ291bnQ7CiB9CiAKIFBsYXRmb3JtUGF0aCog
R3JhcGhpY3NDb250ZXh0OjpjdXJyZW50UGF0aCgpCkBAIC04MzcsMTAgKzg1Myw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCiAg
ICAgdyA9IGludChxQm91bmQocXJlYWwoMCksIGRldmljZUNsaXAud2lkdGgoKSwgKHFyZWFsKXcp
ICsgMik7CiAgICAgaCA9IGludChxQm91bmQocXJlYWwoMCksIGRldmljZUNsaXAuaGVpZ2h0KCks
IChxcmVhbCloKSArIDIpOwogCi0gICAgVHJhbnNwYXJlbmN5TGF5ZXIgKiBsYXllciA9IG5ldyBU
cmFuc3BhcmVuY3lMYXllcihtX2RhdGEtPnAoKSwgUVJlY3QoeCwgeSwgdywgaCkpOwotCi0gICAg
bGF5ZXItPm9wYWNpdHkgPSBvcGFjaXR5OwotICAgIG1fZGF0YS0+bGF5ZXJzLnB1c2gobGF5ZXIp
OworICAgIG1fZGF0YS0+bGF5ZXJzLnB1c2gobmV3IFRyYW5zcGFyZW5jeUxheWVyKG1fZGF0YS0+
cCgpLCBRUmVjdCh4LCB5LCB3LCBoKSwgb3BhY2l0eSwgUVBpeG1hcCgpKSk7CisgICAgKyttX2Rh
dGEtPmxheWVyQ291bnQ7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVu
Y3lMYXllcigpCkBAIC04NDksNiArODYzLDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRU
cmFuc3BhcmVuY3lMYXllcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zcGFyZW5jeUxh
eWVyKiBsYXllciA9IG1fZGF0YS0+bGF5ZXJzLnBvcCgpOworICAgIGlmICghbGF5ZXItPmFscGhh
TWFzay5pc051bGwoKSkgeworICAgICAgICBsYXllci0+cGFpbnRlci5yZXNldFRyYW5zZm9ybSgp
OworICAgICAgICBsYXllci0+cGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNv
bXBvc2l0aW9uTW9kZV9EZXN0aW5hdGlvbkluKTsKKyAgICAgICAgbGF5ZXItPnBhaW50ZXIuZHJh
d1BpeG1hcChRUG9pbnQoKSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAgfSBlbHNlCisgICAgICAg
IC0tbV9kYXRhLT5sYXllckNvdW50OwogICAgIGxheWVyLT5wYWludGVyLmVuZCgpOwogCiAgICAg
UVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKQEAgLTEwODYsOSArMTEwNiwyMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dEVsbGlwc2VJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcFRvSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiBmbG9hdFJlY3QsIGNvbnN0IEltYWdl
QnVmZmVyKiBpbWFnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdl
ID0gaW1hZ2UtPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYg
KCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCByZWN0KGZsb2F0
UmVjdCk7CisgICAgUVBpeG1hcCBhbHBoYU1hc2sgPSAqbmF0aXZlSW1hZ2U7CisgICAgaWYgKGFs
cGhhTWFzay53aWR0aCgpICE9IHJlY3Qud2lkdGgoKSB8fCBhbHBoYU1hc2suaGVpZ2h0KCkgIT0g
cmVjdC5oZWlnaHQoKSkKKyAgICAgICAgYWxwaGFNYXNrID0gYWxwaGFNYXNrLnNjYWxlZChyZWN0
LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworCisgICAgbV9kYXRhLT5sYXllcnMucHVzaChuZXcg
VHJhbnNwYXJlbmN5TGF5ZXIobV9kYXRhLT5wKCksIHJlY3QsIDEuMCwgYWxwaGFNYXNrKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChjb25zdCBJ
bnRSZWN0JiByZWN0LAotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56364</attachid>
            <date>2010-05-18 06:08:34 -0700</date>
            <delta_ts>2010-05-18 06:18:16 -0700</delta_ts>
            <desc>another patch</desc>
            <filename>0001-clipToImageBuffer.patch</filename>
            <type>text/plain</type>
            <size>6658</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA2ZGUwMmZiOWJhYTM4OTU3MmIyNmY2MTgxMDc1NGM5Nzc2OWY4YzVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDE4IE1heSAyMDEwIDE0OjU3OjIwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gY2xpcFRvSW1hZ2VCdWZmZXIKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVy
Y3plZ0BpbmYudS1zemVnZWQuaHU+Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIHwgICA1NSArKysrKysrKysrKysrKysrLS0t
CiAyIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MDY3
YWE5Li43Mjg2NGMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTA1LTE4ICBab2x0YW4gSGVyY3plZyAg
PHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1F0XSBJbXBsZW1lbnRpbmcgY2xpcFRvSW1hZ2VCdWZmZXIgZm9yIFF0
IHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDI4OQorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBjb21iaW5lcyBwaXhtYXAgbGF5ZXJz
IGFuZCBkZXN0aW5hdGlvbkluCisgICAgICAgIGNvbXBvc2l0aW9uIG1vZGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc3BhcmVuY3lMYXllcjo6VHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZl
UGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc3Rv
cmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aW5U
cmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjplbmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKwogMjAxMC0wNS0xOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRl
eCAwMTAwYjcyLi4yNGVjOTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTY3LDggKzE2NywxMSBAQCBzdGF0aWMgaW5s
aW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKIH0KIAogc3RydWN0
IFRyYW5zcGFyZW5jeUxheWVyIDogRmFzdEFsbG9jQmFzZSB7Ci0gICAgVHJhbnNwYXJlbmN5TGF5
ZXIoY29uc3QgUVBhaW50ZXIqIHAsIGNvbnN0IFFSZWN0ICZyZWN0KQorICAgIFRyYW5zcGFyZW5j
eUxheWVyKGNvbnN0IFFQYWludGVyKiBwLCBjb25zdCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0
eSwgUVBpeG1hcCYgYWxwaGFNYXNrKQogICAgICAgICA6IHBpeG1hcChyZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpCisgICAgICAgICwgb3BhY2l0eShvcGFjaXR5KQorICAgICAgICAsIGFscGhh
TWFzayhhbHBoYU1hc2spCisgICAgICAgICwgc2F2ZUNvdW50ZXIoMSkgLy8gc2VlIHRoZSBjb21t
ZW50IGZvciBzYXZlQ291bnRlcgogICAgIHsKICAgICAgICAgb2Zmc2V0ID0gcmVjdC50b3BMZWZ0
KCk7CiAgICAgICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CkBAIC0xODIsNyArMTg1
LDkgQEAgc3RydWN0IFRyYW5zcGFyZW5jeUxheWVyIDogRmFzdEFsbG9jQmFzZSB7CiAgICAgICAg
IHBhaW50ZXIuc2V0Rm9udChwLT5mb250KCkpOwogICAgICAgICBpZiAocGFpbnRlci5wYWludEVu
Z2luZSgpLT5oYXNGZWF0dXJlKFFQYWludEVuZ2luZTo6UG9ydGVyRHVmZikpCiAgICAgICAgICAg
ICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShwLT5jb21wb3NpdGlvbk1vZGUoKSk7Ci0gICAg
ICAgIHBhaW50ZXIuc2V0Q2xpcFBhdGgocC0+Y2xpcFBhdGgoKSk7CisgICAgICAgIC8vIGlmIHRo
ZSBwYXRoIGlzIGFuIGVtcHR5IHJlZ2lvbiwgdGhpcyBhc3NpZ25tZW50IGRpc2FibGVzIGFsbCBw
YWludGluZworICAgICAgICBpZiAoIXAtPmNsaXBQYXRoKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcGFpbnRlci5zZXRDbGlwUGF0aChwLT5jbGlwUGF0aCgpKTsKICAgICB9CiAKICAgICBUcmFu
c3BhcmVuY3lMYXllcigpCkBAIC0xOTMsNiArMTk4LDExIEBAIHN0cnVjdCBUcmFuc3BhcmVuY3lM
YXllciA6IEZhc3RBbGxvY0Jhc2UgewogICAgIFFQb2ludCBvZmZzZXQ7CiAgICAgUVBhaW50ZXIg
cGFpbnRlcjsKICAgICBxcmVhbCBvcGFjaXR5OworICAgIC8vIGZvciBjbGlwVG9JbWFnZUJ1ZmZl
cgorICAgIFFQaXhtYXAgYWxwaGFNYXNrOworICAgIC8vIHNhdmVDb3VudGVyIGlzIG9ubHkgdXNl
ZCBpbiBjb21iaW5hdGlvbiB3aXRoIGFscGhhTWFzaworICAgIC8vIG90aGVyd2lzZSwgaXRzIHZh
bHVlIGlzIHVuc3BlY2lmaWVkCisgICAgaW50IHNhdmVDb3VudGVyOwogcHJpdmF0ZToKICAgICBU
cmFuc3BhcmVuY3lMYXllcihjb25zdCBUcmFuc3BhcmVuY3lMYXllciAmKSB7fQogICAgIFRyYW5z
cGFyZW5jeUxheWVyICYgb3BlcmF0b3I9KGNvbnN0IFRyYW5zcGFyZW5jeUxheWVyICYpIHsgcmV0
dXJuICp0aGlzOyB9CkBAIC0yMTcsNiArMjI3LDkgQEAgcHVibGljOgogICAgIGJvb2wgYW50aUFs
aWFzaW5nRm9yUmVjdHNBbmRMaW5lczsKIAogICAgIFFTdGFjazxUcmFuc3BhcmVuY3lMYXllcio+
IGxheWVyczsKKyAgICAvLyBDb3VudGluZyByZWFsIGxheWVycy4gUmVxdWlyZWQgYnkgaW5UcmFu
c3BhcmVuY3lMYXllcigpIGNhbGxzCisgICAgLy8gRm9yIGV4YW1wbGUsIGxheWVycyB3aXRoIHZh
bGlkIGFscGhhTWFzayBhcmUgbm90IHJlYWwgbGF5ZXJzCisgICAgaW50IGxheWVyQ291bnQ7CiAg
ICAgUVBhaW50ZXIqIHJlZGlyZWN0OwogCiAgICAgLy8gcmV1c2UgdGhpcyBicnVzaCBmb3Igc29s
aWQgY29sb3IgKHRvIHByZXZlbnQgZXhwZW5zaXZlIFFCcnVzaCBjb25zdHJ1Y3Rpb24pCkBAIC0y
MzUsNiArMjQ4LDcgQEAgcHJpdmF0ZToKIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiBwKQogewogICAgIHBhaW50
ZXIgPSBwOworICAgIGxheWVyQ291bnQgPSAwOwogICAgIHJlZGlyZWN0ID0gMDsKIAogICAgIHNv
bGlkQ29sb3IgPSBRQnJ1c2goUXQ6OmJsYWNrKTsKQEAgLTI4OSwxMSArMzAzLDE3IEBAIEFmZmlu
ZVRyYW5zZm9ybSBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVy
cy5pc0VtcHR5KCkgJiYgIW1fZGF0YS0+bGF5ZXJzLnRvcCgpLT5hbHBoYU1hc2suaXNOdWxsKCkp
CisgICAgICAgICsrbV9kYXRhLT5sYXllcnMudG9wKCktPnNhdmVDb3VudGVyOwogICAgIG1fZGF0
YS0+cCgpLT5zYXZlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZv
cm1TdGF0ZSgpCiB7CisgICAgaWYgKCFtX2RhdGEtPmxheWVycy5pc0VtcHR5KCkgJiYgIW1fZGF0
YS0+bGF5ZXJzLnRvcCgpLT5hbHBoYU1hc2suaXNOdWxsKCkpCisgICAgICAgIGlmICghLS1tX2Rh
dGEtPmxheWVycy50b3AoKS0+c2F2ZUNvdW50ZXIpCisgICAgICAgICAgICBlbmRUcmFuc3BhcmVu
Y3lMYXllcigpOworCiAgICAgbV9kYXRhLT5wKCktPnJlc3RvcmUoKTsKIAogICAgIGlmICghbV9k
YXRhLT5jdXJyZW50UGF0aC5pc0VtcHR5KCkgJiYgbV9jb21tb24tPnN0YXRlLnBhdGhUcmFuc2Zv
cm0uaXNJbnZlcnRpYmxlKCkpIHsKQEAgLTY3OCw3ICs2OTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YWRkUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6
aW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2RhdGEtPmxheWVy
cy5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fZGF0YS0+bGF5ZXJDb3VudDsKIH0KIAogUGxhdGZv
cm1QYXRoKiBHcmFwaGljc0NvbnRleHQ6OmN1cnJlbnRQYXRoKCkKQEAgLTgzNywxMCArODU3LDkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3Bh
Y2l0eSkKICAgICB3ID0gaW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC53aWR0aCgpLCAo
cXJlYWwpdykgKyAyKTsKICAgICBoID0gaW50KHFCb3VuZChxcmVhbCgwKSwgZGV2aWNlQ2xpcC5o
ZWlnaHQoKSwgKHFyZWFsKWgpICsgMik7CiAKLSAgICBUcmFuc3BhcmVuY3lMYXllciAqIGxheWVy
ID0gbmV3IFRyYW5zcGFyZW5jeUxheWVyKG1fZGF0YS0+cCgpLCBRUmVjdCh4LCB5LCB3LCBoKSk7
Ci0KLSAgICBsYXllci0+b3BhY2l0eSA9IG9wYWNpdHk7Ci0gICAgbV9kYXRhLT5sYXllcnMucHVz
aChsYXllcik7CisgICAgUVBpeG1hcCBlbXB0eUFscGhhTWFzazsKKyAgICBtX2RhdGEtPmxheWVy
cy5wdXNoKG5ldyBUcmFuc3BhcmVuY3lMYXllcihtX2RhdGEtPnAoKSwgUVJlY3QoeCwgeSwgdywg
aCksIG9wYWNpdHksIGVtcHR5QWxwaGFNYXNrKSk7CisgICAgKyttX2RhdGEtPmxheWVyQ291bnQ7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCkBAIC04
NDksNiArODY4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXll
cigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zcGFyZW5jeUxheWVyKiBsYXllciA9IG1f
ZGF0YS0+bGF5ZXJzLnBvcCgpOworICAgIGlmICghbGF5ZXItPmFscGhhTWFzay5pc051bGwoKSkg
eworICAgICAgICBsYXllci0+cGFpbnRlci5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBsYXll
ci0+cGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9E
ZXN0aW5hdGlvbkluKTsKKyAgICAgICAgbGF5ZXItPnBhaW50ZXIuZHJhd1BpeG1hcChRUG9pbnQo
KSwgbGF5ZXItPmFscGhhTWFzayk7CisgICAgfSBlbHNlCisgICAgICAgIC0tbV9kYXRhLT5sYXll
ckNvdW50OyAvLyBzZWUgdGhlIGNvbW1lbnQgZm9yIGxheWVyQ291bnQKICAgICBsYXllci0+cGFp
bnRlci5lbmQoKTsKIAogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CkBAIC0xMDg2LDkg
KzExMTEsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRFbGxpcHNlSW5SZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgZmxv
YXRSZWN0LCBjb25zdCBJbWFnZUJ1ZmZlciogaW1hZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBR
UGl4bWFwKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IEludFJlY3QgcmVjdChmbG9hdFJlY3QpOworICAgIFFQaXhtYXAgYWxwaGFNYXNrID0gKm5hdGl2
ZUltYWdlOworICAgIGlmIChhbHBoYU1hc2sud2lkdGgoKSAhPSByZWN0LndpZHRoKCkgfHwgYWxw
aGFNYXNrLmhlaWdodCgpICE9IHJlY3QuaGVpZ2h0KCkpCisgICAgICAgIGFscGhhTWFzayA9IGFs
cGhhTWFzay5zY2FsZWQocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKworICAgIG1fZGF0
YS0+bGF5ZXJzLnB1c2gobmV3IFRyYW5zcGFyZW5jeUxheWVyKG1fZGF0YS0+cCgpLCByZWN0LCAx
LjAsIGFscGhhTWFzaykpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YWRkSW5uZXJSb3Vu
ZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="40762"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>