[sdf] Added total memory allocation log.

* src/sdf/ftsdf.c (*): Replaced `FT_QNEW' and `FT_ALLOC_MULT'
  to custom macros in order to track memory allocations
  throughout the process of generating SDF. It basically
  add the memory being allocated to a static global variable
  and at the end outputs it at the end.
This commit is contained in:
Anuj Verma 2020-07-16 09:27:25 +05:30 committed by anujverma
parent 08d5a325dc
commit 531d51eb2a
2 changed files with 60 additions and 4 deletions

View File

@ -1,3 +1,13 @@
2020-07-16 Anuj Verma <anujv@iitbhilai.ac.in>
[sdf] Added total memory allocation log.
* src/sdf/ftsdf.c (*): Replaced `FT_QNEW' and `FT_ALLOC_MULT'
to custom macros in order to track memory allocations
throughout the process of generating SDF. It basically
add the memory being allocated to a static global variable
and at the end outputs it at the end.
2020-07-15 Anuj Verma <anujv@iitbhilai.ac.in>
* src/sdf/ftsdfrend.c (sdf_property_set): Minor fix.

View File

@ -6,6 +6,48 @@
#include "ftsdferrs.h"
/**************************************************************************
*
* macros to track intermediate memory allocations
*
*/
#ifdef FT_DEBUG_LEVEL_TRACE
/* These macros are used to track and output the total */
/* memory allocation once the SDF is generated. */
static FT_Long s_total_memory_allocated;
#define SDF_MEM_TRACK_START() s_total_memory_allocated = 0
#define SDF_MEM_TRACK_END() \
FT_TRACE0(( "[sdf] Total intermediate memory allocated = " \
"%ld bytes\n", s_total_memory_allocated )); \
s_total_memory_allocated = 0
/* We only use these two macros to allocate memory in */
/* the module. */
#define SDF_ALLOC_MULT( ptr, count, item_size ) \
s_total_memory_allocated += count * item_size, \
FT_ALLOC_MULT( ptr, count, item_size )
#define SDF_QNEW( ptr ) \
s_total_memory_allocated += sizeof( *ptr ), \
!FT_QNEW( ptr )
#else
#define SDF_MEM_TRACK_START()
#define SDF_MEM_TRACK_END()
#define SDF_ALLOC_MULT( ptr, count, item_size ) \
FT_ALLOC_MULT( ptr, count, item_size )
#define SDF_QNEW( ptr ) !FT_QNEW( ptr )
#endif
/**************************************************************************
*
* definitions
@ -237,7 +279,7 @@
goto Exit;
}
if ( !FT_QNEW( ptr ) )
if ( SDF_QNEW( ptr ) )
{
*ptr = null_edge;
*edge = ptr;
@ -274,7 +316,7 @@
goto Exit;
}
if ( !FT_QNEW( ptr ) )
if ( SDF_QNEW( ptr ) )
{
*ptr = null_contour;
*contour = ptr;
@ -326,7 +368,7 @@
goto Exit;
}
if ( !FT_QNEW( ptr ) )
if ( SDF_QNEW( ptr ) )
{
*ptr = null_shape;
ptr->memory = memory;
@ -2589,7 +2631,7 @@
rows = bitmap->rows;
buffer = (FT_Short*)bitmap->buffer;
if ( FT_ALLOC_MULT( dists, width, rows * sizeof(*dists) ) )
if ( SDF_ALLOC_MULT( dists, width, rows * sizeof(*dists) ) )
goto Exit;
FT_MEM_ZERO( dists, width * rows * sizeof(*dists) );
@ -3067,6 +3109,8 @@
SDF_Params internal_params;
SDF_MEM_TRACK_START();
/* check for valid arguments */
if ( !sdf_raster || !sdf_params )
{
@ -3150,6 +3194,8 @@
if ( shape )
sdf_shape_done( &shape );
SDF_MEM_TRACK_END();
Exit:
return error;
}