From 82c97fd1ddda076375901fa5f760279acd54497b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Wed, 4 Sep 2019 11:14:57 +0200 Subject: [PATCH] Image.Image: Support count_memory() for images. The memory allocated for image bitmaps is now included in the value reported by count_memory(). Fixes [PIKE-204]. --- .gitattributes | 1 - src/modules/Image/image.c | 12 +++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index 2246fcac5c..ed45cb04c4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -508,7 +508,6 @@ testfont binary /src/modules/Image/encodings/xcf_constant_strings.h foreign_ident /src/modules/Image/encodings/xwd.c foreign_ident /src/modules/Image/font.c foreign_ident -/src/modules/Image/image.c foreign_ident /src/modules/Image/image.h foreign_ident /src/modules/Image/image_module.c foreign_ident /src/modules/Image/initstuff.h foreign_ident diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c index c34220dce7..913a9e59ea 100644 --- a/src/modules/Image/image.c +++ b/src/modules/Image/image.c @@ -2,7 +2,7 @@ || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. -|| $Id: image.c,v 1.235 2007/08/10 13:54:51 grubba Exp $ +|| $Id$ */ /* @@ -106,6 +106,7 @@ #include "pike_macros.h" #include "object.h" #include "interpret.h" +#include "gc.h" #include "svalue.h" #include "threads.h" #include "array.h" @@ -196,6 +197,13 @@ static void exit_image_struct(struct object *obj) */ } +static void gc_recurse_image_struct(struct object *UNUSED(obj)) +{ + if (mc_count_bytes(Pike_fp->current_object) && THIS->img) { + mc_counted_bytes += sizeof(rgb_group)*THIS->xsize*(long)THIS->ysize; + } +} + /***************** internals ***********************************/ #define apply_alpha(x,y,alpha) \ @@ -5127,6 +5135,8 @@ void init_image_image(void) set_init_callback(init_image_struct); set_exit_callback(exit_image_struct); + set_gc_recurse_callback(gc_recurse_image_struct); + #ifndef FAKE_DYNAMIC_LOAD /* Added by per: Export all functions needed by _Image_GIF */ -- GitLab