]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcinit.c
#ifdef out old cache stuff, replace with first version of new mmapping
[fontconfig.git] / src / fcinit.c
index 5f1fe36f70e049137b12874f8f479e7352ed3cd2..9c51c28c97b4dcbdb46a0faff2e05b3bd35aeb39 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcinit.c,v 1.5 2002/05/21 17:48:15 keithp Exp $
+ * $RCSId: xc/lib/fontconfig/src/fcinit.c,v 1.7 2002/08/22 07:36:44 keithp Exp $
  *
- * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright © 2001 Keith Packard
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -61,6 +61,9 @@ FcInitLoadConfig (void)
     if (!config)
        return FcFalse;
     
+    if (!FcCacheRead(config))
+        FcCacheForce(FcTrue);
+
     if (!FcConfigParseAndLoad (config, 0, FcTrue))
     {
        FcConfigDestroy (config);
@@ -102,9 +105,24 @@ FcInit (void)
     if (!config)
        return FcTrue;
     FcConfigSetCurrent (config);
+    if (FcDebug() & FC_DBG_MEMORY)
+       FcMemReport ();
     return FcTrue;
 }
 
+/*
+ * Free all library-allocated data structures.
+ */
+void
+FcFini (void)
+{
+    if (_fcConfig)
+       FcConfigDestroy (_fcConfig);
+
+    FcPatternFini ();
+    FcCharSetThawAll ();
+}
+
 /*
  * Reread the configuration and available font lists
  */
@@ -152,19 +170,36 @@ static struct {
     int            free_count;
     int            free_mem;
 } FcInUse[FC_MEM_NUM] = {
-    { "charset", 0, 0 },
-    { "charnode", 0 ,0 },
-    { "fontset", 0, 0 },
-    { "fontptr", 0, 0 },
-    { "objectset", 0, 0 },
-    { "objectptr", 0, 0 },
-    { "matrix", 0, 0 },
-    { "pattern", 0, 0 },
-    { "patelt", 0, 0 },
-    { "vallist", 0, 0 },
-    { "substate", 0, 0 },
-    { "string", 0, 0 },
-    { "listbuck", 0, 0 },
+    { "charset" },
+    { "charleaf" },
+    { "fontset" },
+    { "fontptr" },
+    { "objectset" },
+    { "objectptr" },
+    { "matrix" },
+    { "pattern" },
+    { "patelt" },
+    { "vallist" },
+    { "substate" },
+    { "string" },
+    { "listbuck" },
+    { "strset" },
+    { "strlist" },
+    { "config" },
+    { "langset" },
+    { "atomic" },
+    { "blanks" },
+    { "cache" },
+    { "strbuf" },
+    { "subst" },
+    { "objecttype" },
+    { "constant" },
+    { "test" },
+    { "expr" },
+    { "vstack" },
+    { "attr" },
+    { "pstack" },
+    { "staticstr" },
 };
 
 static int  FcAllocCount, FcAllocMem;
@@ -174,6 +209,9 @@ static int  FcMemNotice = 1*1024*1024;
 
 static int  FcAllocNotify, FcFreeNotify;
 
+void
+FcValueListReport (void);
+
 void
 FcMemReport (void)
 {
@@ -182,13 +220,13 @@ FcMemReport (void)
     printf ("\t   Which       Alloc           Free           Active\n");
     printf ("\t           count   bytes   count   bytes   count   bytes\n");
     for (i = 0; i < FC_MEM_NUM; i++)
-       printf ("\t%8.8s%8d%8d%8d%8d%8d%8d\n",
+       printf ("%16.16s%8d%8d%8d%8d%8d%8d\n",
                FcInUse[i].name,
                FcInUse[i].alloc_count, FcInUse[i].alloc_mem,
                FcInUse[i].free_count, FcInUse[i].free_mem,
                FcInUse[i].alloc_count - FcInUse[i].free_count,
                FcInUse[i].alloc_mem - FcInUse[i].free_mem);
-    printf ("\t%8.8s%8d%8d%8d%8d%8d%8d\n",
+    printf ("%16.16s%8d%8d%8d%8d%8d%8d\n",
            "Total",
            FcAllocCount, FcAllocMem,
            FcFreeCount, FcFreeMem,
@@ -196,6 +234,7 @@ FcMemReport (void)
            FcAllocMem - FcFreeMem);
     FcAllocNotify = 0;
     FcFreeNotify = 0;
+    FcValueListReport ();
 }
 
 void