<?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>16881</bug_id>
          
          <creation_ts>2008-01-15 07:00:56 -0800</creation_ts>
          <short_desc>[GTK] PlatformScreenGtk is unimplemented</short_desc>
          <delta_ts>2008-08-13 12:57:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19143</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Christian Dywan">christian</reporter>
          <assigned_to name="Marco Barisione">marco.barisione</assigned_to>
          <cc>alp</cc>
    
    <cc>pierre-luc.beaudoin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>67288</commentid>
    <comment_count>0</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-15 07:00:56 -0800</bug_when>
    <thetext>PlatformScreenGtk is mostly unimplemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67348</commentid>
    <comment_count>1</comment_count>
      <attachid>18466</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-16 02:44:29 -0800</bug_when>
    <thetext>Created attachment 18466
Implement stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67359</commentid>
    <comment_count>2</comment_count>
      <attachid>18466</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-16 05:53:15 -0800</bug_when>
    <thetext>Comment on attachment 18466
Implement stubs

&gt;Index: WebCore/platform/gtk/PlatformScreenGtk.cpp
&gt;===================================================================
&gt;--- WebCore/platform/gtk/PlatformScreenGtk.cpp	(Revision 29512)
&gt;+++ WebCore/platform/gtk/PlatformScreenGtk.cpp	(Arbeitskopie)
&gt;@@ -1,6 +1,7 @@
&gt; /*
&gt;  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
&gt;- * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com 
&gt;+ * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
&gt;+ * Copyright (C) 2008 Christian Dywan &lt;christian@imendio.com&gt;
&gt;  * All rights reserved.
&gt;  *
&gt;  * Redistribution and use in source and binary forms, with or without
&gt;@@ -35,37 +36,34 @@
&gt; 
&gt; namespace WebCore {
&gt; 
&gt;-int screenDepth(Widget* widget) 
&gt;+int screenDepth(Widget* widget)
&gt; {
&gt;-    ASSERT(widget-&gt;containingWindow() &amp;&amp; GTK_WIDGET(widget-&gt;containingWindow())-&gt;window);
&gt;-
&gt;-    gint dummy, depth;
&gt;-    gdk_window_get_geometry(GTK_WIDGET(widget-&gt;containingWindow())-&gt;window, &amp;dummy, &amp;dummy, &amp;dummy, &amp;dummy, &amp;depth);
&gt;-    return depth;
&gt;+    GdkVisual* visual = gtk_widget_get_visual(GTK_WIDGET(widget-&gt;containingWindow()));
&gt;+    return visual-&gt;depth;
&gt; }
&gt; 
&gt;-int screenDepthPerComponent(Widget*)
&gt;+int screenDepthPerComponent(Widget* widget)
&gt; {
&gt;-    notImplemented();
&gt;-    return 8;
&gt;+    GdkVisual* visual = gtk_widget_get_visual(GTK_WIDGET(widget-&gt;containingWindow()));
&gt;+    return visual-&gt;bits_per_rgb;
&gt; }
&gt; 
&gt;-bool screenIsMonochrome(Widget*) 
&gt;-{ 
&gt;-    notImplemented(); 
&gt;-    return false; 
&gt;+bool screenIsMonochrome(Widget* widget)
&gt;+{
&gt;+    return screenDepth(widget) &gt; 1;
&gt; }

This doesn&apos;t look right.

I&apos;m curious, did you find a way to test these functions?

It might be worth doing some null checking for screens, widgets, displays etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67585</commentid>
    <comment_count>3</comment_count>
      <attachid>18525</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-01-18 03:09:13 -0800</bug_when>
    <thetext>Created attachment 18525
Implement stubs, updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68301</commentid>
    <comment_count>4</comment_count>
      <attachid>18525</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 08:43:06 -0800</bug_when>
    <thetext>Comment on attachment 18525
Implement stubs, updated

 73     return IntRect(0, 0, gdk_screen_get_width(screen), gdk_screen_get_height(screen));

This doesn&apos;t look right for when multiple screens are involved. This is supposed to return the proper rectangle considering a single large coordinate space -- it can&apos;t have an origin of 0,0 for every screen. Did you test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73561</commentid>
    <comment_count>5</comment_count>
    <who name="Pierre-Luc Beaudoin">pierre-luc.beaudoin</who>
    <bug_when>2008-03-13 05:30:08 -0700</bug_when>
    <thetext>This was partly solved when fixing Bug 17681 but this patch has a better screenDepth and has an implementation for screenDepthPerComponent.  I guess having a non-zero rect returned for screenAvailableRect() is also better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74454</commentid>
    <comment_count>6</comment_count>
      <attachid>19885</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-03-19 10:55:32 -0700</bug_when>
    <thetext>Created attachment 19885
Updated patch based on both Christian&apos;s and Pierre-Luc&apos;s patches

Tomorrow I will try to fix screenAvailableRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74544</commentid>
    <comment_count>7</comment_count>
      <attachid>19901</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-03-20 12:01:25 -0700</bug_when>
    <thetext>Created attachment 19901
Updated patch that implements screenAvailableRect()

The code uses _NET_WORKAREA to know the available space on the desktop, as done by qt and nautilus.

I&apos;m not sure on what we should do when using Xinerama. I tried:
for i in `seq 1 4`; do Xnest :$i -ac -geometry 400x300+1+1 &amp; done
Xdmx :10 -ac -configfile xdmx.conf +xinerama
export DISPLAY=:10
metacity
gnome-panel

where xdmx.conf is:
virtual example {
    wall localhost:1 localhost:2
         localhost:3 localhost:4;
}

In this case gnome-panel goes completely in the first XNest window, so what the available screen rect should be in this case?

Do you know when screenAvailableRect() is called in WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74618</commentid>
    <comment_count>8</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-03-21 04:06:22 -0700</bug_when>
    <thetext>If xinerama is used qt just uses the entire screen rect, ignoring panels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81211</commentid>
    <comment_count>9</comment_count>
      <attachid>21295</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-22 10:18:12 -0700</bug_when>
    <thetext>Created attachment 21295
Implemente stubs

Same patch as before but with ChangeLog entry.

screenAvailableRect() ignores panels placed not on the borders of virtual screens but this is because of the EWMH specification, see also http://bugzilla.gnome.org/show_bug.cgi?id=339692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81214</commentid>
    <comment_count>10</comment_count>
      <attachid>21296</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-22 10:41:58 -0700</bug_when>
    <thetext>Created attachment 21296
Implement stubs

Sorry, the previous patch contained some debug code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81305</commentid>
    <comment_count>11</comment_count>
      <attachid>21296</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-23 07:46:41 -0700</bug_when>
    <thetext>Comment on attachment 21296
Implement stubs

This will break non-X11 builds. Please wrap with an #if defined(...) and provide a fallback using standard GTK+ API.

You should also try to ensure that this code won&apos;t crash when no windowing system is active as we do elsewhere. This is so we can support commandline tools like web thumbnailers in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81632</commentid>
    <comment_count>12</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-27 12:19:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; You should also try to ensure that this code won&apos;t crash when no windowing
&gt; system is active as we do elsewhere. This is so we can support commandline
&gt; tools like web thumbnailers in future.

Isn&apos;t checking widget-&gt;containingWindow() enough?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81708</commentid>
    <comment_count>13</comment_count>
      <attachid>21385</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-28 03:53:42 -0700</bug_when>
    <thetext>Created attachment 21385
Implement stubs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82680</commentid>
    <comment_count>14</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-06-08 15:46:45 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=21385) [edit]
&gt; Implement stubs
&gt; 

Will try to review this soon unless someone beats me to it.

In the meantime, I noticed

+    return screenRect(widget)

^ breaks non-X11 builds due to missing semicolon.

 int screenDepth(Widget* widget)
 {
-    ASSERT(widget-&gt;containingWindow() &amp;&amp; GTK_WIDGET(widget-&gt;containingWindow())-&gt;window);
+    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
+    if (!container)
+        return 0;

^ Wonder if it&apos;s worth returning a &apos;sane&apos; depth here instead of 0?

-int screenDepthPerComponent(Widget*)
+int screenDepthPerComponent(Widget* widget)
 {
-    notImplemented();
-    return 8;
+    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
+    if (!container)
+        return 0;

^ Ditto.

It&apos;s worth studying what Firefox returns for these and doing the same thing if it makes sense. Was the direct X11 use done to achieve compatibility with existing browsers?

I&apos;m not going to r- since this patch could do with more reviewer attention, but I have a feeling it&apos;s not ready to land yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84147</commentid>
    <comment_count>15</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-06-23 09:40:38 -0700</bug_when>
    <thetext>Some comments (basicly r=+, if someone fixes/decides when landing):

   - screenAvailableRect will not compile for non X11. &quot;;&quot; is missing

   - I don&apos;t know if removing the asserts make sense but it is okay with me, did you hit the asserts?

   - Parsing NET_WORKAREA looks right, I would use a IntRect and then get this converted to FloatRect (no strong opinion on this).

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84243</commentid>
    <comment_count>16</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-06-24 05:40:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Created an attachment (id=21385) [edit]
&gt; &gt; Implement stubs
&gt; &gt; 
&gt; 
&gt; Will try to review this soon unless someone beats me to it.

Sorry for the late reply but I didn&apos;t receive the notification for your comment (or probably it ended up on the wrong mail folder).

&gt; In the meantime, I noticed
&gt; 
&gt; +    return screenRect(widget)
&gt; 
&gt; ^ breaks non-X11 builds due to missing semicolon.

Ok.

&gt;  int screenDepth(Widget* widget)
&gt;  {
&gt; -    ASSERT(widget-&gt;containingWindow() &amp;&amp;
&gt; GTK_WIDGET(widget-&gt;containingWindow())-&gt;window);
&gt; +    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
&gt; +    if (!container)
&gt; +        return 0;
&gt; 
&gt; ^ Wonder if it&apos;s worth returning a &apos;sane&apos; depth here instead of 0?

Probably, but what is a sane value in this case? 24?

&gt; -int screenDepthPerComponent(Widget*)
&gt; +int screenDepthPerComponent(Widget* widget)
&gt;  {
&gt; -    notImplemented();
&gt; -    return 8;
&gt; +    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
&gt; +    if (!container)
&gt; +        return 0;
&gt; 
&gt; ^ Ditto.

8 in this case?

&gt; It&apos;s worth studying what Firefox returns for these and doing the same thing if
&gt; it makes sense. Was the direct X11 use done to achieve compatibility with
&gt; existing browsers?

I&apos;m not sure to understand what do you mean.

(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; Created an attachment (id=21385) [edit]
&gt; &gt; Implement stubs
&gt; &gt; 
&gt; 
&gt; Will try to review this soon unless someone beats me to it.
&gt; 
&gt; In the meantime, I noticed
&gt; 
&gt; +    return screenRect(widget)
&gt; 
&gt; ^ breaks non-X11 builds due to missing semicolon.
&gt; 
&gt;  int screenDepth(Widget* widget)
&gt;  {
&gt; -    ASSERT(widget-&gt;containingWindow() &amp;&amp;
&gt; GTK_WIDGET(widget-&gt;containingWindow())-&gt;window);
&gt; +    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
&gt; +    if (!container)
&gt; +        return 0;
&gt; 
&gt; ^ Wonder if it&apos;s worth returning a &apos;sane&apos; depth here instead of 0?
&gt; 
&gt; -int screenDepthPerComponent(Widget*)
&gt; +int screenDepthPerComponent(Widget* widget)
&gt;  {
&gt; -    notImplemented();
&gt; -    return 8;
&gt; +    GtkWidget* container = GTK_WIDGET(widget-&gt;containingWindow());
&gt; +    if (!container)
&gt; +        return 0;
&gt; 
&gt; ^ Ditto.
&gt; 
&gt; It&apos;s worth studying what Firefox returns for these and doing the same thing if
&gt; it makes sense. Was the direct X11 use done to achieve compatibility with
&gt; existing browsers?
&gt; 
&gt; I&apos;m not going to r- since this patch could do with more reviewer attention, but
&gt; I have a feeling it&apos;s not ready to land yet.
&gt; 

(In reply to comment #15)
&gt;    - screenAvailableRect will not compile for non X11. &quot;;&quot; is missing

I will fix it.

&gt;    - I don&apos;t know if removing the asserts make sense but it is okay with me,
&gt; did you hit the asserts?

containingWindow could be NULL if you are using WebKit without a X server (e.g. a thumbnailer).

&gt;    - Parsing NET_WORKAREA looks right, I would use a IntRect and then get this
&gt; converted to FloatRect (no strong opinion on this).

Why? For style reasons?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84712</commentid>
    <comment_count>17</comment_count>
      <attachid>21385</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-29 11:02:37 -0700</bug_when>
    <thetext>Comment on attachment 21385
Implement stubs

Clearing the review flag until recent comments are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87882</commentid>
    <comment_count>18</comment_count>
      <attachid>22659</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-08-05 12:40:10 -0700</bug_when>
    <thetext>Created attachment 22659
Implement stubs

- Fixed the non-X11 build issue
- Return values != 0 if the containing window is null

I didn&apos;t replace the FloatRect with an IntRect because it would makes the code longer and IMHO less readable (the conversion is needed immediately after the creation of the rect).

The Firefox behaviour seems broken for instace it seems to cache values so it returns the wrong value if you add/remove a monitor and it doesn&apos;t consider panels, so screen.availHeight/Width is always = screen.height/width.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88331</commentid>
    <comment_count>19</comment_count>
      <attachid>22659</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2008-08-12 13:21:33 -0700</bug_when>
    <thetext>Comment on attachment 22659
Implement stubs

The code is an improvement. It seems to obey the style (I ignore the NULL) and I think corner cases we might hit can be sorted out later. 

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88431</commentid>
    <comment_count>20</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-08-13 12:57:05 -0700</bug_when>
    <thetext>landed in r35725</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18466</attachid>
            <date>2008-01-16 02:44:29 -0800</date>
            <delta_ts>2008-01-18 03:09:13 -0800</delta_ts>
            <desc>Implement stubs</desc>
            <filename>platformscreen.diff</filename>
            <type>text/plain</type>
            <size>2250</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKFJldmlz
aW9uIDI5NTEyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
CShBcmJlaXRza29waWUpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tIAorICogQ29weXJp
Z2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIENvcHly
aWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNSwzNyArMzYsMzQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRn
ZXQpIAoraW50IHNjcmVlbkRlcHRoKFdpZGdldCogd2lkZ2V0KQogewotICAgIEFTU0VSVCh3aWRn
ZXQtPmNvbnRhaW5pbmdXaW5kb3coKSAmJiBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dp
bmRvdygpKS0+d2luZG93KTsKLQotICAgIGdpbnQgZHVtbXksIGRlcHRoOwotICAgIGdka193aW5k
b3dfZ2V0X2dlb21ldHJ5KEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53
aW5kb3csICZkdW1teSwgJmR1bW15LCAmZHVtbXksICZkdW1teSwgJmRlcHRoKTsKLSAgICByZXR1
cm4gZGVwdGg7CisgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwo
R1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSkpOworICAgIHJldHVybiB2aXN1
YWwtPmRlcHRoOwogfQogCi1pbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KikKK2lu
dCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiA4OworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dp
ZGdldF9nZXRfdmlzdWFsKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpKTsK
KyAgICByZXR1cm4gdmlzdWFsLT5iaXRzX3Blcl9yZ2I7CiB9CiAKLWJvb2wgc2NyZWVuSXNNb25v
Y2hyb21lKFdpZGdldCopIAoteyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAKLSAgICByZXR1cm4g
ZmFsc2U7IAorYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAg
cmV0dXJuIHNjcmVlbkRlcHRoKHdpZGdldCkgPiAxOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuUmVj
dChXaWRnZXQqKSAKLXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRS
ZWN0KCk7IAorRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgR2Rr
U2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4oR1RLX1dJREdFVCh3aWRnZXQt
PmNvbnRhaW5pbmdXaW5kb3coKSkpOworICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgZ2RrX3Nj
cmVlbl9nZXRfd2lkdGgoc2NyZWVuKSwgZ2RrX3NjcmVlbl9nZXRfaGVpZ2h0KHNjcmVlbikpOwog
fQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKSAKLXsgCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsgCi0gICAgcmV0dXJuIEZsb2F0UmVjdCgpOyAKK0Zsb2F0UmVjdCBzY3Jl
ZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQoreworICAgIC8vIEZJWE1FOiBGaW5kIG91
dCB0aGUgc3BhY2UgbGVmdCB3aGVuIHN1YnN0cmFjdGluZyBmaXhlZCBwYW5lbHMKKyAgICBHZGtT
Y3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbihHVEtfV0lER0VUKHdpZGdldC0+
Y29udGFpbmluZ1dpbmRvdygpKSk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBnZGtfc2Ny
ZWVuX2dldF93aWR0aChzY3JlZW4pLCBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVuKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18525</attachid>
            <date>2008-01-18 03:09:13 -0800</date>
            <delta_ts>2008-08-05 12:40:10 -0700</delta_ts>
            <desc>Implement stubs, updated</desc>
            <filename>platformscreen.diff</filename>
            <type>text/plain</type>
            <size>3620</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShSZXZpc2lvbiAyOTYyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShBcmJlaXRza29waWUpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDgtMDEtMTggIENocmlzdGlhbiBEeXdhbiAgPGNocmlzdGlhbkBp
bWVuZGlvLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4MQorICAgICAgICBbR1RL
XSBQbGF0Zm9ybVNjcmVlbkd0ayBpcyB1bmltcGxlbWVudGVkCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGVw
dGgpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVl
blJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisKIDIwMDgt
MDEtMTggIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBIb2xnZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNj
cmVlbkd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1T
Y3JlZW5HdGsuY3BwCShSZXZpc2lvbiAyOTU5MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtU2NyZWVuR3RrLmNwcAkoQXJiZWl0c2tvcGllKQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdt
YWlsLmNvbSAKKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxA
Z21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3Rp
YW5AaW1lbmRpby5jb20+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMjcsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtMzUsMzcgKzM3LDUyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW50IHNjcmVlbkRlcHRoKFdpZGdldCogd2lkZ2V0KSAKK2lu
dCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBBU1NFUlQod2lkZ2V0LT5jb250
YWluaW5nV2luZG93KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSkt
PndpbmRvdyk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+
Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBnaW50IGR1bW15LCBkZXB0aDsKLSAgICBnZGtfd2luZG93X2dldF9nZW9tZXRy
eShHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93LCAmZHVtbXks
ICZkdW1teSwgJmR1bW15LCAmZHVtbXksICZkZXB0aCk7Ci0gICAgcmV0dXJuIGRlcHRoOworICAg
IEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKGNvbnRhaW5lcik7Cisg
ICAgcmV0dXJuIHZpc3VhbC0+ZGVwdGg7CiB9CiAKLWludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dChXaWRnZXQqKQoraW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDg7CisgICAgR3RrV2lkZ2V0KiBj
b250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBp
ZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBHZGtWaXN1YWwqIHZpc3Vh
bCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChjb250YWluZXIpOworICAgIHJldHVybiB2aXN1YWwt
PmJpdHNfcGVyX3JnYjsKIH0KIAotYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikgCi17
IAotICAgIG5vdEltcGxlbWVudGVkKCk7IAotICAgIHJldHVybiBmYWxzZTsgCitib29sIHNjcmVl
bklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKK3sKKyAgICByZXR1cm4gc2NyZWVuRGVwdGgo
d2lkZ2V0KSA8IDI7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCopIAoteyAKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsgCitGbG9hdFJlY3Qg
c2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9
IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFp
bmVyKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisKKyAgICBHZGtTY3JlZW4qIHNjcmVl
biA9IGd0a193aWRnZXRfaGFzX3NjcmVlbihjb250YWluZXIpID8gZ3RrX3dpZGdldF9nZXRfc2Ny
ZWVuKGNvbnRhaW5lcikgOiBnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCk7CisKKyAgICByZXR1cm4g
SW50UmVjdCgwLCAwLCBnZGtfc2NyZWVuX2dldF93aWR0aChzY3JlZW4pLCBnZGtfc2NyZWVuX2dl
dF9oZWlnaHQoc2NyZWVuKSk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdp
ZGdldCopIAoteyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAKLSAgICByZXR1cm4gRmxvYXRSZWN0
KCk7IAorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7Cisg
ICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dp
bmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OworCisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2lkZ2V0X2hhc19zY3JlZW4oY29udGFp
bmVyKSA/IGd0a193aWRnZXRfZ2V0X3NjcmVlbihjb250YWluZXIpIDogZ2RrX3NjcmVlbl9nZXRf
ZGVmYXVsdCgpOworCisgICAgLy8gRklYTUU6IEZpbmQgb3V0IHRoZSBzcGFjZSBsZWZ0IHdoZW4g
c3Vic3RyYWN0aW5nIGZpeGVkIHBhbmVscworICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIGdka19z
Y3JlZW5fZ2V0X3dpZHRoKHNjcmVlbiksIGdka19zY3JlZW5fZ2V0X2hlaWdodChzY3JlZW4pKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="8103"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19885</attachid>
            <date>2008-03-19 10:55:32 -0700</date>
            <delta_ts>2008-03-20 12:01:25 -0700</delta_ts>
            <desc>Updated patch based on both Christian&apos;s and Pierre-Luc&apos;s patches</desc>
            <filename>platformscreen.patch</filename>
            <type>text/plain</type>
            <size>2859</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uZSAzMTEyNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ29weXJp
Z2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzcsNDEgKzM5LDU1IEBACiAKIGludCBzY3JlZW5EZXB0
aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBBU1NFUlQod2lkZ2V0LT5jb250YWluaW5nV2luZG93
KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSktPndpbmRvdyk7Cisg
ICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dp
bmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBn
aW50IGRlcHRoOwotICAgIGdka193aW5kb3dfZ2V0X2dlb21ldHJ5KEdUS19XSURHRVQod2lkZ2V0
LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3csIDAsIDAsIDAsIDAsICZkZXB0aCk7Ci0gICAg
cmV0dXJuIGRlcHRoOworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX2RyYXdhYmxlX2dldF92
aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkp
LT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlzdWFsLT5kZXB0aDsKIH0KIAotaW50IHNjcmVlbkRl
cHRoUGVyQ29tcG9uZW50KFdpZGdldCopCitpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gODsKKyAg
ICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2lu
ZG93KCkpOworICAgIGlmICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdk
a1Zpc3VhbCogdmlzdWFsID0gZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdU
S19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1
cm4gdmlzdWFsLT5iaXRzX3Blcl9yZ2I7CiB9CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdp
ZGdldCogd2lkZ2V0KQogeworICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3
aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0K
IAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdp
ZGdldC0+Y29udGFpbmluZ1dpbmRvdygpICYmIEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpLT53aW5kb3cpOworICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdF
VCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAg
ICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAotICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dp
ZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpKTsK
KyAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfaGFzX3NjcmVlbihjb250YWluZXIp
ID8gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKGNvbnRhaW5lcikgOiBnZGtfc2NyZWVuX2dldF9kZWZh
dWx0KCk7CiAgICAgZ2ludCBtb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5k
b3coc2NyZWVuLCBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93
KTsKICAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7Ci0KICAgICBnZGtfc2NyZWVuX2dldF9tb25p
dG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgJmdlb21ldHJ5KTsKICAgICAKICAgICByZXR1
cm4gRmxvYXRSZWN0KGdlb21ldHJ5LngsIGdlb21ldHJ5LnksIGdlb21ldHJ5LndpZHRoLCBnZW9t
ZXRyeS5oZWlnaHQpOwogfQogCi1GbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQq
KQorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7CisgICAgR3RrV2lkZ2V0
KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAg
ICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworCisgICAgLy8g
RklYTUU6IEZpbmQgb3V0IHRoZSBzcGFjZSBsZWZ0IHdoZW4gc3Vic3RyYWN0aW5nIGZpeGVkIHBh
bmVscworICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19901</attachid>
            <date>2008-03-20 12:01:25 -0700</date>
            <delta_ts>2008-05-22 10:18:12 -0700</delta_ts>
            <desc>Updated patch that implements screenAvailableRect()</desc>
            <filename>platformscreen.patch</filename>
            <type>text/plain</type>
            <size>3919</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uZSAzMTE3NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ29weXJp
Z2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNDcgKzMzLDg0IEBACiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAorI2luY2x1ZGUgPGdkay9nZGt4Lmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBB
U1NFUlQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNv
bnRhaW5pbmdXaW5kb3coKSktPndpbmRvdyk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBH
VEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5l
cikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBnaW50IGRlcHRoOwotICAgIGdka193aW5kb3df
Z2V0X2dlb21ldHJ5KEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5k
b3csIDAsIDAsIDAsIDAsICZkZXB0aCk7Ci0gICAgcmV0dXJuIGRlcHRoOworICAgIEdka1Zpc3Vh
bCogdmlzdWFsID0gZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURH
RVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlz
dWFsLT5kZXB0aDsKIH0KIAotaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopCitp
bnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gODsKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdU
S19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFpbmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX2RyYXdh
YmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlzdWFsLT5iaXRzX3Blcl9yZ2I7CiB9
CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogeworICAgIEd0a1dp
ZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7
CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
biBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpICYm
IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpOworICAgIEd0
a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3co
KSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAot
ICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQo
d2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpKTsKKyAgICByZXR1cm4gc2NyZWVuQXZhaWxhYmxl
UmVjdCh3aWRnZXQpOworICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9oYXNfc2Ny
ZWVuKGNvbnRhaW5lcikgPyBndGtfd2lkZ2V0X2dldF9zY3JlZW4oY29udGFpbmVyKSA6IGdka19z
Y3JlZW5fZ2V0X2RlZmF1bHQoKTsKICAgICBnaW50IG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2lu
ZG93KCkpLT53aW5kb3cpOwogICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKLQogICAgIGdka19z
Y3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCAmZ2VvbWV0cnkpOwog
ICAgIAogICAgIHJldHVybiBGbG9hdFJlY3QoZ2VvbWV0cnkueCwgZ2VvbWV0cnkueSwgZ2VvbWV0
cnkud2lkdGgsIGdlb21ldHJ5LmhlaWdodCk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFi
bGVSZWN0KFdpZGdldCopCitGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdp
ZGdldCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
KyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpOworICAgIGlmICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0
KCk7CisKKyAgICBHZGtEcmF3YWJsZSogcm9vdFdpbmRvdyA9IEdES19EUkFXQUJMRShndGtfd2lk
Z2V0X2dldF9yb290X3dpbmRvdyh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSkpOworICAgIEdk
a0Rpc3BsYXkqIGRpc3BsYXkgPSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkocm9vdFdpbmRvdyk7
CisgICAgQXRvbSB4cHJvcGVydHkgPSBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNw
bGF5KGRpc3BsYXksICJfTkVUX1dPUktBUkVBIik7CisKKyAgICBBdG9tIHJldFR5cGU7CisgICAg
aW50IHJldEZvcm1hdDsKKyAgICBsb25nICp3b3JrQXJlYVBvcyA9IE5VTEw7CisgICAgdW5zaWdu
ZWQgbG9uZyByZXROSXRlbXM7CisgICAgdW5zaWduZWQgbG9uZyByZXRBZnRlcjsKKyAgICBpbnQg
eFJlcyA9IFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSwg
R0RLX1dJTkRPV19YV0lORE9XKHJvb3RXaW5kb3cpLCB4cHJvcGVydHksCisgICAgICAgIDAsIDQs
IEZBTFNFLCBYQV9DQVJESU5BTCwgJnJldFR5cGUsICZyZXRGb3JtYXQsICZyZXROSXRlbXMsICZy
ZXRBZnRlciwgKGd1Y2hhcioqKSZ3b3JrQXJlYVBvcyk7CisKKyAgICBGbG9hdFJlY3QgcmVjdDsK
KyAgICBpZiAoeFJlcyA9PSBTdWNjZXNzICYmIHdvcmtBcmVhUG9zICE9IE5VTEwgJiYgcmV0VHlw
ZSA9PSBYQV9DQVJESU5BTCAmJiByZXROSXRlbXMgPT0gNCAmJiByZXRGb3JtYXQgPT0gMzIpCisg
ICAgICAgIHJlY3QgPSBGbG9hdFJlY3Qod29ya0FyZWFQb3NbMF0sIHdvcmtBcmVhUG9zWzFdLCB3
b3JrQXJlYVBvc1syXSAtIHdvcmtBcmVhUG9zWzBdLCB3b3JrQXJlYVBvc1szXSAtIHdvcmtBcmVh
UG9zWzJdKTsKKyAgICBlbHNlCisgICAgICAgIHJlY3QgPSBzY3JlZW5SZWN0KHdpZGdldCk7CisK
KyAgICBpZiAod29ya0FyZWFQb3MpCisgICAgICAgIFhGcmVlKHdvcmtBcmVhUG9zKTsKKworICAg
IHJldHVybiByZWN0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21295</attachid>
            <date>2008-05-22 10:18:12 -0700</date>
            <delta_ts>2008-05-22 10:41:58 -0700</delta_ts>
            <desc>Implemente stubs</desc>
            <filename>platformscreengtk.patch</filename>
            <type>text/plain</type>
            <size>4695</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uZSAzMzk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ29weXJp
Z2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNDcgKzMzLDg0IEBACiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAorI2luY2x1ZGUgPGdkay9nZGt4Lmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBB
U1NFUlQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNv
bnRhaW5pbmdXaW5kb3coKSktPndpbmRvdyk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBH
VEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5l
cikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBnaW50IGRlcHRoOwotICAgIGdka193aW5kb3df
Z2V0X2dlb21ldHJ5KEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5k
b3csIDAsIDAsIDAsIDAsICZkZXB0aCk7Ci0gICAgcmV0dXJuIGRlcHRoOworICAgIEdka1Zpc3Vh
bCogdmlzdWFsID0gZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURH
RVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlz
dWFsLT5kZXB0aDsKIH0KIAotaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopCitp
bnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gODsKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdU
S19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFpbmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX2RyYXdh
YmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlzdWFsLT5iaXRzX3Blcl9yZ2I7CiB9
CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogeworICAgIEd0a1dp
ZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7
CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
biBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpICYm
IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpOworICAgIEd0
a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3co
KSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAot
ICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQo
d2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpKTsKKyAgICByZXR1cm4gc2NyZWVuQXZhaWxhYmxl
UmVjdCh3aWRnZXQpOworICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9oYXNfc2Ny
ZWVuKGNvbnRhaW5lcikgPyBndGtfd2lkZ2V0X2dldF9zY3JlZW4oY29udGFpbmVyKSA6IGdka19z
Y3JlZW5fZ2V0X2RlZmF1bHQoKTsKICAgICBnaW50IG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2lu
ZG93KCkpLT53aW5kb3cpOwogICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKLQogICAgIGdka19z
Y3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCAmZ2VvbWV0cnkpOwog
ICAgIAogICAgIHJldHVybiBGbG9hdFJlY3QoZ2VvbWV0cnkueCwgZ2VvbWV0cnkueSwgZ2VvbWV0
cnkud2lkdGgsIGdlb21ldHJ5LmhlaWdodCk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFi
bGVSZWN0KFdpZGdldCopCitGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdp
ZGdldCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
KyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpOworICAgIGlmICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0
KCk7CisKKyAgICBHZGtEcmF3YWJsZSogcm9vdFdpbmRvdyA9IEdES19EUkFXQUJMRShndGtfd2lk
Z2V0X2dldF9yb290X3dpbmRvdyh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSkpOworICAgIEdk
a0Rpc3BsYXkqIGRpc3BsYXkgPSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkocm9vdFdpbmRvdyk7
CisgICAgQXRvbSB4cHJvcGVydHkgPSBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNw
bGF5KGRpc3BsYXksICJfTkVUX1dPUktBUkVBIik7CisKKyAgICBBdG9tIHJldFR5cGU7CisgICAg
aW50IHJldEZvcm1hdDsKKyAgICBsb25nICp3b3JrQXJlYVBvcyA9IE5VTEw7CisgICAgdW5zaWdu
ZWQgbG9uZyByZXROSXRlbXM7CisgICAgdW5zaWduZWQgbG9uZyByZXRBZnRlcjsKKyAgICBpbnQg
eFJlcyA9IFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkaXNwbGF5KSwg
R0RLX1dJTkRPV19YV0lORE9XKHJvb3RXaW5kb3cpLCB4cHJvcGVydHksCisgICAgICAgIDAsIDQs
IEZBTFNFLCBYQV9DQVJESU5BTCwgJnJldFR5cGUsICZyZXRGb3JtYXQsICZyZXROSXRlbXMsICZy
ZXRBZnRlciwgKGd1Y2hhcioqKSZ3b3JrQXJlYVBvcyk7CisKKyAgICBGbG9hdFJlY3QgcmVjdDsK
KyAgICBpZiAoeFJlcyA9PSBTdWNjZXNzICYmIHdvcmtBcmVhUG9zICE9IE5VTEwgJiYgcmV0VHlw
ZSA9PSBYQV9DQVJESU5BTCAmJiByZXROSXRlbXMgPT0gNCAmJiByZXRGb3JtYXQgPT0gMzIpCisg
ICAgICAgIHJlY3QgPSBGbG9hdFJlY3Qod29ya0FyZWFQb3NbMF0sIHdvcmtBcmVhUG9zWzFdLCB3
b3JrQXJlYVBvc1syXSAtIHdvcmtBcmVhUG9zWzBdLCB3b3JrQXJlYVBvc1szXSAtIHdvcmtBcmVh
UG9zWzJdKTsKKyAgICBlbHNlCisgICAgICAgIHJlY3QgPSBzY3JlZW5SZWN0KHdpZGdldCk7CisK
KyAgICBpZiAod29ya0FyZWFQb3MpCisgICAgICAgIFhGcmVlKHdvcmtBcmVhUG9zKTsKKworICAg
IHJldHVybiByZWN0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb25lIDM0
MDI0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKGNvcGlhIGxvY2FsZSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOC0wNS0yMiAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9y
YS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4MQorICAgICAgICBb
R1RLXSBQbGF0Zm9ybVNjcmVlbkd0ayBpcyB1bmltcGxlbWVudGVkCisKKyAgICAgICAgSW1wbGVt
ZW50IG1pc3NpbmcgZnVuY3Rpb25zIGluIFBsYXRmb3JtU2NyZWVuR3RrLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgor
CiAyMDA4LTA1LTIyICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21296</attachid>
            <date>2008-05-22 10:41:58 -0700</date>
            <delta_ts>2008-05-28 03:53:42 -0700</delta_ts>
            <desc>Implement stubs</desc>
            <filename>platformscreengtk.patch</filename>
            <type>text/plain</type>
            <size>4654</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uZSAzMzk3MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ29weXJp
Z2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsNDcgKzMzLDgzIEBACiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAorI2luY2x1ZGUgPGdkay9nZGt4Lmg+
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBB
U1NFUlQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNv
bnRhaW5pbmdXaW5kb3coKSktPndpbmRvdyk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBH
VEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5l
cikKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBnaW50IGRlcHRoOwotICAgIGdka193aW5kb3df
Z2V0X2dlb21ldHJ5KEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5k
b3csIDAsIDAsIDAsIDAsICZkZXB0aCk7Ci0gICAgcmV0dXJuIGRlcHRoOworICAgIEdka1Zpc3Vh
bCogdmlzdWFsID0gZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURH
RVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlz
dWFsLT5kZXB0aDsKIH0KIAotaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopCitp
bnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gODsKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdU
S19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFpbmVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2RrX2RyYXdh
YmxlX2dldF92aXN1YWwoR0RLX0RSQVdBQkxFKEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpLT53aW5kb3cpKTsKKyAgICByZXR1cm4gdmlzdWFsLT5iaXRzX3Blcl9yZ2I7CiB9
CiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogeworICAgIEd0a1dp
ZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7
CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVy
biBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpICYm
IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpLT53aW5kb3cpOworICAgIEd0
a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3co
KSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAot
ICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKEdUS19XSURHRVQo
d2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpKTsKKyAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0
a193aWRnZXRfaGFzX3NjcmVlbihjb250YWluZXIpID8gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKGNv
bnRhaW5lcikgOiBnZGtfc2NyZWVuX2dldF9kZWZhdWx0KCk7CiAgICAgZ2ludCBtb25pdG9yID0g
Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCBHVEtfV0lER0VUKHdpZGdl
dC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93KTsKICAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0
cnk7Ci0KICAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRv
ciwgJmdlb21ldHJ5KTsKICAgICAKICAgICByZXR1cm4gRmxvYXRSZWN0KGdlb21ldHJ5LngsIGdl
b21ldHJ5LnksIGdlb21ldHJ5LndpZHRoLCBnZW9tZXRyeS5oZWlnaHQpOwogfQogCi1GbG9hdFJl
Y3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKQorRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gRmxvYXRSZWN0KCk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdp
ZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAg
cmV0dXJuIEZsb2F0UmVjdCgpOworCisgICAgR2RrRHJhd2FibGUqIHJvb3RXaW5kb3cgPSBHREtf
RFJBV0FCTEUoZ3RrX3dpZGdldF9nZXRfcm9vdF93aW5kb3cod2lkZ2V0LT5jb250YWluaW5nV2lu
ZG93KCkpKTsKKyAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2RyYXdhYmxlX2dldF9kaXNw
bGF5KHJvb3RXaW5kb3cpOworICAgIEF0b20geHByb3BlcnR5ID0gZ2RrX3gxMV9nZXRfeGF0b21f
YnlfbmFtZV9mb3JfZGlzcGxheShkaXNwbGF5LCAiX05FVF9XT1JLQVJFQSIpOworCisgICAgQXRv
bSByZXRUeXBlOworICAgIGludCByZXRGb3JtYXQ7CisgICAgbG9uZyAqd29ya0FyZWFQb3MgPSBO
VUxMOworICAgIHVuc2lnbmVkIGxvbmcgcmV0Tkl0ZW1zOworICAgIHVuc2lnbmVkIGxvbmcgcmV0
QWZ0ZXI7CisgICAgaW50IHhSZXMgPSBYR2V0V2luZG93UHJvcGVydHkoR0RLX0RJU1BMQVlfWERJ
U1BMQVkoZGlzcGxheSksIEdES19XSU5ET1dfWFdJTkRPVyhyb290V2luZG93KSwgeHByb3BlcnR5
LAorICAgICAgICAwLCA0LCBGQUxTRSwgWEFfQ0FSRElOQUwsICZyZXRUeXBlLCAmcmV0Rm9ybWF0
LCAmcmV0Tkl0ZW1zLCAmcmV0QWZ0ZXIsIChndWNoYXIqKikmd29ya0FyZWFQb3MpOworCisgICAg
RmxvYXRSZWN0IHJlY3Q7CisgICAgaWYgKHhSZXMgPT0gU3VjY2VzcyAmJiB3b3JrQXJlYVBvcyAh
PSBOVUxMICYmIHJldFR5cGUgPT0gWEFfQ0FSRElOQUwgJiYgcmV0Tkl0ZW1zID09IDQgJiYgcmV0
Rm9ybWF0ID09IDMyKQorICAgICAgICByZWN0ID0gRmxvYXRSZWN0KHdvcmtBcmVhUG9zWzBdLCB3
b3JrQXJlYVBvc1sxXSwgd29ya0FyZWFQb3NbMl0gLSB3b3JrQXJlYVBvc1swXSwgd29ya0FyZWFQ
b3NbM10gLSB3b3JrQXJlYVBvc1syXSk7CisgICAgZWxzZQorICAgICAgICByZWN0ID0gc2NyZWVu
UmVjdCh3aWRnZXQpOworCisgICAgaWYgKHdvcmtBcmVhUG9zKQorICAgICAgICBYRnJlZSh3b3Jr
QXJlYVBvcyk7CisKKyAgICByZXR1cm4gcmVjdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uZSAzNDAyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShjb3BpYSBsb2NhbGUp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMDUtMjIgIE1hcmNvIEJhcmlzaW9uZSAgPG1hcmNvLmJh
cmlzaW9uZUBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4ODEKKyAgICAgICAgW0dUS10gUGxhdGZvcm1TY3JlZW5HdGsgaXMgdW5pbXBsZW1lbnRlZAor
CisgICAgICAgIEltcGxlbWVudCBtaXNzaW5nIGZ1bmN0aW9ucyBpbiBQbGF0Zm9ybVNjcmVlbkd0
ay4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5B
dmFpbGFibGVSZWN0KToKKwogMjAwOC0wNS0yMiAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4uCg==
</data>
<flag name="review"
          id="9308"
          type_id="1"
          status="-"
          setter="alp"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21385</attachid>
            <date>2008-05-28 03:53:42 -0700</date>
            <delta_ts>2008-08-05 12:40:10 -0700</delta_ts>
            <desc>Implement stubs</desc>
            <filename>platformscreengtk.patch</filename>
            <type>text/plain</type>
            <size>5124</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uZSAzNDE0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cAkoY29waWEgbG9jYWxlKQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICogQ29weXJp
Z2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzMsNDUgKzM1LDk3IEBACiAKICNpbmNsdWRlIDxndGsv
Z3RrLmg+CiAKKyNpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQorI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+CisjaW5jbHVkZSA8WDExL1hhdG9tLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgQVNTRVJUKHdp
ZGdldC0+Y29udGFpbmluZ1dpbmRvdygpICYmIEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkpLT53aW5kb3cpOworICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdF
VCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZ2ludCBkZXB0aDsKLSAgICBnZGtfd2luZG93X2dldF9nZW9t
ZXRyeShHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93LCAwLCAw
LCAwLCAwLCAmZGVwdGgpOwotICAgIHJldHVybiBkZXB0aDsKKyAgICBHZGtWaXN1YWwqIHZpc3Vh
bCA9IGdka19kcmF3YWJsZV9nZXRfdmlzdWFsKEdES19EUkFXQUJMRShHVEtfV0lER0VUKHdpZGdl
dC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93KSk7CisgICAgcmV0dXJuIHZpc3VhbC0+ZGVw
dGg7CiB9CiAKLWludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKQoraW50IHNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDg7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VU
KHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19kcmF3YWJsZV9nZXRf
dmlzdWFsKEdES19EUkFXQUJMRShHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygp
KS0+d2luZG93KSk7CisgICAgcmV0dXJuIHZpc3VhbC0+Yml0c19wZXJfcmdiOwogfQogCiBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIHsKKyAgICBHdGtXaWRnZXQqIGNv
bnRhaW5lciA9IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlm
ICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gc2NyZWVu
RGVwdGgod2lkZ2V0KSA8IDI7CiB9CiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lk
Z2V0KQogewotICAgIEFTU0VSVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSAmJiBHVEtfV0lE
R0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93KTsKKyAgICBHdGtXaWRnZXQq
IGNvbnRhaW5lciA9IEdUS19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAg
IGlmICghY29udGFpbmVyKQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKLSAgICBHZGtT
Y3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbihHVEtfV0lER0VUKHdpZGdldC0+
Y29udGFpbmluZ1dpbmRvdygpKSk7Ci0gICAgZ2ludCBtb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRf
bW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dp
bmRvdygpKS0+d2luZG93KTsKKyAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGd0a193aWRnZXRfaGFz
X3NjcmVlbihjb250YWluZXIpID8gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKGNvbnRhaW5lcikgOiBn
ZGtfc2NyZWVuX2dldF9kZWZhdWx0KCk7CisgICAgaWYgKCFzY3JlZW4pCisgICAgICAgIHJldHVy
biBGbG9hdFJlY3QoKTsKKworICAgIGdpbnQgbW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0
b3JfYXRfd2luZG93KHNjcmVlbiwgR1RLX1dJREdFVChjb250YWluZXIpLT53aW5kb3cpOwogICAg
IEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKLQogICAgIGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2Vv
bWV0cnkoc2NyZWVuLCBtb25pdG9yLCAmZ2VvbWV0cnkpOwogICAgIAogICAgIHJldHVybiBGbG9h
dFJlY3QoZ2VvbWV0cnkueCwgZ2VvbWV0cnkueSwgZ2VvbWV0cnkud2lkdGgsIGdlb21ldHJ5Lmhl
aWdodCk7CiB9CiAKLUZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopCitGbG9h
dFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKyNpZiBkZWZpbmVkKEdES19XSU5E
T1dJTkdfWDExKQorICAgIEd0a1dpZGdldCogY29udGFpbmVyID0gR1RLX1dJREdFVCh3aWRnZXQt
PmNvbnRhaW5pbmdXaW5kb3coKSk7CisgICAgaWYgKCFjb250YWluZXIpCisgICAgICAgIHJldHVy
biBGbG9hdFJlY3QoKTsKKworICAgIGlmICghR1RLX1dJREdFVF9SRUFMSVpFRChjb250YWluZXIp
KQorICAgICAgICByZXR1cm4gc2NyZWVuUmVjdCh3aWRnZXQpOworCisgICAgR2RrRHJhd2FibGUq
IHJvb3RXaW5kb3cgPSBHREtfRFJBV0FCTEUoZ3RrX3dpZGdldF9nZXRfcm9vdF93aW5kb3coY29u
dGFpbmVyKSk7CisgICAgR2RrRGlzcGxheSogZGlzcGxheSA9IGdka19kcmF3YWJsZV9nZXRfZGlz
cGxheShyb290V2luZG93KTsKKyAgICBBdG9tIHhwcm9wZXJ0eSA9IGdka194MTFfZ2V0X3hhdG9t
X2J5X25hbWVfZm9yX2Rpc3BsYXkoZGlzcGxheSwgIl9ORVRfV09SS0FSRUEiKTsKKworICAgIEF0
b20gcmV0VHlwZTsKKyAgICBpbnQgcmV0Rm9ybWF0OworICAgIGxvbmcgKndvcmtBcmVhUG9zID0g
TlVMTDsKKyAgICB1bnNpZ25lZCBsb25nIHJldE5JdGVtczsKKyAgICB1bnNpZ25lZCBsb25nIHJl
dEFmdGVyOworICAgIGludCB4UmVzID0gWEdldFdpbmRvd1Byb3BlcnR5KEdES19ESVNQTEFZX1hE
SVNQTEFZKGRpc3BsYXkpLCBHREtfV0lORE9XX1hXSU5ET1cocm9vdFdpbmRvdyksIHhwcm9wZXJ0
eSwKKyAgICAgICAgMCwgNCwgRkFMU0UsIFhBX0NBUkRJTkFMLCAmcmV0VHlwZSwgJnJldEZvcm1h
dCwgJnJldE5JdGVtcywgJnJldEFmdGVyLCAoZ3VjaGFyKiopJndvcmtBcmVhUG9zKTsKKworICAg
IEZsb2F0UmVjdCByZWN0OworICAgIGlmICh4UmVzID09IFN1Y2Nlc3MgJiYgd29ya0FyZWFQb3Mg
IT0gTlVMTCAmJiByZXRUeXBlID09IFhBX0NBUkRJTkFMICYmIHJldE5JdGVtcyA9PSA0ICYmIHJl
dEZvcm1hdCA9PSAzMikgeworICAgICAgICByZWN0ID0gRmxvYXRSZWN0KHdvcmtBcmVhUG9zWzBd
LCB3b3JrQXJlYVBvc1sxXSwgd29ya0FyZWFQb3NbMl0sIHdvcmtBcmVhUG9zWzNdKTsKKyAgICAg
ICAgLy8gcmVjdCBjb250YWlucyB0aGUgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSB3aG9sZSBzY3Jl
ZW4gbm90IGp1c3QgaW4gdGhlIG1vbml0b3IKKyAgICAgICAgLy8gY29udGFpbmluZyB0aGUgd2lk
Z2V0LCBzbyB3ZSBpbnRlcnNlY3QgaXQgd2l0aCB0aGUgbW9uaXRvciByZWN0YW5nbGUuCisgICAg
ICAgIHJlY3QuaW50ZXJzZWN0KHNjcmVlblJlY3Qod2lkZ2V0KSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHJlY3QgPSBzY3JlZW5SZWN0KHdpZGdldCk7CisKKyAgICBpZiAod29ya0FyZWFQb3MpCisg
ICAgICAgIFhGcmVlKHdvcmtBcmVhUG9zKTsKKworICAgIHJldHVybiByZWN0OworI2Vsc2UKKyAg
ICByZXR1cm4gc2NyZWVuUmVjdCh3aWRnZXQpCisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uZSAzNDE3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCShjb3BpYSBs
b2NhbGUpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDgtMDUtMjggIE1hcmNvIEJhcmlzaW9uZSAgPG1h
cmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY4ODEKKyAgICAgICAgW0dUS10gUGxhdGZvcm1TY3JlZW5HdGsgaXMgdW5pbXBsZW1l
bnRlZAorCisgICAgICAgIEltcGxlbWVudCBtaXNzaW5nIGZ1bmN0aW9ucyBpbiBQbGF0Zm9ybVNj
cmVlbkd0ay4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJv
bWUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5BdmFpbGFibGVSZWN0KToKKwogMjAwOC0wNS0yNyAgVG9yIEFybmUgVmVzdGLDuCAgPHRh
dmVzdGJvQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22659</attachid>
            <date>2008-08-05 12:40:10 -0700</date>
            <delta_ts>2008-08-12 13:21:33 -0700</delta_ts>
            <desc>Implement stubs</desc>
            <filename>platform-screen.patch</filename>
            <type>text/plain</type>
            <size>4352</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAppbmRleCA2OWNlYmRj
Li4yODIzOWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
CkBAIC0xLDYgKzEsOCBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNo
YWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zMyw0NSArMzUsOTcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAorI2lmIGRl
ZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCisjaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRl
IDxYMTEvWGF0b20uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGludCBzY3Jl
ZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBBU1NFUlQod2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkgJiYgR1RLX1dJREdFVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSktPndpbmRv
dyk7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFp
bmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDI0Owog
Ci0gICAgZ2ludCBkZXB0aDsKLSAgICBnZGtfd2luZG93X2dldF9nZW9tZXRyeShHVEtfV0lER0VU
KHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93LCAwLCAwLCAwLCAwLCAmZGVwdGgp
OwotICAgIHJldHVybiBkZXB0aDsKKyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19kcmF3YWJs
ZV9nZXRfdmlzdWFsKEdES19EUkFXQUJMRShHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dp
bmRvdygpKS0+d2luZG93KSk7CisgICAgcmV0dXJuIHZpc3VhbC0+ZGVwdGg7CiB9CiAKLWludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKQoraW50IHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50KFdpZGdldCogd2lkZ2V0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDg7CisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFp
bmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIDg7CisK
KyAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGdka19kcmF3YWJsZV9nZXRfdmlzdWFsKEdES19EUkFX
QUJMRShHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93KSk7Cisg
ICAgcmV0dXJuIHZpc3VhbC0+Yml0c19wZXJfcmdiOwogfQogCiBib29sIHNjcmVlbklzTW9ub2No
cm9tZShXaWRnZXQqIHdpZGdldCkKIHsKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdUS19X
SURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFpbmVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gc2NyZWVuRGVwdGgod2lkZ2V0KSA8
IDI7CiB9CiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIEFT
U0VSVCh3aWRnZXQtPmNvbnRhaW5pbmdXaW5kb3coKSAmJiBHVEtfV0lER0VUKHdpZGdldC0+Y29u
dGFpbmluZ1dpbmRvdygpKS0+d2luZG93KTsKKyAgICBHdGtXaWRnZXQqIGNvbnRhaW5lciA9IEdU
S19XSURHRVQod2lkZ2V0LT5jb250YWluaW5nV2luZG93KCkpOworICAgIGlmICghY29udGFpbmVy
KQorICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKLSAgICBHZGtTY3JlZW4qIHNjcmVlbiA9
IGd0a193aWRnZXRfZ2V0X3NjcmVlbihHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRv
dygpKSk7Ci0gICAgZ2ludCBtb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5k
b3coc2NyZWVuLCBHVEtfV0lER0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKS0+d2luZG93
KTsKLSAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7CisgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBn
dGtfd2lkZ2V0X2hhc19zY3JlZW4oY29udGFpbmVyKSA/IGd0a193aWRnZXRfZ2V0X3NjcmVlbihj
b250YWluZXIpIDogZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpOworICAgIGlmICghc2NyZWVuKQor
ICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKKyAgICBnaW50IG1vbml0b3IgPSBnZGtfc2Ny
ZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIEdUS19XSURHRVQoY29udGFpbmVyKS0+
d2luZG93KTsKKyAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7CiAgICAgZ2RrX3NjcmVlbl9nZXRf
bW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsICZnZW9tZXRyeSk7CiAgICAgCiAgICAg
cmV0dXJuIEZsb2F0UmVjdChnZW9tZXRyeS54LCBnZW9tZXRyeS55LCBnZW9tZXRyeS53aWR0aCwg
Z2VvbWV0cnkuaGVpZ2h0KTsKIH0KIAotRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0KikKK0Zsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdCgpOworI2lmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19YMTEpCisgICAgR3RrV2lkZ2V0KiBjb250YWluZXIgPSBHVEtfV0lE
R0VUKHdpZGdldC0+Y29udGFpbmluZ1dpbmRvdygpKTsKKyAgICBpZiAoIWNvbnRhaW5lcikKKyAg
ICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworCisgICAgaWYgKCFHVEtfV0lER0VUX1JFQUxJWkVE
KGNvbnRhaW5lcikpCisgICAgICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CisKKyAgICBH
ZGtEcmF3YWJsZSogcm9vdFdpbmRvdyA9IEdES19EUkFXQUJMRShndGtfd2lkZ2V0X2dldF9yb290
X3dpbmRvdyhjb250YWluZXIpKTsKKyAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2RyYXdh
YmxlX2dldF9kaXNwbGF5KHJvb3RXaW5kb3cpOworICAgIEF0b20geHByb3BlcnR5ID0gZ2RrX3gx
MV9nZXRfeGF0b21fYnlfbmFtZV9mb3JfZGlzcGxheShkaXNwbGF5LCAiX05FVF9XT1JLQVJFQSIp
OworCisgICAgQXRvbSByZXRUeXBlOworICAgIGludCByZXRGb3JtYXQ7CisgICAgbG9uZyAqd29y
a0FyZWFQb3MgPSBOVUxMOworICAgIHVuc2lnbmVkIGxvbmcgcmV0Tkl0ZW1zOworICAgIHVuc2ln
bmVkIGxvbmcgcmV0QWZ0ZXI7CisgICAgaW50IHhSZXMgPSBYR2V0V2luZG93UHJvcGVydHkoR0RL
X0RJU1BMQVlfWERJU1BMQVkoZGlzcGxheSksIEdES19XSU5ET1dfWFdJTkRPVyhyb290V2luZG93
KSwgeHByb3BlcnR5LAorICAgICAgICAwLCA0LCBGQUxTRSwgWEFfQ0FSRElOQUwsICZyZXRUeXBl
LCAmcmV0Rm9ybWF0LCAmcmV0Tkl0ZW1zLCAmcmV0QWZ0ZXIsIChndWNoYXIqKikmd29ya0FyZWFQ
b3MpOworCisgICAgRmxvYXRSZWN0IHJlY3Q7CisgICAgaWYgKHhSZXMgPT0gU3VjY2VzcyAmJiB3
b3JrQXJlYVBvcyAhPSBOVUxMICYmIHJldFR5cGUgPT0gWEFfQ0FSRElOQUwgJiYgcmV0Tkl0ZW1z
ID09IDQgJiYgcmV0Rm9ybWF0ID09IDMyKSB7CisgICAgICAgIHJlY3QgPSBGbG9hdFJlY3Qod29y
a0FyZWFQb3NbMF0sIHdvcmtBcmVhUG9zWzFdLCB3b3JrQXJlYVBvc1syXSwgd29ya0FyZWFQb3Nb
M10pOworICAgICAgICAvLyByZWN0IGNvbnRhaW5zIHRoZSBhdmFpbGFibGUgc3BhY2UgaW4gdGhl
IHdob2xlIHNjcmVlbiBub3QganVzdCBpbiB0aGUgbW9uaXRvcgorICAgICAgICAvLyBjb250YWlu
aW5nIHRoZSB3aWRnZXQsIHNvIHdlIGludGVyc2VjdCBpdCB3aXRoIHRoZSBtb25pdG9yIHJlY3Rh
bmdsZS4KKyAgICAgICAgcmVjdC5pbnRlcnNlY3Qoc2NyZWVuUmVjdCh3aWRnZXQpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcmVjdCA9IHNjcmVlblJlY3Qod2lkZ2V0KTsKKworICAgIGlmICh3b3Jr
QXJlYVBvcykKKyAgICAgICAgWEZyZWUod29ya0FyZWFQb3MpOworCisgICAgcmV0dXJuIHJlY3Q7
CisjZWxzZQorICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="10029"
          type_id="1"
          status="+"
          setter="zecke"
    />
          </attachment>
      

    </bug>

</bugzilla>