Package: gtk

Accessor gtk-widget-double-buffered

Lambda List

gtk-widget-double-buffered (object)


(gtk-widget-double-buffered object) => double-buffered
(setf (gtk-widget-double-buffered object) double-buffered)


object -- a gtk-widget object


Accessor of the slot double-buffered of the gtk-widget class.

The generic function gtk-widget-double-buffered returns true if the widget is double buffered.

Widgets are double buffered by default; you can use the generic function (setf gtk-widget-double-buffered) to turn off the buffering.

"Double buffered" simply means that the functions gdk-window-begin-paint-region and gdk-window-end-paint are called automatically around expose events sent to the widget. The function gdk-window-begin-paint-region diverts all drawing to a widget's window to an offscreen buffer, and the function gdk-window-end-paint draws the buffer to the screen. The result is that users see the window update in one smooth step, and do not see individual graphics primitives being rendered.

In very simple terms, double buffered widgets do not flicker, so you would only use this function to turn off double buffering if you had special needs and really knew what you were doing.

Note: If you turn off double-buffering, you have to handle expose events, since even the clearing to the background color or pixmap will not happen automatically as it is done in in the functions gdk-window-begin-paint-region function.

In 3.10 GTK and GDK have been restructured for translucent drawing. Since then expose events for double-buffered widgets are culled into a single event to the toplevel GDK window. If you now unset double buffering, you will cause a separate rendering pass for every widget. This will likely cause rendering problems - in particular related to stacking - and usually increases rendering times significantly.


The double-buffered property has been deprecated since version 3.14 and should not be used in newly-written code. This function does not work under non-X11 backends or with non-native windows. Widgets should not use this property.

Since 2.18

See also