Edit

IABSD.fr/xenocara/lib/libXft/src/xftinit.c

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2006-11-25 16:46:32
    Hash : 606ceaa6
    Message : import from X.Org 7.2RC1

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