<div dir="ltr">On Mon, Oct 6, 2008 at 7:36 PM, Pratheesh Gangadhar <span dir="ltr">&lt;<a href="mailto:pratheesh.gangadhar@gmail.com" target="_blank">pratheesh.gangadhar@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div><div dir="ltr"><div class="gmail_quote">Hi,<br><div dir="ltr"><br>I am able to run webkit over directfb backend - using GtkLauncher and Midori browser. The problem I face is that when I open say <a href="http://cnn.com" target="_blank">cnn.com</a> using this browser and move the cursor over links; it results in neighboring links to disappear - kind of a snow balling effect. I have tried same build using Kdrive - it seems to work fine.<br>



<br>Any ideas where to look to fix this issue ?<br><br>I have tested cross compiled version on target platform and native build on PC (using SDL), both show up the same problem.<br><br>I am using folowing version of packages and running DirectFB without any acceleration on my target.<br>



<br>DirectFB-1.2.0<br>pixman-0.10.0<br>cairo-1.6.4<br>pango-1.18.3<br>gtk+-2.12.9 with patches mentioned (<a href="https://wiki.mozilla.org/Mobile/DFBPorting" target="_blank">https://wiki.mozilla.org/Mobile/DFBPorting</a>)<br>



<br><br></div></div></div></div></div></blockquote></div>This issue is fixed by applying gtk+ rendering improvement patch (<a href="https://bugs.webkit.org/show_bug.cgi?id=21303" target="_blank">https://bugs.webkit.org/show_bug.cgi?id=21303</a>) from Alp Toker over Webkit nighly build tar ball (WebKit-r37469). Thanks for the patch.<br>


<br>
<pre>Index: WebKit/gtk/webkit/webkitwebview.cpp<br>===================================================================<br>--- WebKit/gtk/webkit/webkitwebview.cpp        (revision 37221)<br>+++ WebKit/gtk/webkit/webkitwebview.cpp        (working copy)<br>

@@ -282,8 +282,6 @@ static gboolean webkit_web_view_expose_e<br>     WebKitWebViewPrivate* priv = webView-&gt;priv;<br> <br>     Frame* frame = core(webView)-&gt;mainFrame();<br>-    GdkRectangle clip;<br>-    gdk_region_get_clipbox(event-&gt;region, &amp;clip);<br>

     cairo_t* cr = gdk_cairo_create(event-&gt;window);<br>     GraphicsContext ctx(cr);<br>     ctx.setGdkExposeEvent(event);<br>@@ -297,8 +295,28 @@ static gboolean webkit_web_view_expose_e<br>             cairo_restore(cr);<br>

         }<br> <br>-        frame-&gt;view()-&gt;paint(&amp;ctx, clip);<br>+        GdkRectangle* rects = NULL;<br>+        int n_rects = 0;<br>+        gdk_region_get_rectangles(event-&gt;region, &amp;rects, &amp;n_rects);<br>

+<br>+        // Avoid recursing into the render tree excessively<br>+        if (n_rects &gt; 16) {<br>+            IntRect clip = event-&gt;area;<br>+            ctx.clip(clip);<br>+            frame-&gt;view()-&gt;paint(&amp;ctx, clip);<br>

+        } else {<br>+            for (int i = 0; i &lt; n_rects; i++) {<br>+                IntRect rect = rects[i];<br>+                ctx.save();<br>+                ctx.clip(rect);<br>+                frame-&gt;view()-&gt;paint(&amp;ctx, rect);<br>

+                ctx.restore();<br>+            }<br>+        }<br>+<br>+        g_free(rects);<br>     }<br>+<br>     cairo_destroy(cr);<br> <br><br>     return FALSE;<br><br>Regards,<br>Pratheesh<br></pre>
</div>