[gtk/texture-fixes: 1/2] Fixes for gdk_memory_texture_new_subtexture
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/texture-fixes: 1/2] Fixes for gdk_memory_texture_new_subtexture
- Date: Fri, 13 May 2022 13:32:32 +0000 (UTC)
commit f33c5218364377ac41a6bbaf36e1a8a98412a368
Author: Matthias Clasen <mclasen redhat com>
Date: Sun May 8 13:53:04 2022 -0400
Fixes for gdk_memory_texture_new_subtexture
There were several mistakes here.
The width of subtextures was set to the width of
the main texture, the data size wasn't properly
calculated, and the preconditions were inverted.
Yay us!
gdk/gdkmemorytexture.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
---
diff --git a/gdk/gdkmemorytexture.c b/gdk/gdkmemorytexture.c
index c9aecd5cea..e241ebd0a3 100644
--- a/gdk/gdkmemorytexture.c
+++ b/gdk/gdkmemorytexture.c
@@ -178,19 +178,19 @@ gdk_memory_texture_new_subtexture (GdkMemoryTexture *source,
GBytes *bytes;
g_return_val_if_fail (GDK_IS_MEMORY_TEXTURE (source), NULL);
- g_return_val_if_fail (x < 0 || x >= GDK_TEXTURE (source)->width, NULL);
- g_return_val_if_fail (y < 0 || y >= GDK_TEXTURE (source)->height, NULL);
- g_return_val_if_fail (width <= 0 || x + width > GDK_TEXTURE (source)->width, NULL);
- g_return_val_if_fail (height <= 0 || y + height > GDK_TEXTURE (source)->height, NULL);
+ g_return_val_if_fail (x >= 0 || x < GDK_TEXTURE (source)->width, NULL);
+ g_return_val_if_fail (y >= 0 || y < GDK_TEXTURE (source)->height, NULL);
+ g_return_val_if_fail (width > 0 || x + width <= GDK_TEXTURE (source)->width, NULL);
+ g_return_val_if_fail (height > 0 || y + height <= GDK_TEXTURE (source)->height, NULL);
texture = GDK_TEXTURE (source);
bpp = gdk_memory_format_bytes_per_pixel (texture->format);
offset = y * source->stride + x * bpp;
- size = source->stride * (height - 1) + x * bpp;
+ size = source->stride * (height - 1) + width * bpp;
bytes = g_bytes_new_from_bytes (source->bytes, offset, size);
- result = gdk_memory_texture_new (texture->width,
- texture->height,
+ result = gdk_memory_texture_new (width,
+ height,
texture->format,
bytes,
source->stride);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]