]> Pileus Git - ~andy/gtk/commit
Work around https://bugs.freedesktop.org/show_bug.cgi?id=4320, which used
authorFederico Mena Quintero <federico@ximian.com>
Fri, 3 Feb 2006 21:17:34 +0000 (21:17 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Fri, 3 Feb 2006 21:17:34 +0000 (21:17 +0000)
commit9bfabba034d61521bb2d01db886446889ba42666
tree3d3f276e59373d0101dab877595a2d839b1a51cb
parent32fb5404bf0ee01ce2b7b369a59c32c849b4374a
Work around https://bugs.freedesktop.org/show_bug.cgi?id=4320, which used

2006-02-03  Federico Mena Quintero  <federico@ximian.com>

Work around https://bugs.freedesktop.org/show_bug.cgi?id=4320,
which used to be our own
http://bugzilla.gnome.org/show_bug.cgi?id=314616.  If one uses a
pixmap for a pattern in Cairo, and sets the pattern to
CAIRO_EXTEND_REPEAT; and if the destination surface is also a
pixmap, Cairo does a slow copy instead of using XCopyArea().  So,
we use the same code that we used in GTK+ 2.6 (pre-cairo), by
filling the double-buffer pixmap with a tiled GC and
XFillRectangle().

* gdk/gdkwindow.c (BackingRectMethod): New structure with a
cairo_t and a GdkGC field.  Depending on which of these fields
gets filled in, we'll use Cairo or GDK to clear the double-buffer
pixmap when painting a window.
(setup_backing_rect_method): Fill a BackingRectMethod as
appropriate, depending on the window's configuration and our
knowledge of whether Cairo is fast or slow when doing repeating
patterns.
(gdk_window_clear_backing_rect): Call
setup_backing_rect_method().  Depending on what it returns, use
Cairo to clear the double-buffer pixmap, or plain GDK.
ChangeLog
ChangeLog.pre-2-10
gdk/gdkwindow.c