summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2021-06-25 09:19:51 +0200
committerWerner Lemberg <wl@gnu.org>2021-06-25 09:24:07 +0200
commitff40776591f215a05c0ed1bf49069090e5180578 (patch)
tree936c8c819d375e7585770f93875c5b603e1c96b1
parent1e0cef9e72aea5df787853e1952166807f4656fc (diff)
downloadfreetype2-ff40776591f215a05c0ed1bf49069090e5180578.tar.gz
[base] Add trace level to logging output.
Some practical debugging work has shown that displaying level X of an `FT_TRACEX` macro in the output of `FT2_DEBUG="... -v"` would be very helpful to find out which trace level should be selected. As an example, we now get output like ``` [ttobjs:2] TTF driver [ttobjs:2] SFNT driver [sfobjs:2] not a font using the SFNT container format [t1objs:2] Type 1 driver [stream:7] FT_Stream_EnterFrame: 14 bytes ``` * include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro. (FT_LOG): Use it to add the trace level to the logging tag. * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH): Adjust. * docs/DEBUG: Updated.
-rw-r--r--ChangeLog25
-rw-r--r--docs/DEBUG6
-rw-r--r--include/freetype/internal/ftdebug.h7
-rw-r--r--include/freetype/internal/fttrace.h5
4 files changed, 37 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index a792f06b1..ab619cd63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2021-06-25 Werner Lemberg <wl@gnu.org>
+
+ [base] Add trace level to logging output.
+
+ Some practical debugging work has shown that displaying level X of
+ an `FT_TRACEX` macro in the output of `FT2_DEBUG="... -v"` would be
+ very helpful to find out which trace level should be selected. As
+ an example, we now get output like
+
+ ```
+ [ttobjs:2] TTF driver
+ [ttobjs:2] SFNT driver
+ [sfobjs:2] not a font using the SFNT container format
+ [t1objs:2] Type 1 driver
+ [stream:7] FT_Stream_EnterFrame: 14 bytes
+ ```
+
+ * include/freetype/internal/ftdebug.h (FT_LOGGING_TAGX): New macro.
+ (FT_LOG): Use it to add the trace level to the logging tag.
+
+ * include/freetype/internal/fttrace.h (FT_MAX_TRACE_LEVEL_LENGTH):
+ Adjust.
+
+ * docs/DEBUG: Updated.
+
2021-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
[smooth, raster] Fix up and align error codes.
diff --git a/docs/DEBUG b/docs/DEBUG
index 9a5fdc6a0..4f358779a 100644
--- a/docs/DEBUG
+++ b/docs/DEBUG
@@ -168,7 +168,7 @@ behaviour of FreeType at runtime.
If `FT_DEBUG_LOGGING' is defined, two more options are available.
* -v: Print also the name of FreeType's component from which the
- current log is produced.
+ current log is produced, together with the tracing level.
* -t: Print also the time.
@@ -176,7 +176,7 @@ behaviour of FreeType at runtime.
FT2_DEBUG="any:7 memory:5 -vt"
- => [20:32:02:44969 ttload] table directory loaded
+ => [20:32:02:44969 ttload:2] table directory loaded
FT2_DEBUG="any:7 memory:5 -t"
@@ -184,7 +184,7 @@ behaviour of FreeType at runtime.
FT2_DEBUG="any:7 memory:5 -v"
- => [ttload] table directory loaded
+ => [ttload:2] table directory loaded
FT_LOGGING_FILE
diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h
index 1b6aec397..b9787a709 100644
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -114,11 +114,16 @@ FT_BEGIN_HEADER
#define FT_LOGGING_TAG( x ) FT_LOGGING_TAG_( x )
#define FT_LOGGING_TAG_( x ) #x
+ /* we need two macros to convert the component and the trace level */
+ /* to a string that combines them */
+#define FT_LOGGING_TAGX( x, y ) FT_LOGGING_TAGX_( x, y )
+#define FT_LOGGING_TAGX_( x, y ) #x ":" #y
+
#define FT_LOG( level, varformat ) \
do \
{ \
- const char* dlg_tag = FT_LOGGING_TAG( FT_COMPONENT ); \
+ const char* dlg_tag = FT_LOGGING_TAGX( FT_COMPONENT, level ); \
\
\
ft_add_tag( dlg_tag ); \
diff --git a/include/freetype/internal/fttrace.h b/include/freetype/internal/fttrace.h
index 6b1019edb..2ed205ea4 100644
--- a/include/freetype/internal/fttrace.h
+++ b/include/freetype/internal/fttrace.h
@@ -19,8 +19,9 @@
/* definitions of trace levels for FreeType 2 */
/* the maximum string length (if the argument to `FT_TRACE_DEF` */
- /* gets used as a string) */
-#define FT_MAX_TRACE_LEVEL_LENGTH 9
+ /* gets used as a string) plus one charachter for ':' plus */
+ /* another one for the trace level */
+#define FT_MAX_TRACE_LEVEL_LENGTH (9 + 1 + 1)
/* the first level must always be `trace_any' */
FT_TRACE_DEF( any )