diff options
author | Matthias Clasen <mclasen@redhat.com> | 2017-11-05 19:30:54 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2017-11-05 19:30:54 -0500 |
commit | c08a6a062fdef4ca76f657456363a77e9f1137aa (patch) | |
tree | 0aea3fd6537326e6e7cb9e1de0e1232e997c73a9 /gdk/gdkwindow.c | |
parent | de83fc48bf510a82c7313723c03276c56b03b275 (diff) | |
download | gtk+-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.c | 21 |
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, |