summaryrefslogtreecommitdiff
path: root/gdk/gdkoffscreenwindow.c
diff options
context:
space:
mode:
authorMichael Natterer <mitch@gimp.org>2010-10-20 17:44:23 +0200
committerMichael Natterer <mitch@gimp.org>2010-10-20 17:44:23 +0200
commit0f2d1547f85159d25131db0fdffaebfa22a084ce (patch)
tree99666ef0e7f192db9d320189dd9f30e02055e88e /gdk/gdkoffscreenwindow.c
parentc2f29f2cefd7d880b1c1357070c8444a1fbb7b33 (diff)
downloadgtk+-0f2d1547f85159d25131db0fdffaebfa22a084ce.tar.gz
gdk: add alpha to the offscreen window's surface if its visual is RGBA
Diffstat (limited to 'gdk/gdkoffscreenwindow.c')
-rw-r--r--gdk/gdkoffscreenwindow.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/gdk/gdkoffscreenwindow.c b/gdk/gdkoffscreenwindow.c
index 81f3bbc599..f9be9ad6c9 100644
--- a/gdk/gdkoffscreenwindow.c
+++ b/gdk/gdkoffscreenwindow.c
@@ -156,16 +156,19 @@ _gdk_offscreen_window_create_surface (GdkWindow *offscreen,
GdkWindowObject *private = (GdkWindowObject *) offscreen;
cairo_surface_t *similar;
cairo_surface_t *surface;
+ cairo_content_t content = CAIRO_CONTENT_COLOR;
g_return_val_if_fail (GDK_IS_OFFSCREEN_WINDOW (private->impl), NULL);
similar = _gdk_drawable_ref_cairo_surface ((GdkWindow *)private->parent);
- surface = cairo_surface_create_similar (similar,
- /* FIXME: use visual */
- CAIRO_CONTENT_COLOR,
- width,
- height);
+ if (gdk_window_get_visual (offscreen) ==
+ gdk_screen_get_rgba_visual (gdk_window_get_screen (offscreen)))
+ {
+ content = CAIRO_CONTENT_COLOR_ALPHA;
+ }
+
+ surface = cairo_surface_create_similar (similar, content, width, height);
cairo_surface_destroy (similar);