#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#include <X11/X.h>
#include <X11/Xmd.h>
#include "servermd.h"
#include "scrnintstr.h"
#include "pixmapstr.h"
#include "resource.h"
#include "colormap.h"
#include "colormapst.h"
#include "cfb.h"
#include "mi.h"
#include "mistruct.h"
#include "dix.h"
#include "cfbmskbits.h"
#include "mibstore.h"
#if 1 || PSZ==8
int cfbWindowPrivateIndex = -1;
int cfbGCPrivateIndex = -1;
#endif
#ifdef CFB_NEED_SCREEN_PRIVATE
int cfbScreenPrivateIndex = -1;
static unsigned long cfbGeneration = 0;
#endif
Bool
cfbAllocatePrivates(pScreen, window_index, gc_index)
ScreenPtr pScreen;
int *window_index, *gc_index;
{
if (!window_index || !gc_index ||
(*window_index == -1 && *gc_index == -1))
{
if (!mfbAllocatePrivates(pScreen,
&cfbWindowPrivateIndex, &cfbGCPrivateIndex))
return FALSE;
if (window_index)
*window_index = cfbWindowPrivateIndex;
if (gc_index)
*gc_index = cfbGCPrivateIndex;
}
else
{
cfbWindowPrivateIndex = *window_index;
cfbGCPrivateIndex = *gc_index;
}
if (!AllocateWindowPrivate(pScreen, cfbWindowPrivateIndex,
sizeof(cfbPrivWin)) ||
!AllocateGCPrivate(pScreen, cfbGCPrivateIndex, sizeof(cfbPrivGC)))
return FALSE;
#ifdef CFB_NEED_SCREEN_PRIVATE
if (cfbGeneration != serverGeneration)
{
cfbScreenPrivateIndex = AllocateScreenPrivateIndex ();
cfbGeneration = serverGeneration;
}
if (cfbScreenPrivateIndex == -1)
return FALSE;
#endif
return TRUE;
}