Re: Heads-up: Potentially breaking changes to the GDK drawing model pushed



May I ask why you can't paint in the draw signal? GDK already tracks invalidated windows marked by exposes and gdk_window_invalidate_rect itself. It should be as efficient as drawing in an idle handler, and also cooperates with the paint clock, where we can be synchronized to a compositor's redraw cycle.


On Mon, Jun 23, 2014 at 8:53 PM, Krzysztof Kosiński <tweenk pl gmail com> wrote:
2014-06-21 3:00 GMT+02:00 Jasper St. Pierre <jstpierre mecheye net>:
> To better support Wayland with fewer copies and less drawing artifacts, I've
> pushed some potentially breaking changes to GDK, namely around
> gdk_cairo_create and gdk_window_begin_paint_region.
>
> https://git.gnome.org/browse/gtk+/commit/?id=d48adf9cee7e340acd7f8b9a5f9716695352b848
> https://git.gnome.org/browse/gtk+/commit/?id=be30e440c350f0f3e0f2572f7f3eab54ef96af0e
>
> With these changes, it is now illegal to call gdk_cairo_create outside of a
> begin_paint / end_paint. This was always sketchy, and would never work on
> Wayland anyway. If your code does this, we will print a warning and return a
> dummy surface which won't ever be composited back into the main surface.

This will also break the GTK 3 version of Inkscape, which paints its
canvas in an idle handler, and the draw signal only marks areas for
redraw. However, it may be fixable by using the begin_paint APIs.

Regards, Krzysztof



--
  Jasper


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]