diff options
author | Alexander Larsson <alexl@redhat.com> | 2020-09-24 15:40:17 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2020-09-25 09:31:43 +0200 |
commit | 88b709d5ec6012c1e877a497551e52543297c2f0 (patch) | |
tree | 1210206eca3845b405099d95e3b1750f993bb9ff /gdk | |
parent | 9dab51e7bebad469d2e07421db2b94e0103cc776 (diff) | |
download | gtk+-88b709d5ec6012c1e877a497551e52543297c2f0.tar.gz |
texture: Unvirtualize download_surface
We only have one implementation, so why do all this vfunc work?
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdktexture.c | 41 | ||||
-rw-r--r-- | gdk/gdktextureprivate.h | 1 |
2 files changed, 17 insertions, 25 deletions
diff --git a/gdk/gdktexture.c b/gdk/gdktexture.c index a6db7d5e17..c28bd9575f 100644 --- a/gdk/gdktexture.c +++ b/gdk/gdktexture.c @@ -130,28 +130,6 @@ gdk_texture_real_download (GdkTexture *self, GDK_TEXTURE_WARN_NOT_IMPLEMENTED_METHOD (self, download); } -static cairo_surface_t * -gdk_texture_real_download_surface (GdkTexture *texture) -{ - cairo_surface_t *surface; - cairo_status_t surface_status; - - surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - texture->width, texture->height); - - surface_status = cairo_surface_status (surface); - if (surface_status != CAIRO_STATUS_SUCCESS) - g_warning ("%s: surface error: %s", __FUNCTION__, - cairo_status_to_string (surface_status)); - - gdk_texture_download (texture, - cairo_image_surface_get_data (surface), - cairo_image_surface_get_stride (surface)); - cairo_surface_mark_dirty (surface); - - return surface; -} - static void gdk_texture_set_property (GObject *gobject, guint prop_id, @@ -216,7 +194,6 @@ gdk_texture_class_init (GdkTextureClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS (klass); klass->download = gdk_texture_real_download; - klass->download_surface = gdk_texture_real_download_surface; gobject_class->set_property = gdk_texture_set_property; gobject_class->get_property = gdk_texture_get_property; @@ -438,7 +415,23 @@ gdk_texture_get_height (GdkTexture *texture) cairo_surface_t * gdk_texture_download_surface (GdkTexture *texture) { - return GDK_TEXTURE_GET_CLASS (texture)->download_surface (texture); + cairo_surface_t *surface; + cairo_status_t surface_status; + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + texture->width, texture->height); + + surface_status = cairo_surface_status (surface); + if (surface_status != CAIRO_STATUS_SUCCESS) + g_warning ("%s: surface error: %s", __FUNCTION__, + cairo_status_to_string (surface_status)); + + gdk_texture_download (texture, + cairo_image_surface_get_data (surface), + cairo_image_surface_get_stride (surface)); + cairo_surface_mark_dirty (surface); + + return surface; } void diff --git a/gdk/gdktextureprivate.h b/gdk/gdktextureprivate.h index 07cb5436a3..3e2e9f3a49 100644 --- a/gdk/gdktextureprivate.h +++ b/gdk/gdktextureprivate.h @@ -28,7 +28,6 @@ struct _GdkTextureClass { const GdkRectangle *area, guchar *data, gsize stride); - cairo_surface_t * (* download_surface) (GdkTexture *texture); }; gpointer gdk_texture_new (const GdkTextureClass *klass, |