<?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>78448</bug_id>
          
          <creation_ts>2012-02-12 18:18:13 -0800</creation_ts>
          <short_desc>[BlackBerry] Upstream accelerated compositing helper class</short_desc>
          <delta_ts>2012-02-27 00:28:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leo Yang">leo.yang</reporter>
          <assigned_to name="Leo Yang">leo.yang</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>nima.ghanavatian</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554928</commentid>
    <comment_count>0</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 18:18:13 -0800</bug_when>
    <thetext>class FrameLayers in the BlackBerry webkit porting is designed to manage attachments of different frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554929</commentid>
    <comment_count>1</comment_count>
      <attachid>126700</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 18:23:45 -0800</bug_when>
    <thetext>Created attachment 126700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554945</commentid>
    <comment_count>2</comment_count>
      <attachid>126700</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-12 19:07:42 -0800</bug_when>
    <thetext>Comment on attachment 126700
Patch

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

Looks good.

&gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:39
&gt; +// FIXME: with the exception of the rootLayerWebKitThread() method

Can you improve above, so we have proper sentences with periods at end? I guess you need two separate sentences here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554946</commentid>
    <comment_count>3</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 19:09:05 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 126700 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126700&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:39
&gt; &gt; +// FIXME: with the exception of the rootLayerWebKitThread() method
&gt; 
&gt; Can you improve above, so we have proper sentences with periods at end? I guess you need two separate sentences here.

Thank you. I&apos;ll fix it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554950</commentid>
    <comment_count>4</comment_count>
      <attachid>126700</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-12 19:24:34 -0800</bug_when>
    <thetext>Comment on attachment 126700
Patch

could you check this class is really needed, still?

I changed it so that both iframe and frame take the webcore code path. Could you please confirm before landing this. It should not be needed anymore...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554951</commentid>
    <comment_count>5</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 19:26:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 126700 [details])
&gt; could you check this class is really needed, still?
&gt; 
&gt; I changed it so that both iframe and frame take the webcore code path. Could you please confirm before landing this. It should not be needed anymore...

It&apos;s still being used in void WebPagePrivate::setRootLayerWebKitThread(Frame* frame, LayerWebKitThread* layer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554952</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-12 19:27:35 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 126700 [details] [details])
&gt; &gt; could you check this class is really needed, still?
&gt; &gt; 
&gt; &gt; I changed it so that both iframe and frame take the webcore code path. Could you please confirm before landing this. It should not be needed anymore...
&gt; 
&gt; It&apos;s still being used in void WebPagePrivate::setRootLayerWebKitThread(Frame* frame, LayerWebKitThread* layer)

this is ever being called? it should not since both frames and iframe take another codepath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554953</commentid>
    <comment_count>7</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 19:30:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 126700 [details] [details] [details])
&gt; &gt; &gt; could you check this class is really needed, still?
&gt; &gt; &gt; 
&gt; &gt; &gt; I changed it so that both iframe and frame take the webcore code path. Could you please confirm before landing this. It should not be needed anymore...
&gt; &gt; 
&gt; &gt; It&apos;s still being used in void WebPagePrivate::setRootLayerWebKitThread(Frame* frame, LayerWebKitThread* layer)
&gt; 
&gt; this is ever being called? it should not since both frames and iframe take another codepath.

OK, I&apos;m holding it and will check if it&apos;s ever be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555003</commentid>
    <comment_count>8</comment_count>
      <attachid>126700</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-12 21:45:28 -0800</bug_when>
    <thetext>Comment on attachment 126700
Patch

Obsolete the patch. FrameLayers does be used, but it only contain root layer even if there are AC subframes. This is because upstream take care of the layers for subframes. I&apos;ll refactor internally to evaluate if FrameLayers is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556321</commentid>
    <comment_count>9</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-02-14 08:25:26 -0800</bug_when>
    <thetext>*** Bug 78606 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560535</commentid>
    <comment_count>10</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-20 18:51:33 -0800</bug_when>
    <thetext>Antonio, after revisit the code. I found that the FrameLayers should still be there. Look at RenderLayerCompositor::shouldPropagateCompositingToEnclosingFrame(), it&apos;s possible that this function returns false for top-level frame. Per my understanding, top-level frame isn&apos;t always main frame because it may be a top-level frame for a sub tree. Windonws and Chromium porting also maintain something like a tree structure for layers attached via ChromeClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560545</commentid>
    <comment_count>11</comment_count>
      <attachid>127895</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-20 19:20:45 -0800</bug_when>
    <thetext>Created attachment 127895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560575</commentid>
    <comment_count>12</comment_count>
      <attachid>127895</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-20 19:59:14 -0800</bug_when>
    <thetext>Comment on attachment 127895
Patch

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

&gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:57
&gt; +static FloatSize frameLayerAbsoluteOffset(Frame* frame)
&gt; +{
&gt; +    FloatSize result;
&gt; +    ASSERT(frame);
&gt; +    const ScrollView* scrollView = frame-&gt;view();
&gt; +    if (!scrollView)
&gt; +        return result;
&gt; +
&gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; +        if (scrollView-&gt;isFrameView()) {
&gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; +            if (!renderer)
&gt; +                return result;
&gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; +            result += FloatSize(point.x(), point.y());
&gt; +        } else
&gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; +        scrollView = parentScrollView;
&gt; +    }
&gt; +    return result;
&gt; +}

how is this different than ScrollView::windowToContents and contentsToWindow methods?

&gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:57
&gt; +    bool isRootLayerMainFrameLayer() const
&gt; +    {
&gt; +        return m_rootLayer &amp;&amp; !m_rootGraphicsLayer;
&gt; +    }

we should be consistent if we want the

xxx { return abc; } in one line

or

xxx
{
    return abc();
}

&gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:64
&gt; +    typedef HashMap&lt;WebCore::Frame*, WebCore::LayerWebKitThread*&gt; FrameLayerMap;

lets move this typedef declaration a few lines down to be closer to where it is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560606</commentid>
    <comment_count>13</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-20 20:56:45 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 127895 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127895&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:57
&gt; &gt; +static FloatSize frameLayerAbsoluteOffset(Frame* frame)
&gt; &gt; +{
&gt; &gt; +    FloatSize result;
&gt; &gt; +    ASSERT(frame);
&gt; &gt; +    const ScrollView* scrollView = frame-&gt;view();
&gt; &gt; +    if (!scrollView)
&gt; &gt; +        return result;
&gt; &gt; +
&gt; &gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; &gt; +        if (scrollView-&gt;isFrameView()) {
&gt; &gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; &gt; +            if (!renderer)
&gt; &gt; +                return result;
&gt; &gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; &gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; &gt; +            result += FloatSize(point.x(), point.y());
&gt; &gt; +        } else
&gt; &gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; &gt; +        scrollView = parentScrollView;
&gt; &gt; +    }
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; how is this different than ScrollView::windowToContents and contentsToWindow methods?
This is to convert a position of a frame which is in its parent&apos;s content coordination to the top frame&apos;s content coordination. It will not take scroll position into account.

&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:57
&gt; &gt; +    bool isRootLayerMainFrameLayer() const
&gt; &gt; +    {
&gt; &gt; +        return m_rootLayer &amp;&amp; !m_rootGraphicsLayer;
&gt; &gt; +    }
&gt; 
&gt; we should be consistent if we want the
&gt; 
&gt; xxx { return abc; } in one line
&gt; 
&gt; or
&gt; 
&gt; xxx
&gt; {
&gt;     return abc();
&gt; }
&gt; 
OK.

&gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.h:64
&gt; &gt; +    typedef HashMap&lt;WebCore::Frame*, WebCore::LayerWebKitThread*&gt; FrameLayerMap;
&gt; 
&gt; lets move this typedef declaration a few lines down to be closer to where it is used.
Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560608</commentid>
    <comment_count>14</comment_count>
      <attachid>127910</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-20 20:58:04 -0800</bug_when>
    <thetext>Created attachment 127910
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560613</commentid>
    <comment_count>15</comment_count>
      <attachid>127910</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-20 21:06:58 -0800</bug_when>
    <thetext>Comment on attachment 127910
Patch v3

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

&gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:56
&gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; +        if (scrollView-&gt;isFrameView()) {
&gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; +            if (!renderer)
&gt; +                return result;
&gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; +            result += FloatSize(point.x(), point.y());
&gt; +        } else
&gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; +        scrollView = parentScrollView;
&gt; +    }
&gt; +    return result;

m_webPage-&gt;mainFrame()-&gt;view()-&gt;windowToContents(frame-&gt;view()-&gt;contentsToWindow(IntPoint::zero()));

something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560619</commentid>
    <comment_count>16</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-20 21:18:48 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 127910 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127910&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:56
&gt; &gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; &gt; +        if (scrollView-&gt;isFrameView()) {
&gt; &gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; &gt; +            if (!renderer)
&gt; &gt; +                return result;
&gt; &gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; &gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; &gt; +            result += FloatSize(point.x(), point.y());
&gt; &gt; +        } else
&gt; &gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; &gt; +        scrollView = parentScrollView;
&gt; &gt; +    }
&gt; &gt; +    return result;
&gt; 
&gt; m_webPage-&gt;mainFrame()-&gt;view()-&gt;windowToContents(frame-&gt;view()-&gt;contentsToWindow(IntPoint::zero()));
&gt; 
&gt; something like this?
If the frame is not in the tree of the main frame, will the result be different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562733</commentid>
    <comment_count>17</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-22 19:53:24 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 127910 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127910&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:56
&gt; &gt; &gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; &gt; &gt; +        if (scrollView-&gt;isFrameView()) {
&gt; &gt; &gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; &gt; &gt; +            if (!renderer)
&gt; &gt; &gt; +                return result;
&gt; &gt; &gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; &gt; &gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; &gt; &gt; +            result += FloatSize(point.x(), point.y());
&gt; &gt; &gt; +        } else
&gt; &gt; &gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; &gt; &gt; +        scrollView = parentScrollView;
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    return result;
&gt; &gt; 
&gt; &gt; m_webPage-&gt;mainFrame()-&gt;view()-&gt;windowToContents(frame-&gt;view()-&gt;contentsToWindow(IntPoint::zero()));
&gt; &gt; 
&gt; &gt; something like this?
&gt; If the frame is not in the tree of the main frame, will the result be different?

Not sure if I understood your question. Anyways, you tell me : )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562751</commentid>
    <comment_count>18</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-22 20:06:33 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (From update of attachment 127910 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127910&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/blackberry/WebKitSupport/FrameLayers.cpp:56
&gt; &gt; &gt; &gt; +    while (const ScrollView* parentScrollView = scrollView-&gt;parent()) {
&gt; &gt; &gt; &gt; +        if (scrollView-&gt;isFrameView()) {
&gt; &gt; &gt; &gt; +            RenderPart* renderer = static_cast&lt;const FrameView*&gt;(scrollView)-&gt;frame()-&gt;ownerRenderer();
&gt; &gt; &gt; &gt; +            if (!renderer)
&gt; &gt; &gt; &gt; +                return result;
&gt; &gt; &gt; &gt; +            FloatPoint point = FloatPoint(renderer-&gt;borderLeft() + renderer-&gt;paddingLeft(), renderer-&gt;borderTop() + renderer-&gt;paddingTop());
&gt; &gt; &gt; &gt; +            point = renderer-&gt;localToAbsolute(point);
&gt; &gt; &gt; &gt; +            result += FloatSize(point.x(), point.y());
&gt; &gt; &gt; &gt; +        } else
&gt; &gt; &gt; &gt; +            result += FloatSize(scrollView-&gt;x(), scrollView-&gt;y());
&gt; &gt; &gt; &gt; +        scrollView = parentScrollView;
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; &gt; +    return result;
&gt; &gt; &gt; 
&gt; &gt; &gt; m_webPage-&gt;mainFrame()-&gt;view()-&gt;windowToContents(frame-&gt;view()-&gt;contentsToWindow(IntPoint::zero()));
&gt; &gt; &gt; 
&gt; &gt; &gt; something like this?
&gt; &gt; If the frame is not in the tree of the main frame, will the result be different?
&gt; 
&gt; Not sure if I understood your question. Anyways, you tell me : )

If the frame is not in the subtree of main frame, frameLayerAbsoluteOffset() will return the offset in the top-level frame (not main frame) coordination. But I don&apos;t know if m_webPage-&gt;mainFrame()-&gt;view()-&gt;windowToContents(frame-&gt;view()-&gt;contentsToWindow(IntPoint::zero())) behaves in the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564044</commentid>
    <comment_count>19</comment_count>
      <attachid>128676</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-24 00:36:40 -0800</bug_when>
    <thetext>Created attachment 128676
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564263</commentid>
    <comment_count>20</comment_count>
      <attachid>128676</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-24 06:08:51 -0800</bug_when>
    <thetext>Comment on attachment 128676
Patch v4

r+. Please go ahead if frameLayerAbsoluteOffset is properly tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565323</commentid>
    <comment_count>21</comment_count>
      <attachid>128676</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-26 22:11:01 -0800</bug_when>
    <thetext>Comment on attachment 128676
Patch v4

Sending to the cq ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565428</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 00:26:09 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 128676:

css3/filters/effect-invert-hw.html bug 79639 (author: cmarrin@apple.com)
inspector/protocol/console-agent.html bug 79563 (authors: caseq@chromium.org, loislo@chromium.org, and pfeldman@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565430</commentid>
    <comment_count>23</comment_count>
      <attachid>128676</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 00:28:10 -0800</bug_when>
    <thetext>Comment on attachment 128676
Patch v4

Clearing flags on attachment: 128676

Committed r108963: &lt;http://trac.webkit.org/changeset/108963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565431</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 00:28:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126700</attachid>
            <date>2012-02-12 18:23:45 -0800</date>
            <delta_ts>2012-02-12 21:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-BlackBerry-Upstream-accelerated-compositing-helper-c.patch</filename>
            <type>text/plain</type>
            <size>8613</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA2NTk2OGMyNmUxMjJjZmRhYWRiODU0NmM0MjNkZTY2ZTAxM2ExODM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBNb24sIDEzIEZlYiAyMDEyIDEwOjIyOjQ0ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwc3RyZWFtIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGhlbHBlciBjbGFz
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KCiog
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmNwcDogQWRkZWQuCiogYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmg6IEFkZGVkLgotLS0KIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogLi4uL2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHAgICAgICAgfCAgMTM2ICsrKysr
KysrKysrKysrKysrKysrCiAuLi4vV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFt
ZUxheWVycy5oICB8ICAgNzUgKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2Vy
dGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuY3BwCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMu
aAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNjg5N2ViOC4uZTAzMmQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxMi0wMi0xMiAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisK
KyAgICAgICAgW0JsYWNrQmVycnldIFVwc3RyZWFtIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGhl
bHBlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzg0NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbml0aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuaDogQWRkZWQuCisKIDIwMTItMDItMTAgIE1p
a2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KIAogICAgICAgICBCbGFja0JlcnJ5IFBvcnQg
LSBJbnB1dCBmb2N1cyBpcyBzdXBwcmVzc2VkIGR1cmluZyBYSFIgbG9hZHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2Y0MmRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMu
Y3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAy
MDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJGcmFtZUxheWVycy5oIgorCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJMYXllcldlYktpdFRo
cmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIK
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBG
bG9hdFNpemUgZnJhbWVMYXllckFic29sdXRlT2Zmc2V0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBG
bG9hdFNpemUgcmVzdWx0OworICAgIEFTU0VSVChmcmFtZSk7CisgICAgY29uc3QgU2Nyb2xsVmll
dyogc2Nyb2xsVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgaWYgKCFzY3JvbGxWaWV3KQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgd2hpbGUgKGNvbnN0IFNjcm9sbFZpZXcqIHBhcmVu
dFNjcm9sbFZpZXcgPSBzY3JvbGxWaWV3LT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoc2Nyb2xs
Vmlldy0+aXNGcmFtZVZpZXcoKSkgeworICAgICAgICAgICAgUmVuZGVyUGFydCogcmVuZGVyZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPihzY3JvbGxWaWV3KS0+ZnJhbWUoKS0+b3du
ZXJSZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgRmxvYXRQb2ludCBwb2ludCA9IEZsb2F0UG9p
bnQocmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpLCByZW5k
ZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1RvcCgpKTsKKyAgICAgICAgICAg
IHBvaW50ID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShwb2ludCk7CisgICAgICAgICAgICBy
ZXN1bHQgKz0gRmxvYXRTaXplKHBvaW50LngoKSwgcG9pbnQueSgpKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICByZXN1bHQgKz0gRmxvYXRTaXplKHNjcm9sbFZpZXctPngoKSwgc2Nyb2xs
Vmlldy0+eSgpKTsKKyAgICAgICAgc2Nyb2xsVmlldyA9IHBhcmVudFNjcm9sbFZpZXc7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0ZyYW1lTGF5ZXJzOjpGcmFtZUxheWVycyhXZWJQ
YWdlUHJpdmF0ZSogcGFnZSkKKyAgICA6IG1fcGFnZVByaXZhdGUocGFnZSkKKyAgICAsIG1fcm9v
dEdyYXBoaWNzTGF5ZXIoKQorICAgICwgbV9yb290TGF5ZXIoMCkKK3sKK30KKworRnJhbWVMYXll
cnM6On5GcmFtZUxheWVycygpCit7CisgICAgbV9mcmFtZUxheWVycy5jbGVhcigpOworfQorCiti
b29sIEZyYW1lTGF5ZXJzOjpjb250YWluc0xheWVyRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQorewor
ICAgIEFTU0VSVChmcmFtZSk7CisgICAgcmV0dXJuIG1fZnJhbWVMYXllcnMuY29udGFpbnMoZnJh
bWUpOworfQorCit2b2lkIEZyYW1lTGF5ZXJzOjphZGRMYXllcihGcmFtZSogZnJhbWUsIExheWVy
V2ViS2l0VGhyZWFkKiBsYXllcikKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIG1haW4gZnJhbWUgbGF5
ZXIgd2UgZG9uJ3QgYWNjZXB0IG90aGVyIGxheWVycy4KKyAgICAvLyBUaGlzIHNob3VsZCBub3Qg
aGFwcGVuIGFjdHVhbGx5LgorICAgIEFTU0VSVChmcmFtZSAhPSBtX3BhZ2VQcml2YXRlLT5tX21h
aW5GcmFtZSB8fCAhaXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigpKTsKKyAgICBpZiAoZnJhbWUg
PT0gbV9wYWdlUHJpdmF0ZS0+bV9tYWluRnJhbWUgJiYgaXNSb290TGF5ZXJNYWluRnJhbWVMYXll
cigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZnJhbWUgJiYgbGF5ZXIgJiYgIW1f
ZnJhbWVMYXllcnMuY29udGFpbnMoZnJhbWUpKTsKKworICAgIG1fZnJhbWVMYXllcnMuYWRkKGZy
YW1lLCBsYXllcik7CisKKyAgICBjYWxjdWxhdGVSb290TGF5ZXIoKTsKKyAgICBpZiAoIW1fcm9v
dExheWVyKSB7CisgICAgICAgIEFTU0VSVCghbV9yb290R3JhcGhpY3NMYXllcik7CisgICAgICAg
IG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCk7CisgICAgICAg
IG1fcm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAg
IH0KKworICAgIGlmIChtX3Jvb3RMYXllciAhPSBsYXllcikKKyAgICAgICAgbV9yb290TGF5ZXIt
PmFkZFN1YmxheWVyKGxheWVyKTsKK30KKwordm9pZCBGcmFtZUxheWVyczo6cmVtb3ZlTGF5ZXJC
eUZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEZyYW1lTGF5
ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZUxheWVycy5maW5kKGZyYW1lKTsKKyAgICBpZiAo
aXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKSkgeworICAgICAgICBMYXllcldlYktpdFRocmVhZCog
bGF5ZXIgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAobGF5ZXItPnN1cGVybGF5ZXIoKSkKKyAg
ICAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgICAgICBtX2ZyYW1l
TGF5ZXJzLnJlbW92ZShpdCk7CisgICAgICAgIGNhbGN1bGF0ZVJvb3RMYXllcigpOworICAgIH0K
K30KKwordm9pZCBGcmFtZUxheWVyczo6Y29tbWl0T25XZWJLaXRUaHJlYWQoZG91YmxlIHNjYWxl
KQoreworICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CisgICAgaWYgKCFpc1Jvb3RMYXllck1haW5G
cmFtZUxheWVyKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZUxheWVyTWFwOjppdGVyYXRvciBpdCA9
IG1fZnJhbWVMYXllcnMuYmVnaW4oKTsgaXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKTsgKytpdCkK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEFic29sdXRlT2Zmc2V0KGZyYW1lTGF5ZXJBYnNv
bHV0ZU9mZnNldChpdC0+Zmlyc3QpKTsKKyAgICB9CisgICAgbV9yb290TGF5ZXItPmNvbW1pdE9u
V2ViS2l0VGhyZWFkKHNjYWxlKTsKK30KKwordm9pZCBGcmFtZUxheWVyczo6Y2FsY3VsYXRlUm9v
dExheWVyKCkKK3sKKyAgICBpZiAobV9mcmFtZUxheWVycy5zaXplKCkgPT0gMSAmJiBtX2ZyYW1l
TGF5ZXJzLmJlZ2luKCktPmZpcnN0ID09IG1fcGFnZVByaXZhdGUtPm1fbWFpbkZyYW1lKQorICAg
ICAgICBtX3Jvb3RMYXllciA9IG1fZnJhbWVMYXllcnMuYmVnaW4oKS0+c2Vjb25kOworICAgIGVs
c2UgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1fcm9vdExheWVyID0gbV9yb290
R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIGVsc2UKKyAgICAgICAgbV9yb290
TGF5ZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Cit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Njg0OTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVy
cy5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIw
MTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBGcmFtZUxheWVyc19oCisjZGVmaW5lIEZyYW1lTGF5
ZXJzX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBMYXll
cldlYktpdFRocmVhZDsKK30KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcml2YXRlOworCisvLyBUaGlzIGNsYXNzIG1heSBvbmx5
IGJlIHVzZWQgb24gdGhlIFdlYktpdCB0aHJlYWQsCisvLyBGSVhNRTogd2l0aCB0aGUgZXhjZXB0
aW9uIG9mIHRoZSByb290TGF5ZXJXZWJLaXRUaHJlYWQoKSBtZXRob2QKK2NsYXNzIEZyYW1lTGF5
ZXJzIHsKK3B1YmxpYzoKKyAgICBGcmFtZUxheWVycyhXZWJQYWdlUHJpdmF0ZSopOworICAgIH5G
cmFtZUxheWVycygpOworCisgICAgYm9vbCBjb250YWluc0xheWVyRm9yRnJhbWUoV2ViQ29yZTo6
RnJhbWUqKTsKKyAgICB2b2lkIGFkZExheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6TGF5
ZXJXZWJLaXRUaHJlYWQqKTsKKyAgICB2b2lkIHJlbW92ZUxheWVyQnlGcmFtZShXZWJDb3JlOjpG
cmFtZSopOworCisgICAgYm9vbCBoYXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMYXll
cnMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIGNvbW1pdE9uV2ViS2l0VGhyZWFkKGRvdWJsZSBzY2Fs
ZSk7CisKKyAgICB2b2lkIGNhbGN1bGF0ZVJvb3RMYXllcigpOworCisgICAgYm9vbCBpc1Jvb3RM
YXllck1haW5GcmFtZUxheWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Jvb3RM
YXllciAmJiAhbV9yb290R3JhcGhpY3NMYXllcjsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpMYXll
cldlYktpdFRocmVhZCogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXI7IH0K
KworcHJpdmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWUqLCBXZWJDb3Jl
OjpMYXllcldlYktpdFRocmVhZCo+IEZyYW1lTGF5ZXJNYXA7CisgICAgV2ViUGFnZVByaXZhdGUq
IG1fcGFnZVByaXZhdGU7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9v
dEdyYXBoaWNzTGF5ZXI7CisgICAgV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIG1fcm9vdExh
eWVyOworICAgIEZyYW1lTGF5ZXJNYXAgbV9mcmFtZUxheWVyczsKK307CisKK30gLy8gbmFtZXNw
YWNlIEJsYWNrQmVycnkKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gRnJhbWVMYXllcnNfaAotLSAKMS43
LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127895</attachid>
            <date>2012-02-20 19:20:45 -0800</date>
            <delta_ts>2012-02-20 20:58:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-BlackBerry-Upstream-accelerated-compositing-helper-c.patch</filename>
            <type>text/plain</type>
            <size>8702</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSBjNjk3ZmM2MzY4MGYxYmMwZTgwZGZkNzYyZWI4MTdiNWZiYmMxZTJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBUdWUsIDIxIEZlYiAyMDEyIDExOjE5OjQzICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwc3RyZWFtIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGhlbHBlciBjbGFz
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KCiog
V2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHA6IEFkZGVkLgoqIFdlYktpdFN1cHBvcnQvRnJh
bWVMYXllcnMuaDogQWRkZWQuCi0tLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCAgICAgICB8ICAxMzYgKysrKysrKysrKysrKysrKysrKysKIC4uLi9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmggIHwgICA3NiArKysr
KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMjQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxheWVycy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKaW5kZXggZWQ3ZGFmZC4uYTE5ZDdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMjAgIExlbyBZYW5nICA8bGVvLnlhbmdA
dG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZyBoZWxwZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVhbSwgbm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuaDogQWRkZWQuCisKIDIwMTItMDItMjAgIEFu
dG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAgICAgICBBbGwgZGVmYXVsdCB2aWRl
by9hdWRpbyBjb250cm9sIGVsZW1lbnRzIHNob3VsZCBiZSByZWN0LWhpdCB0ZXN0YWJsZSAoUGFy
dCBJSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2Y0
MmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRnJhbWVMYXllcnMuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJGcmFtZUxheWVy
cy5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJMYXllcldlYktpdFRocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0YXRpYyBGbG9hdFNpemUgZnJhbWVMYXllckFic29sdXRlT2Zmc2V0KEZyYW1l
KiBmcmFtZSkKK3sKKyAgICBGbG9hdFNpemUgcmVzdWx0OworICAgIEFTU0VSVChmcmFtZSk7Cisg
ICAgY29uc3QgU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgaWYg
KCFzY3JvbGxWaWV3KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgd2hpbGUgKGNvbnN0
IFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBzY3JvbGxWaWV3LT5wYXJlbnQoKSkgewor
ICAgICAgICBpZiAoc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkgeworICAgICAgICAgICAgUmVu
ZGVyUGFydCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPihzY3JvbGxW
aWV3KS0+ZnJhbWUoKS0+b3duZXJSZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgRmxvYXRQb2lu
dCBwb2ludCA9IEZsb2F0UG9pbnQocmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5w
YWRkaW5nTGVmdCgpLCByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1Rv
cCgpKTsKKyAgICAgICAgICAgIHBvaW50ID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShwb2lu
dCk7CisgICAgICAgICAgICByZXN1bHQgKz0gRmxvYXRTaXplKHBvaW50LngoKSwgcG9pbnQueSgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1bHQgKz0gRmxvYXRTaXplKHNjcm9s
bFZpZXctPngoKSwgc2Nyb2xsVmlldy0+eSgpKTsKKyAgICAgICAgc2Nyb2xsVmlldyA9IHBhcmVu
dFNjcm9sbFZpZXc7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0ZyYW1lTGF5ZXJz
OjpGcmFtZUxheWVycyhXZWJQYWdlUHJpdmF0ZSogcGFnZSkKKyAgICA6IG1fcGFnZVByaXZhdGUo
cGFnZSkKKyAgICAsIG1fcm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICwgbV9yb290TGF5ZXIoMCkK
K3sKK30KKworRnJhbWVMYXllcnM6On5GcmFtZUxheWVycygpCit7CisgICAgbV9mcmFtZUxheWVy
cy5jbGVhcigpOworfQorCitib29sIEZyYW1lTGF5ZXJzOjpjb250YWluc0xheWVyRm9yRnJhbWUo
RnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVChmcmFtZSk7CisgICAgcmV0dXJuIG1fZnJhbWVM
YXllcnMuY29udGFpbnMoZnJhbWUpOworfQorCit2b2lkIEZyYW1lTGF5ZXJzOjphZGRMYXllcihG
cmFtZSogZnJhbWUsIExheWVyV2ViS2l0VGhyZWFkKiBsYXllcikKK3sKKyAgICAvLyBJZiB3ZSBo
YXZlIG1haW4gZnJhbWUgbGF5ZXIgd2UgZG9uJ3QgYWNjZXB0IG90aGVyIGxheWVycy4KKyAgICAv
LyBUaGlzIHNob3VsZCBub3QgaGFwcGVuIGFjdHVhbGx5LgorICAgIEFTU0VSVChmcmFtZSAhPSBt
X3BhZ2VQcml2YXRlLT5tX21haW5GcmFtZSB8fCAhaXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigp
KTsKKyAgICBpZiAoZnJhbWUgPT0gbV9wYWdlUHJpdmF0ZS0+bV9tYWluRnJhbWUgJiYgaXNSb290
TGF5ZXJNYWluRnJhbWVMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZnJh
bWUgJiYgbGF5ZXIgJiYgIW1fZnJhbWVMYXllcnMuY29udGFpbnMoZnJhbWUpKTsKKworICAgIG1f
ZnJhbWVMYXllcnMuYWRkKGZyYW1lLCBsYXllcik7CisKKyAgICBjYWxjdWxhdGVSb290TGF5ZXIo
KTsKKyAgICBpZiAoIW1fcm9vdExheWVyKSB7CisgICAgICAgIEFTU0VSVCghbV9yb290R3JhcGhp
Y3NMYXllcik7CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpj
cmVhdGUoMCk7CisgICAgICAgIG1fcm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxh
dGZvcm1MYXllcigpOworICAgIH0KKworICAgIGlmIChtX3Jvb3RMYXllciAhPSBsYXllcikKKyAg
ICAgICAgbV9yb290TGF5ZXItPmFkZFN1YmxheWVyKGxheWVyKTsKK30KKwordm9pZCBGcmFtZUxh
eWVyczo6cmVtb3ZlTGF5ZXJCeUZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJh
bWUpOworICAgIEZyYW1lTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZUxheWVycy5maW5k
KGZyYW1lKTsKKyAgICBpZiAoaXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKSkgeworICAgICAgICBM
YXllcldlYktpdFRocmVhZCogbGF5ZXIgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAobGF5ZXIt
PnN1cGVybGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigp
OworICAgICAgICBtX2ZyYW1lTGF5ZXJzLnJlbW92ZShpdCk7CisgICAgICAgIGNhbGN1bGF0ZVJv
b3RMYXllcigpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxheWVyczo6Y29tbWl0T25XZWJLaXRU
aHJlYWQoZG91YmxlIHNjYWxlKQoreworICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CisgICAgaWYg
KCFpc1Jvb3RMYXllck1haW5GcmFtZUxheWVyKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZUxheWVy
TWFwOjppdGVyYXRvciBpdCA9IG1fZnJhbWVMYXllcnMuYmVnaW4oKTsgaXQgIT0gbV9mcmFtZUxh
eWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEFic29sdXRlT2Zm
c2V0KGZyYW1lTGF5ZXJBYnNvbHV0ZU9mZnNldChpdC0+Zmlyc3QpKTsKKyAgICB9CisgICAgbV9y
b290TGF5ZXItPmNvbW1pdE9uV2ViS2l0VGhyZWFkKHNjYWxlKTsKK30KKwordm9pZCBGcmFtZUxh
eWVyczo6Y2FsY3VsYXRlUm9vdExheWVyKCkKK3sKKyAgICBpZiAobV9mcmFtZUxheWVycy5zaXpl
KCkgPT0gMSAmJiBtX2ZyYW1lTGF5ZXJzLmJlZ2luKCktPmZpcnN0ID09IG1fcGFnZVByaXZhdGUt
Pm1fbWFpbkZyYW1lKQorICAgICAgICBtX3Jvb3RMYXllciA9IG1fZnJhbWVMYXllcnMuYmVnaW4o
KS0+c2Vjb25kOworICAgIGVsc2UgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1f
cm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIGVs
c2UKKyAgICAgICAgbV9yb290TGF5ZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBCbGFja0Jl
cnJ5Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0ZyYW1lTGF5ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxheWVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEy
YjlkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9GcmFtZUxheWVycy5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBGcmFtZUxheWVyc19o
CisjZGVmaW5lIEZyYW1lTGF5ZXJzX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
RnJhbWU7CitjbGFzcyBMYXllcldlYktpdFRocmVhZDsKK30KKworbmFtZXNwYWNlIEJsYWNrQmVy
cnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcml2YXRlOworCisvLyBU
aGlzIGNsYXNzIG1heSBvbmx5IGJlIHVzZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCitjbGFzcyBG
cmFtZUxheWVycyB7CitwdWJsaWM6CisgICAgRnJhbWVMYXllcnMoV2ViUGFnZVByaXZhdGUqKTsK
KyAgICB+RnJhbWVMYXllcnMoKTsKKworICAgIGJvb2wgY29udGFpbnNMYXllckZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lKik7CisgICAgdm9pZCBhZGRMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6OkxheWVyV2ViS2l0VGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVMYXllckJ5RnJhbWUoV2Vi
Q29yZTo6RnJhbWUqKTsKKworICAgIGJvb2wgaGFzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTGF5ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBjb21taXRPbldlYktpdFRocmVhZChkb3Vi
bGUgc2NhbGUpOworCisgICAgdm9pZCBjYWxjdWxhdGVSb290TGF5ZXIoKTsKKworICAgIGJvb2wg
aXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9yb290TGF5ZXIgJiYgIW1fcm9vdEdyYXBoaWNzTGF5ZXI7CisgICAgfQorCisgICAgLy8gRklY
TUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBXZWJLaXQgdGhy
ZWFkLgorICAgIC8vIEJ1dCBpdCdzIG5vdyBhbHNvIGJlaW5nIGNhbGxlZCBvbiB0aGUgQ29tcG9z
aXRpbmcgdGhyZWFkLgorICAgIFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllcjsgfQorCitwcml2YXRlOgorICAgIHR5cGVkZWYg
SGFzaE1hcDxXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKj4gRnJh
bWVMYXllck1hcDsKKyAgICBXZWJQYWdlUHJpdmF0ZSogbV9wYWdlUHJpdmF0ZTsKKyAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9yb290R3JhcGhpY3NMYXllcjsKKyAgICBXZWJD
b3JlOjpMYXllcldlYktpdFRocmVhZCogbV9yb290TGF5ZXI7CisgICAgRnJhbWVMYXllck1hcCBt
X2ZyYW1lTGF5ZXJzOworfTsKKworfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBGcmFtZUxheWVyc19oCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127910</attachid>
            <date>2012-02-20 20:58:04 -0800</date>
            <delta_ts>2012-02-24 00:36:40 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>0001-BlackBerry-Upstream-accelerated-compositing-helper-c.patch</filename>
            <type>text/plain</type>
            <size>8683</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA2ZjM2NDA3NjlmYTQ1NDJjM2UyMjNhNTM0YjIxZWM4OGI2YTQyODJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBUdWUsIDIxIEZlYiAyMDEyIDExOjE5OjQzICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwc3RyZWFtIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGhlbHBlciBjbGFz
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KCiog
V2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHA6IEFkZGVkLgoqIFdlYktpdFN1cHBvcnQvRnJh
bWVMYXllcnMuaDogQWRkZWQuCi0tLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCAgICAgICB8ICAxMzYgKysrKysrKysrKysrKysrKysrKysKIC4uLi9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmggIHwgICA3MyArKysr
KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxheWVycy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5oCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKaW5kZXggZWQ3ZGFmZC4uYTE5ZDdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMjAgIExlbyBZYW5nICA8bGVvLnlhbmdA
dG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZyBoZWxwZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVhbSwgbm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuaDogQWRkZWQuCisKIDIwMTItMDItMjAgIEFu
dG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KIAogICAgICAgICBBbGwgZGVmYXVsdCB2aWRl
by9hdWRpbyBjb250cm9sIGVsZW1lbnRzIHNob3VsZCBiZSByZWN0LWhpdCB0ZXN0YWJsZSAoUGFy
dCBJSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2Y0
MmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRnJhbWVMYXllcnMuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJGcmFtZUxheWVy
cy5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJMYXllcldlYktpdFRocmVhZC5oIgorI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3N0YXRpYyBGbG9hdFNpemUgZnJhbWVMYXllckFic29sdXRlT2Zmc2V0KEZyYW1l
KiBmcmFtZSkKK3sKKyAgICBGbG9hdFNpemUgcmVzdWx0OworICAgIEFTU0VSVChmcmFtZSk7Cisg
ICAgY29uc3QgU2Nyb2xsVmlldyogc2Nyb2xsVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgaWYg
KCFzY3JvbGxWaWV3KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgd2hpbGUgKGNvbnN0
IFNjcm9sbFZpZXcqIHBhcmVudFNjcm9sbFZpZXcgPSBzY3JvbGxWaWV3LT5wYXJlbnQoKSkgewor
ICAgICAgICBpZiAoc2Nyb2xsVmlldy0+aXNGcmFtZVZpZXcoKSkgeworICAgICAgICAgICAgUmVu
ZGVyUGFydCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBGcmFtZVZpZXcqPihzY3JvbGxW
aWV3KS0+ZnJhbWUoKS0+b3duZXJSZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgRmxvYXRQb2lu
dCBwb2ludCA9IEZsb2F0UG9pbnQocmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHJlbmRlcmVyLT5w
YWRkaW5nTGVmdCgpLCByZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyByZW5kZXJlci0+cGFkZGluZ1Rv
cCgpKTsKKyAgICAgICAgICAgIHBvaW50ID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShwb2lu
dCk7CisgICAgICAgICAgICByZXN1bHQgKz0gRmxvYXRTaXplKHBvaW50LngoKSwgcG9pbnQueSgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXN1bHQgKz0gRmxvYXRTaXplKHNjcm9s
bFZpZXctPngoKSwgc2Nyb2xsVmlldy0+eSgpKTsKKyAgICAgICAgc2Nyb2xsVmlldyA9IHBhcmVu
dFNjcm9sbFZpZXc7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0ZyYW1lTGF5ZXJz
OjpGcmFtZUxheWVycyhXZWJQYWdlUHJpdmF0ZSogcGFnZSkKKyAgICA6IG1fcGFnZVByaXZhdGUo
cGFnZSkKKyAgICAsIG1fcm9vdEdyYXBoaWNzTGF5ZXIoKQorICAgICwgbV9yb290TGF5ZXIoMCkK
K3sKK30KKworRnJhbWVMYXllcnM6On5GcmFtZUxheWVycygpCit7CisgICAgbV9mcmFtZUxheWVy
cy5jbGVhcigpOworfQorCitib29sIEZyYW1lTGF5ZXJzOjpjb250YWluc0xheWVyRm9yRnJhbWUo
RnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVChmcmFtZSk7CisgICAgcmV0dXJuIG1fZnJhbWVM
YXllcnMuY29udGFpbnMoZnJhbWUpOworfQorCit2b2lkIEZyYW1lTGF5ZXJzOjphZGRMYXllcihG
cmFtZSogZnJhbWUsIExheWVyV2ViS2l0VGhyZWFkKiBsYXllcikKK3sKKyAgICAvLyBJZiB3ZSBo
YXZlIG1haW4gZnJhbWUgbGF5ZXIgd2UgZG9uJ3QgYWNjZXB0IG90aGVyIGxheWVycy4KKyAgICAv
LyBUaGlzIHNob3VsZCBub3QgaGFwcGVuIGFjdHVhbGx5LgorICAgIEFTU0VSVChmcmFtZSAhPSBt
X3BhZ2VQcml2YXRlLT5tX21haW5GcmFtZSB8fCAhaXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigp
KTsKKyAgICBpZiAoZnJhbWUgPT0gbV9wYWdlUHJpdmF0ZS0+bV9tYWluRnJhbWUgJiYgaXNSb290
TGF5ZXJNYWluRnJhbWVMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZnJh
bWUgJiYgbGF5ZXIgJiYgIW1fZnJhbWVMYXllcnMuY29udGFpbnMoZnJhbWUpKTsKKworICAgIG1f
ZnJhbWVMYXllcnMuYWRkKGZyYW1lLCBsYXllcik7CisKKyAgICBjYWxjdWxhdGVSb290TGF5ZXIo
KTsKKyAgICBpZiAoIW1fcm9vdExheWVyKSB7CisgICAgICAgIEFTU0VSVCghbV9yb290R3JhcGhp
Y3NMYXllcik7CisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpj
cmVhdGUoMCk7CisgICAgICAgIG1fcm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxh
dGZvcm1MYXllcigpOworICAgIH0KKworICAgIGlmIChtX3Jvb3RMYXllciAhPSBsYXllcikKKyAg
ICAgICAgbV9yb290TGF5ZXItPmFkZFN1YmxheWVyKGxheWVyKTsKK30KKwordm9pZCBGcmFtZUxh
eWVyczo6cmVtb3ZlTGF5ZXJCeUZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJh
bWUpOworICAgIEZyYW1lTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZUxheWVycy5maW5k
KGZyYW1lKTsKKyAgICBpZiAoaXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKSkgeworICAgICAgICBM
YXllcldlYktpdFRocmVhZCogbGF5ZXIgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAobGF5ZXIt
PnN1cGVybGF5ZXIoKSkKKyAgICAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigp
OworICAgICAgICBtX2ZyYW1lTGF5ZXJzLnJlbW92ZShpdCk7CisgICAgICAgIGNhbGN1bGF0ZVJv
b3RMYXllcigpOworICAgIH0KK30KKwordm9pZCBGcmFtZUxheWVyczo6Y29tbWl0T25XZWJLaXRU
aHJlYWQoZG91YmxlIHNjYWxlKQoreworICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CisgICAgaWYg
KCFpc1Jvb3RMYXllck1haW5GcmFtZUxheWVyKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZUxheWVy
TWFwOjppdGVyYXRvciBpdCA9IG1fZnJhbWVMYXllcnMuYmVnaW4oKTsgaXQgIT0gbV9mcmFtZUxh
eWVycy5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEFic29sdXRlT2Zm
c2V0KGZyYW1lTGF5ZXJBYnNvbHV0ZU9mZnNldChpdC0+Zmlyc3QpKTsKKyAgICB9CisgICAgbV9y
b290TGF5ZXItPmNvbW1pdE9uV2ViS2l0VGhyZWFkKHNjYWxlKTsKK30KKwordm9pZCBGcmFtZUxh
eWVyczo6Y2FsY3VsYXRlUm9vdExheWVyKCkKK3sKKyAgICBpZiAobV9mcmFtZUxheWVycy5zaXpl
KCkgPT0gMSAmJiBtX2ZyYW1lTGF5ZXJzLmJlZ2luKCktPmZpcnN0ID09IG1fcGFnZVByaXZhdGUt
Pm1fbWFpbkZyYW1lKQorICAgICAgICBtX3Jvb3RMYXllciA9IG1fZnJhbWVMYXllcnMuYmVnaW4o
KS0+c2Vjb25kOworICAgIGVsc2UgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1f
cm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIGVs
c2UKKyAgICAgICAgbV9yb290TGF5ZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBCbGFja0Jl
cnJ5Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0ZyYW1lTGF5ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9GcmFtZUxheWVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5
MDEzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9GcmFtZUxheWVycy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBGcmFtZUxheWVyc19o
CisjZGVmaW5lIEZyYW1lTGF5ZXJzX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
RnJhbWU7CitjbGFzcyBMYXllcldlYktpdFRocmVhZDsKK30KKworbmFtZXNwYWNlIEJsYWNrQmVy
cnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcml2YXRlOworCisvLyBU
aGlzIGNsYXNzIG1heSBvbmx5IGJlIHVzZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCitjbGFzcyBG
cmFtZUxheWVycyB7CitwdWJsaWM6CisgICAgRnJhbWVMYXllcnMoV2ViUGFnZVByaXZhdGUqKTsK
KyAgICB+RnJhbWVMYXllcnMoKTsKKworICAgIGJvb2wgY29udGFpbnNMYXllckZvckZyYW1lKFdl
YkNvcmU6OkZyYW1lKik7CisgICAgdm9pZCBhZGRMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNv
cmU6OkxheWVyV2ViS2l0VGhyZWFkKik7CisgICAgdm9pZCByZW1vdmVMYXllckJ5RnJhbWUoV2Vi
Q29yZTo6RnJhbWUqKTsKKworICAgIGJvb2wgaGFzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTGF5ZXJzLnNpemUoKTsgfQorCisgICAgdm9pZCBjb21taXRPbldlYktpdFRocmVhZChkb3Vi
bGUgc2NhbGUpOworCisgICAgdm9pZCBjYWxjdWxhdGVSb290TGF5ZXIoKTsKKworICAgIGJvb2wg
aXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyICYm
ICFtX3Jvb3RHcmFwaGljc0xheWVyOyB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBz
aG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCisgICAgLy8gQnV0IGl0
J3Mgbm93IGFsc28gYmVpbmcgY2FsbGVkIG9uIHRoZSBDb21wb3NpdGluZyB0aHJlYWQuCisgICAg
V2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdExheWVyOyB9CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVByaXZhdGUqIG1fcGFnZVByaXZh
dGU7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdEdyYXBoaWNzTGF5
ZXI7CisgICAgV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIG1fcm9vdExheWVyOworICAgIHR5
cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFk
Kj4gRnJhbWVMYXllck1hcDsKKyAgICBGcmFtZUxheWVyTWFwIG1fZnJhbWVMYXllcnM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEZyYW1lTGF5
ZXJzX2gKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128676</attachid>
            <date>2012-02-24 00:36:40 -0800</date>
            <delta_ts>2012-02-27 00:28:10 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>0001-BlackBerry-Upstream-accelerated-compositing-helper-c.patch</filename>
            <type>text/plain</type>
            <size>8209</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA1OWUyMjI3MzI3YzY4ODE3MmQxOGRiY2ViOTBmZmIxYmU0ZTI3NTFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBGcmksIDI0IEZlYiAyMDEyIDE2OjM0OjUxICswODAwClN1YmplY3Q6IFtQQVRDSF0g
W0JsYWNrQmVycnldIFVwc3RyZWFtIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGhlbHBlciBjbGFz
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDQ4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KCiog
V2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5jcHA6IEFkZGVkLgoqIFdlYktpdFN1cHBvcnQvRnJh
bWVMYXllcnMuaDogQWRkZWQuCi0tLQogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0ZyYW1lTGF5ZXJzLmNwcCAgICAgICB8ICAxMjUgKysrKysrKysrKysrKysrKysrKysKIC4uLi9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmggIHwgICA3MyArKysr
KysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRnJhbWVMYXllcnMuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuaAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCmluZGV4IGZiMzkwNTMuLmY4OGI4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTI0ICBMZW8gWWFuZyAgPGxlby55YW5n
QHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0gYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaGVscGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4K
KworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMYXllcnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJzLmg6IEFkZGVkLgorCiAyMDEyLTAyLTIzICBN
aWtlIEZlbnRvbiAgPG1pZmVudG9uQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFNl
bGVjdGlvbiBoYW5kbGVyIGhhcyBjb21waWxlIGZhaWx1cmUgd2l0aCBsb2dzIGVuYWJsZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxh
eWVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxh
eWVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3NTY0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Zy
YW1lTGF5ZXJzLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiRnJhbWVMYXllcnMuaCIKKwor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTGF5
ZXJXZWJLaXRUaHJlYWQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyUGFy
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7Citu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEZsb2F0U2l6ZSBmcmFtZUxheWVyQWJzb2x1dGVP
ZmZzZXQoRnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVChmcmFtZSk7CisKKyAgICBpZiAoIWZy
YW1lLT52aWV3KCkgfHwgIWZyYW1lLT5wYWdlKCkgfHwgIWZyYW1lLT5wYWdlKCktPm1haW5GcmFt
ZSgpIHx8ICFmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1
cm4gRmxvYXRTaXplKCk7CisKKyAgICBJbnRQb2ludCBvZmZzZXQgPSBmcmFtZS0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGZyYW1lLT52aWV3KCktPmNvbnRl
bnRzVG9XaW5kb3coSW50UG9pbnQ6Onplcm8oKSkpOworICAgIHJldHVybiBGbG9hdFNpemUob2Zm
c2V0LngoKSwgb2Zmc2V0LnkoKSk7Cit9CisKK0ZyYW1lTGF5ZXJzOjpGcmFtZUxheWVycyhXZWJQ
YWdlUHJpdmF0ZSogcGFnZSkKKyAgICA6IG1fcGFnZVByaXZhdGUocGFnZSkKKyAgICAsIG1fcm9v
dEdyYXBoaWNzTGF5ZXIoKQorICAgICwgbV9yb290TGF5ZXIoMCkKK3sKK30KKworRnJhbWVMYXll
cnM6On5GcmFtZUxheWVycygpCit7CisgICAgbV9mcmFtZUxheWVycy5jbGVhcigpOworfQorCiti
b29sIEZyYW1lTGF5ZXJzOjpjb250YWluc0xheWVyRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQorewor
ICAgIEFTU0VSVChmcmFtZSk7CisgICAgcmV0dXJuIG1fZnJhbWVMYXllcnMuY29udGFpbnMoZnJh
bWUpOworfQorCit2b2lkIEZyYW1lTGF5ZXJzOjphZGRMYXllcihGcmFtZSogZnJhbWUsIExheWVy
V2ViS2l0VGhyZWFkKiBsYXllcikKK3sKKyAgICAvLyBJZiB3ZSBoYXZlIG1haW4gZnJhbWUgbGF5
ZXIgd2UgZG9uJ3QgYWNjZXB0IG90aGVyIGxheWVycy4KKyAgICAvLyBUaGlzIHNob3VsZCBub3Qg
aGFwcGVuIGFjdHVhbGx5LgorICAgIEFTU0VSVChmcmFtZSAhPSBtX3BhZ2VQcml2YXRlLT5tX21h
aW5GcmFtZSB8fCAhaXNSb290TGF5ZXJNYWluRnJhbWVMYXllcigpKTsKKyAgICBpZiAoZnJhbWUg
PT0gbV9wYWdlUHJpdmF0ZS0+bV9tYWluRnJhbWUgJiYgaXNSb290TGF5ZXJNYWluRnJhbWVMYXll
cigpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZnJhbWUgJiYgbGF5ZXIgJiYgIW1f
ZnJhbWVMYXllcnMuY29udGFpbnMoZnJhbWUpKTsKKworICAgIG1fZnJhbWVMYXllcnMuYWRkKGZy
YW1lLCBsYXllcik7CisKKyAgICBjYWxjdWxhdGVSb290TGF5ZXIoKTsKKyAgICBpZiAoIW1fcm9v
dExheWVyKSB7CisgICAgICAgIEFTU0VSVCghbV9yb290R3JhcGhpY3NMYXllcik7CisgICAgICAg
IG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCk7CisgICAgICAg
IG1fcm9vdExheWVyID0gbV9yb290R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAg
IH0KKworICAgIGlmIChtX3Jvb3RMYXllciAhPSBsYXllcikKKyAgICAgICAgbV9yb290TGF5ZXIt
PmFkZFN1YmxheWVyKGxheWVyKTsKK30KKwordm9pZCBGcmFtZUxheWVyczo6cmVtb3ZlTGF5ZXJC
eUZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEZyYW1lTGF5
ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9mcmFtZUxheWVycy5maW5kKGZyYW1lKTsKKyAgICBpZiAo
aXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKSkgeworICAgICAgICBMYXllcldlYktpdFRocmVhZCog
bGF5ZXIgPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAobGF5ZXItPnN1cGVybGF5ZXIoKSkKKyAg
ICAgICAgICAgIGxheWVyLT5yZW1vdmVGcm9tU3VwZXJsYXllcigpOworICAgICAgICBtX2ZyYW1l
TGF5ZXJzLnJlbW92ZShpdCk7CisgICAgICAgIGNhbGN1bGF0ZVJvb3RMYXllcigpOworICAgIH0K
K30KKwordm9pZCBGcmFtZUxheWVyczo6Y29tbWl0T25XZWJLaXRUaHJlYWQoZG91YmxlIHNjYWxl
KQoreworICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CisgICAgaWYgKCFpc1Jvb3RMYXllck1haW5G
cmFtZUxheWVyKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZUxheWVyTWFwOjppdGVyYXRvciBpdCA9
IG1fZnJhbWVMYXllcnMuYmVnaW4oKTsgaXQgIT0gbV9mcmFtZUxheWVycy5lbmQoKTsgKytpdCkK
KyAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldEFic29sdXRlT2Zmc2V0KGZyYW1lTGF5ZXJBYnNv
bHV0ZU9mZnNldChpdC0+Zmlyc3QpKTsKKyAgICB9CisgICAgbV9yb290TGF5ZXItPmNvbW1pdE9u
V2ViS2l0VGhyZWFkKHNjYWxlKTsKK30KKwordm9pZCBGcmFtZUxheWVyczo6Y2FsY3VsYXRlUm9v
dExheWVyKCkKK3sKKyAgICBpZiAobV9mcmFtZUxheWVycy5zaXplKCkgPT0gMSAmJiBtX2ZyYW1l
TGF5ZXJzLmJlZ2luKCktPmZpcnN0ID09IG1fcGFnZVByaXZhdGUtPm1fbWFpbkZyYW1lKQorICAg
ICAgICBtX3Jvb3RMYXllciA9IG1fZnJhbWVMYXllcnMuYmVnaW4oKS0+c2Vjb25kOworICAgIGVs
c2UgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1fcm9vdExheWVyID0gbV9yb290
R3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpOworICAgIGVsc2UKKyAgICAgICAgbV9yb290
TGF5ZXIgPSAwOworfQorCit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5Cit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZyYW1lTGF5ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVycy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MDEzOGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GcmFtZUxheWVy
cy5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIw
MTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAt
MTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBGcmFtZUxheWVyc19oCisjZGVmaW5lIEZyYW1lTGF5
ZXJzX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBMYXll
cldlYktpdFRocmVhZDsKK30KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcml2YXRlOworCisvLyBUaGlzIGNsYXNzIG1heSBvbmx5
IGJlIHVzZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCitjbGFzcyBGcmFtZUxheWVycyB7CitwdWJs
aWM6CisgICAgRnJhbWVMYXllcnMoV2ViUGFnZVByaXZhdGUqKTsKKyAgICB+RnJhbWVMYXllcnMo
KTsKKworICAgIGJvb2wgY29udGFpbnNMYXllckZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKik7Cisg
ICAgdm9pZCBhZGRMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkxheWVyV2ViS2l0VGhy
ZWFkKik7CisgICAgdm9pZCByZW1vdmVMYXllckJ5RnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKKwor
ICAgIGJvb2wgaGFzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTGF5ZXJzLnNpemUoKTsg
fQorCisgICAgdm9pZCBjb21taXRPbldlYktpdFRocmVhZChkb3VibGUgc2NhbGUpOworCisgICAg
dm9pZCBjYWxjdWxhdGVSb290TGF5ZXIoKTsKKworICAgIGJvb2wgaXNSb290TGF5ZXJNYWluRnJh
bWVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyICYmICFtX3Jvb3RHcmFwaGljc0xh
eWVyOyB9CisKKyAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxs
ZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCisgICAgLy8gQnV0IGl0J3Mgbm93IGFsc28gYmVpbmcg
Y2FsbGVkIG9uIHRoZSBDb21wb3NpdGluZyB0aHJlYWQuCisgICAgV2ViQ29yZTo6TGF5ZXJXZWJL
aXRUaHJlYWQqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyOyB9CisKK3By
aXZhdGU6CisgICAgV2ViUGFnZVByaXZhdGUqIG1fcGFnZVByaXZhdGU7CisgICAgT3duUHRyPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdEdyYXBoaWNzTGF5ZXI7CisgICAgV2ViQ29yZTo6
TGF5ZXJXZWJLaXRUaHJlYWQqIG1fcm9vdExheWVyOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJD
b3JlOjpGcmFtZSosIFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFkKj4gRnJhbWVMYXllck1hcDsK
KyAgICBGcmFtZUxheWVyTWFwIG1fZnJhbWVMYXllcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBC
bGFja0JlcnJ5Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIEZyYW1lTGF5ZXJzX2gKLS0gCjEuNy41LjQK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>