[cairo-bugs] [Bug 29501] cairo_restore does not undo a clip done on a DirectFB surface

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Aug 11 11:21:51 PDT 2010


https://bugs.freedesktop.org/show_bug.cgi?id=29501

--- Comment #1 from Bill Spitzak <spitzak at gmail.com> 2010-08-11 11:21:50 PDT ---
Don't you have to do some sort of sync() call to get the surface to 
actually match? I suspect Cairo is not updating the clip until it needs 
to draw something, which is why removing the show_layout() seems to work 
(because it never applied the clip).

bugzilla-daemon at freedesktop.org wrote:
> https://bugs.freedesktop.org/show_bug.cgi?id=29501
> 
>            Summary: cairo_restore does not undo a clip done on a DirectFB
>                     surface
>            Product: cairo
>            Version: 1.8.4
>           Platform: Other
>         OS/Version: Linux (All)
>             Status: NEW
>           Severity: normal
>           Priority: medium
>          Component: directfb backend
>         AssignedTo: cairo-bugs at cairographics.org
>         ReportedBy: allison.newman at sfr.com
>          QAContact: cairo-bugs at cairographics.org
> 
> 
> Take the following code:
> 
> 
>     cairo_save(pCairo);
>     cairo_rectangle(pCairo, x, y, w, h);
>     cairo_clip(pCairo);
>     cairo_translate(pCairo, x, y);
>     pango_cairo_show_layout(pCairo, pLayout);
>     cairo_restore(pCairo);
> 
> 
> After the cairo_restore(), if I try to do a DirectFB drawing operation on the
> surface outside the region specified for the cairo clip, there is no drawing
> done.
> 
> I'm not sure exactly where the bug is though, it may be in pango.  If I remove
> either the cairo_clip() or the pango_cairo_show_layout(), I can still draw
> correctly on the surface, but if I have both, the clip remains in effect.
> 
> Adding:
>     pFBSurface->SetClip(pFBSurface, NULL);
> 
> after the cairo_restore() allows me to draw correctly to the surface again.
>

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the cairo-bugs mailing list