freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master e03214e: [base] Compute MD5 checksums only if explici


From: Werner LEMBERG
Subject: [freetype2] master e03214e: [base] Compute MD5 checksums only if explicitly requested.
Date: Thu, 15 Oct 2015 14:58:26 +0000

branch: master
commit e03214e166c61b91ecb76e3b5fa5ee1c2a66ac56
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    [base] Compute MD5 checksums only if explicitly requested.
    
    This improves profiling accuracy.
    
    * src/base/ftobjs.c (FT_Render_Glyph_Internal): Implement it.
---
 ChangeLog         |    8 ++++++
 src/base/ftobjs.c |   67 ++++++++++++++++++++++++++++++----------------------
 2 files changed, 47 insertions(+), 28 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d7143ac..ef51026 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-10-15  Werner Lemberg  <address@hidden>
+
+       [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  <address@hidden>
 
        [base] Use `FT_' namespace for MD5 functions (#42366).
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index dd5cb03..dc3a513 100644
--- 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;
-
-
-        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" ));
-      }
+        /* 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 );
+
+          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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]