ref: e03214e166c61b91ecb76e3b5fa5ee1c2a66ac56
parent: 6de2a355ffdef0944434a32202251ff064c624f9
author: Werner Lemberg <[email protected]>
date: Thu Oct 15 12:58:13 EDT 2015
[base] Compute MD5 checksums only if explicitly requested. This improves profiling accuracy. * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-10-15 Werner Lemberg <[email protected]>
+
+ [base] Compute MD5 checksums only if explicitly requested.
+
+ This improves profiling accuracy.
+
+ * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
+
2015-10-14 Werner Lemberg <[email protected]>
[base] Use `FT_' namespace for MD5 functions (#42366).
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -4167,39 +4167,50 @@
#undef FT_COMPONENT
#define FT_COMPONENT trace_bitmap
- /* we convert to a single bitmap format for computing the checksum */
- if ( !error )
+ /*
+ * Computing the MD5 checksum is expensive, unnecessarily distorting a
+ * possible profiling of FreeType if compiled with tracing support. For
+ * this reason, we execute the following code only if explicitly
+ * requested.
+ */
+
+ /* we use FT_TRACE3 in this block */
+ if ( ft_trace_levels[trace_bitmap] >= 3 )
{
- FT_Bitmap bitmap;
- FT_Error err;
+ /* we convert to a single bitmap format for computing the checksum */
+ if ( !error )
+ {
+ FT_Bitmap bitmap;
+ FT_Error err;
- FT_Bitmap_Init( &bitmap );
+ FT_Bitmap_Init( &bitmap );
- /* this also converts the bitmap flow to `down' (i.e., pitch > 0) */
- err = FT_Bitmap_Convert( library, &slot->bitmap, &bitmap, 1 );
- if ( !err )
- {
- MD5_CTX ctx;
- unsigned char md5[16];
- int i;
- unsigned int rows = bitmap.rows;
- unsigned int pitch = (unsigned int)bitmap.pitch;
+ /* this also converts the bitmap flow to `down' (i.e., pitch > 0) */
+ err = FT_Bitmap_Convert( library, &slot->bitmap, &bitmap, 1 );
+ if ( !err )
+ {
+ MD5_CTX ctx;
+ unsigned char md5[16];
+ int i;
+ unsigned int rows = bitmap.rows;
+ unsigned int pitch = (unsigned int)bitmap.pitch;
- MD5_Init( &ctx );
- MD5_Update( &ctx, bitmap.buffer, rows * pitch );
- MD5_Final( md5, &ctx );
+ MD5_Init( &ctx );
+ MD5_Update( &ctx, bitmap.buffer, rows * pitch );
+ MD5_Final( md5, &ctx );
- FT_TRACE3(( "MD5 checksum for %dx%d bitmap:\n"
- " ",
- rows, pitch ));
- for ( i = 0; i < 16; i++ )
- FT_TRACE3(( "%02X", md5[i] ));
- FT_TRACE3(( "\n" ));
- }
+ FT_TRACE3(( "MD5 checksum for %dx%d bitmap:\n"
+ " ",
+ rows, pitch ));
+ for ( i = 0; i < 16; i++ )
+ FT_TRACE3(( "%02X", md5[i] ));
+ FT_TRACE3(( "\n" ));
+ }
- FT_Bitmap_Done( library, &bitmap );
+ FT_Bitmap_Done( library, &bitmap );
+ }
}
#undef FT_COMPONENT