summaryrefslogtreecommitdiff
path: root/gdk/gdkwindow.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-11-05 19:30:54 -0500
committerMatthias Clasen <mclasen@redhat.com>2017-11-05 19:30:54 -0500
commitc08a6a062fdef4ca76f657456363a77e9f1137aa (patch)
tree0aea3fd6537326e6e7cb9e1de0e1232e997c73a9 /gdk/gdkwindow.c
parentde83fc48bf510a82c7313723c03276c56b03b275 (diff)
downloadgtk+-c08a6a062fdef4ca76f657456363a77e9f1137aa.tar.gz
Stop using the root window in gdk_window_create_similar_image_surface
Just create a plain image surface if we don't get a window. This should work just fine and lets us drop another implicit use of the root window.
Diffstat (limited to 'gdk/gdkwindow.c')
-rw-r--r--gdk/gdkwindow.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 729654de69..2687dc0b0b 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -6016,20 +6016,23 @@ gdk_window_create_similar_image_surface (GdkWindow * window,
int height,
int scale)
{
- GdkWindowImplClass *impl_class;
- cairo_surface_t *window_surface, *surface;
+ cairo_surface_t *surface;
- g_return_val_if_fail (window ==NULL || GDK_IS_WINDOW (window), NULL);
+ g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL);
if (window == NULL)
- window = gdk_display_get_root_window (gdk_display_get_default ());
-
- impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
-
- if (impl_class->create_similar_image_surface)
- surface = impl_class->create_similar_image_surface (window, format, width, height);
+ {
+ surface = cairo_image_surface_create (format, width, height);
+ }
+ else if (GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_similar_image_surface)
+ {
+ surface =
+ GDK_WINDOW_iMPL_GET_CLASS (window->impl)->create_similar_image_surface (window, format, width, height);
+ }
else
{
+ cairo_surface_t *window_surface;
+
window_surface = gdk_window_ref_impl_surface (window);
surface =
cairo_surface_create_similar_image (window_surface,