|
Packit Service |
1b8107 |
/*
|
|
Packit Service |
1b8107 |
* Copyright © 2000 Keith Packard
|
|
Packit Service |
1b8107 |
*
|
|
Packit Service |
1b8107 |
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
Packit Service |
1b8107 |
* documentation for any purpose is hereby granted without fee, provided that
|
|
Packit Service |
1b8107 |
* the above copyright notice appear in all copies and that both that
|
|
Packit Service |
1b8107 |
* copyright notice and this permission notice appear in supporting
|
|
Packit Service |
1b8107 |
* documentation, and that the name of Keith Packard not be used in
|
|
Packit Service |
1b8107 |
* advertising or publicity pertaining to distribution of the software without
|
|
Packit Service |
1b8107 |
* specific, written prior permission. Keith Packard makes no
|
|
Packit Service |
1b8107 |
* representations about the suitability of this software for any purpose. It
|
|
Packit Service |
1b8107 |
* is provided "as is" without express or implied warranty.
|
|
Packit Service |
1b8107 |
*
|
|
Packit Service |
1b8107 |
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
Packit Service |
1b8107 |
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
Packit Service |
1b8107 |
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
Packit Service |
1b8107 |
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
Packit Service |
1b8107 |
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
Packit Service |
1b8107 |
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
Packit Service |
1b8107 |
* PERFORMANCE OF THIS SOFTWARE.
|
|
Packit Service |
1b8107 |
*/
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
#include "xftint.h"
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
static Bool _XftConfigInitialized;
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
_X_EXPORT Bool
|
|
Packit Service |
1b8107 |
XftInit (_Xconst char *config)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
if (_XftConfigInitialized)
|
|
Packit Service |
1b8107 |
return True;
|
|
Packit Service |
1b8107 |
_XftConfigInitialized = True;
|
|
Packit Service |
1b8107 |
if (!FcInit ())
|
|
Packit Service |
1b8107 |
return False;
|
|
Packit Service |
1b8107 |
_XftNameInit ();
|
|
Packit Service |
1b8107 |
return True;
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
_X_EXPORT int
|
|
Packit Service |
1b8107 |
XftGetVersion (void)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
return XftVersion;
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
static struct {
|
|
Packit Service |
1b8107 |
const char *name;
|
|
Packit Service |
1b8107 |
int alloc_count;
|
|
Packit Service |
1b8107 |
int alloc_mem;
|
|
Packit Service |
1b8107 |
int free_count;
|
|
Packit Service |
1b8107 |
int free_mem;
|
|
Packit Service |
1b8107 |
} XftInUse[XFT_MEM_NUM] = {
|
|
Packit Service |
1b8107 |
{ "XftDraw", 0, 0 },
|
|
Packit Service |
1b8107 |
{ "XftFont", 0 ,0 },
|
|
Packit Service |
1b8107 |
{ "XftFtFile", 0, 0 },
|
|
Packit Service |
1b8107 |
{ "XftGlyph", 0, 0 },
|
|
Packit Service |
1b8107 |
};
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
static int XftAllocCount, XftAllocMem;
|
|
Packit Service |
1b8107 |
static int XftFreeCount, XftFreeMem;
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
static const int XftMemNotice = 1*1024*1024;
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
static int XftAllocNotify, XftFreeNotify;
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
_X_HIDDEN void
|
|
Packit Service |
1b8107 |
XftMemReport (void)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
int i;
|
|
Packit Service |
1b8107 |
printf ("Xft Memory Usage:\n");
|
|
Packit Service |
1b8107 |
printf ("\t Which Alloc Free\n");
|
|
Packit Service |
1b8107 |
printf ("\t count bytes count bytes\n");
|
|
Packit Service |
1b8107 |
for (i = 0; i < XFT_MEM_NUM; i++)
|
|
Packit Service |
1b8107 |
printf ("\t%8.8s%8d%8d%8d%8d\n",
|
|
Packit Service |
1b8107 |
XftInUse[i].name,
|
|
Packit Service |
1b8107 |
XftInUse[i].alloc_count, XftInUse[i].alloc_mem,
|
|
Packit Service |
1b8107 |
XftInUse[i].free_count, XftInUse[i].free_mem);
|
|
Packit Service |
1b8107 |
printf ("\t%8.8s%8d%8d%8d%8d\n",
|
|
Packit Service |
1b8107 |
"Total",
|
|
Packit Service |
1b8107 |
XftAllocCount, XftAllocMem,
|
|
Packit Service |
1b8107 |
XftFreeCount, XftFreeMem);
|
|
Packit Service |
1b8107 |
XftAllocNotify = 0;
|
|
Packit Service |
1b8107 |
XftFreeNotify = 0;
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
_X_HIDDEN void
|
|
Packit Service |
1b8107 |
XftMemAlloc (int kind, int size)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
if (XftDebug() & XFT_DBG_MEMORY)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
XftInUse[kind].alloc_count++;
|
|
Packit Service |
1b8107 |
XftInUse[kind].alloc_mem += size;
|
|
Packit Service |
1b8107 |
XftAllocCount++;
|
|
Packit Service |
1b8107 |
XftAllocMem += size;
|
|
Packit Service |
1b8107 |
XftAllocNotify += size;
|
|
Packit Service |
1b8107 |
if (XftAllocNotify > XftMemNotice)
|
|
Packit Service |
1b8107 |
XftMemReport ();
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
|
|
Packit Service |
1b8107 |
_X_HIDDEN void
|
|
Packit Service |
1b8107 |
XftMemFree (int kind, int size)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
if (XftDebug() & XFT_DBG_MEMORY)
|
|
Packit Service |
1b8107 |
{
|
|
Packit Service |
1b8107 |
XftInUse[kind].free_count++;
|
|
Packit Service |
1b8107 |
XftInUse[kind].free_mem += size;
|
|
Packit Service |
1b8107 |
XftFreeCount++;
|
|
Packit Service |
1b8107 |
XftFreeMem += size;
|
|
Packit Service |
1b8107 |
XftFreeNotify += size;
|
|
Packit Service |
1b8107 |
if (XftFreeNotify > XftMemNotice)
|
|
Packit Service |
1b8107 |
XftMemReport ();
|
|
Packit Service |
1b8107 |
}
|
|
Packit Service |
1b8107 |
}
|