summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@nwnk.net>2006-04-04 14:39:06 +0000
committerAdam Jackson <ajax@nwnk.net>2006-04-04 14:39:06 +0000
commit83ea57bcc82f478a7ecdcd6ed73ca4be01cd9c26 (patch)
treeffe00e26c9a07550d178fe58aa1391a602790c23
parent4c7da861185080d15b3ff4301af4af0e85a71f93 (diff)
Bug #5729: Convert xf8_16bpp to fb. chips(4) users please test.
-rw-r--r--ChangeLog9
-rw-r--r--hw/xfree86/xf8_16bpp/Makefile.am9
-rw-r--r--hw/xfree86/xf8_16bpp/cfb8_16.h86
-rw-r--r--hw/xfree86/xf8_16bpp/cfb8_16module.c41
-rw-r--r--hw/xfree86/xf8_16bpp/cfbscrinit.c376
-rw-r--r--hw/xfree86/xf8_16bpp/cfbwindow.c181
6 files changed, 37 insertions, 665 deletions
diff --git a/ChangeLog b/ChangeLog
index 667559a9f..38768a50d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2006-04-04 Adam Jackson <ajax@freedesktop.org>
+ * hw/xfree86/xf8_16bpp/Makefile.am:
+ * hw/xfree86/xf8_16bpp/cfb8_16.h:
+ * hw/xfree86/xf8_16bpp/cfb8_16module.c:
+ * hw/xfree86/xf8_16bpp/cfbscrinit.c:
+ * hw/xfree86/xf8_16bpp/cfbwindow.c:
+ Bug #5729: Convert xf8_16bpp to fb. chips(4) users please test.
+
+2006-04-04 Adam Jackson <ajax@freedesktop.org>
+
* hw/darwin/darwin.c:
* hw/xfree86/common/xf86Init.c:
Bug #5300: Fix missing spaces in the Build OS line in the log.
diff --git a/hw/xfree86/xf8_16bpp/Makefile.am b/hw/xfree86/xf8_16bpp/Makefile.am
index 0475d85ba..6538d1fab 100644
--- a/hw/xfree86/xf8_16bpp/Makefile.am
+++ b/hw/xfree86/xf8_16bpp/Makefile.am
@@ -2,15 +2,10 @@ module_LTLIBRARIES = libxf8_16bpp.la
sdk_HEADERS = cfb8_16.h
-INCLUDES = $(XORG_INCS) -I$(top_srcdir)/mfb -I$(top_srcdir)/cfb
+INCLUDES = $(XORG_INCS) -I$(top_srcdir)/fb
AM_CFLAGS = $(XORG_CFLAGS) @SERVER_DEFINES@ @MODULE_DEFINES@ @LOADER_DEFINES@
libxf8_16bpp_la_LDFLAGS = -avoid-version
-libxf8_16bpp_la_SOURCES = \
- cfb8_16module.c \
- cfbscrinit.c \
- cfbwindow.c
-
-libxf8_16bpp_la_LIBADD = $(top_builddir)/cfb16/libcfb16.la
+libxf8_16bpp_la_SOURCES = xf8_16module.c
diff --git a/hw/xfree86/xf8_16bpp/cfb8_16.h b/hw/xfree86/xf8_16bpp/cfb8_16.h
index 97586ba01..3a3a68da7 100644
--- a/hw/xfree86/xf8_16bpp/cfb8_16.h
+++ b/hw/xfree86/xf8_16bpp/cfb8_16.h
@@ -1,4 +1,24 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_16bpp/cfb8_16.h,v 1.1 1999/01/31 12:22:16 dawes Exp $ */
+/*
+ * Copyright 2006 Adam Jackson.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
#ifndef _CFB8_16_H
#define _CFB8_16_H
@@ -6,65 +26,11 @@
#include "regionstr.h"
#include "windowstr.h"
-typedef struct {
- pointer pix8;
- int width8;
- pointer pix16;
- int width16;
- unsigned char key;
-} cfb8_16ScreenRec, *cfb8_16ScreenPtr;
+/* this has to stay misnamed for ABI reasons */
-extern int cfb8_16ScreenPrivateIndex; /* XXX */
-extern int cfb8_16GetScreenPrivateIndex(void);
-
-Bool
-cfb8_16ScreenInit (
- ScreenPtr pScreen,
- pointer pbits16,
- pointer pbits8,
- int xsize, int ysize,
- int dpix, int dpiy,
- int width16,
- int width8
-);
-
-void
-cfb8_16PaintWindow (
- WindowPtr pWin,
- RegionPtr pRegion,
- int what
-);
-
-Bool cfb8_16CreateWindow(WindowPtr pWin);
-Bool cfb8_16DestroyWindow(WindowPtr pWin);
-
-Bool
-cfb8_16PositionWindow(
- WindowPtr pWin,
- int x, int y
-);
-
-void
-cfb8_16CopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc
-);
-
-Bool
-cfb8_16ChangeWindowAttributes(
- WindowPtr pWin,
- unsigned long mask
-);
-
-void
-cfb8_16WindowExposures(
- WindowPtr pWin,
- RegionPtr pReg,
- RegionPtr pOtherReg
-);
-
-#define CFB8_16_GET_SCREEN_PRIVATE(pScreen)\
- (cfb8_16ScreenPtr)((pScreen)->devPrivates[cfb8_16GetScreenPrivateIndex()].ptr)
+_X_EXPORT Bool
+cfb8_16ScreenInit(ScreenPtr pScreen, pointer pbits16, pointer pbits8,
+ int xsize, int ysize, int dpix, int dpiy,
+ int width16, int width8);
#endif /* _CFB8_16_H */
diff --git a/hw/xfree86/xf8_16bpp/cfb8_16module.c b/hw/xfree86/xf8_16bpp/cfb8_16module.c
deleted file mode 100644
index 93f9b0126..000000000
--- a/hw/xfree86/xf8_16bpp/cfb8_16module.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $XFree86$ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifdef XFree86LOADER
-
-#include "xf86Module.h"
-
-static MODULESETUPPROTO(xf8_16bppSetup);
-
-static XF86ModuleVersionInfo VersRec =
-{
- "xf8_16bpp",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XORG_VERSION_CURRENT,
- 1, 0, 0,
- ABI_CLASS_ANSIC, /* Only need the ansic layer */
- ABI_ANSIC_VERSION,
- NULL,
- {0,0,0,0} /* signature, to be patched into the file by a tool */
-};
-
-XF86ModuleData xf8_16bppModuleData = { &VersRec, xf8_16bppSetup, NULL };
-
-static pointer
-xf8_16bppSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- if (!LoadSubModule(module, "cfb", NULL, NULL, NULL, NULL,
- errmaj, errmin))
- return NULL;
- if (!LoadSubModule(module, "cfb16", NULL, NULL, NULL, NULL,
- errmaj, errmin))
- return NULL;
- return (pointer)1; /* non-NULL required to indicate success */
-}
-
-#endif
diff --git a/hw/xfree86/xf8_16bpp/cfbscrinit.c b/hw/xfree86/xf8_16bpp/cfbscrinit.c
deleted file mode 100644
index 00b7b6052..000000000
--- a/hw/xfree86/xf8_16bpp/cfbscrinit.c
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- Copyright (C) 1999. The XFree86 Project Inc.
-
- Written by Mark Vojkovich (mvojkovi@ucsd.edu)
-*/
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_16bpp/cfbscrinit.c,v 1.7 2000/01/21 01:12:24 dawes Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include "misc.h"
-#include "servermd.h"
-#include "scrnintstr.h"
-#include "pixmapstr.h"
-#include "resource.h"
-#include "colormap.h"
-#include "colormapst.h"
-#define PSZ 8
-#include "cfb.h"
-#undef PSZ
-#include "cfb16.h"
-#include "cfb8_16.h"
-#include "mi.h"
-#include "micmap.h"
-#include "mistruct.h"
-#include "gcstruct.h"
-#include "dix.h"
-#include "mibstore.h"
-#include "xf86str.h"
-#include "xf86.h"
-
-/* CAUTION: We require that cfb8 and cfb16 were NOT
- compiled with CFB_NEED_SCREEN_PRIVATE */
-
-int cfb8_16ScreenPrivateIndex;
-
-int cfb8_16GetScreenPrivateIndex(void) { return cfb8_16ScreenPrivateIndex; }
-
-static unsigned long cfb8_16Generation = 0;
-
-static PixmapPtr cfb8_16GetWindowPixmap(WindowPtr pWin);
-static void
-cfb8_16SaveAreas(
- PixmapPtr pPixmap,
- RegionPtr prgnSave,
- int xorg,
- int yorg,
- WindowPtr pWin
-);
-
-static void
-cfb8_16RestoreAreas(
- PixmapPtr pPixmap,
- RegionPtr prgnRestore,
- int xorg,
- int yorg,
- WindowPtr pWin
-);
-
-static BSFuncRec cfb8_16BSFuncRec = {
- cfb8_16SaveAreas,
- cfb8_16RestoreAreas,
- (BackingStoreSetClipmaskRgnProcPtr) 0,
- (BackingStoreGetImagePixmapProcPtr) 0,
- (BackingStoreGetSpansPixmapProcPtr) 0,
-};
-
-static void
-cfb8_16GetSpans(
- DrawablePtr pDraw,
- int wMax,
- DDXPointPtr ppt,
- int *pwidth,
- int nspans,
- char *pchardstStart
-);
-
-static void
-cfb8_16GetImage (
- DrawablePtr pDraw,
- int sx, int sy, int w, int h,
- unsigned int format,
- unsigned long planeMask,
- char *pdstLine
-);
-
-static Bool cfb8_16CreateGC(GCPtr pGC);
-static void cfb8_16EnableDisableFBAccess(int index, Bool enable);
-
-
-static Bool
-cfb8_16AllocatePrivates(ScreenPtr pScreen)
-{
- cfb8_16ScreenPtr pScreenPriv;
-
- if(cfb8_16Generation != serverGeneration) {
- if((cfb8_16ScreenPrivateIndex = AllocateScreenPrivateIndex()) < 0)
- return FALSE;
- cfb8_16Generation = serverGeneration;
- }
-
- if (!(pScreenPriv = xalloc(sizeof(cfb8_16ScreenRec))))
- return FALSE;
-
- pScreen->devPrivates[cfb8_16ScreenPrivateIndex].ptr = (pointer)pScreenPriv;
-
-
- /* All cfb will have the same GC and Window private indicies */
- if(!mfbAllocatePrivates(pScreen,&cfbWindowPrivateIndex, &cfbGCPrivateIndex))
- return FALSE;
-
- /* The cfb indicies are the mfb indicies. Reallocating them resizes them */
- if(!AllocateWindowPrivate(pScreen,cfbWindowPrivateIndex,sizeof(cfbPrivWin)))
- return FALSE;
-
- if(!AllocateGCPrivate(pScreen, cfbGCPrivateIndex, sizeof(cfbPrivGC)))
- return FALSE;
-
- return TRUE;
-}
-
-static Bool
-cfb8_16SetupScreen(
- ScreenPtr pScreen,
- int xsize, int ysize, /* in pixels */
- int dpix, int dpiy
-){
- if (!cfb8_16AllocatePrivates(pScreen))
- return FALSE;
- pScreen->defColormap = FakeClientID(0);
- /* let CreateDefColormap do whatever it wants for pixels */
- pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
- pScreen->QueryBestSize = mfbQueryBestSize;
- /* SaveScreen */
- pScreen->GetImage = cfb8_16GetImage;
- pScreen->GetSpans = cfb8_16GetSpans;
- pScreen->CreateWindow = cfb8_16CreateWindow;
- pScreen->DestroyWindow = cfb8_16DestroyWindow;
- pScreen->PositionWindow = cfb8_16PositionWindow;
- pScreen->ChangeWindowAttributes = cfb8_16ChangeWindowAttributes;
- pScreen->RealizeWindow = cfb16MapWindow; /* OK */
- pScreen->UnrealizeWindow = cfb16UnmapWindow; /* OK */
- pScreen->PaintWindowBackground = cfb8_16PaintWindow;
- pScreen->PaintWindowBorder = cfb8_16PaintWindow;
- pScreen->CopyWindow = cfb8_16CopyWindow;
- pScreen->CreatePixmap = cfb16CreatePixmap; /* OK */
- pScreen->DestroyPixmap = cfb16DestroyPixmap; /* OK */
- pScreen->RealizeFont = mfbRealizeFont;
- pScreen->UnrealizeFont = mfbUnrealizeFont;
- pScreen->CreateGC = cfb8_16CreateGC;
- pScreen->CreateColormap = miInitializeColormap;
- pScreen->DestroyColormap = (DestroyColormapProcPtr)NoopDDA;
- pScreen->InstallColormap = miInstallColormap;
- pScreen->UninstallColormap = miUninstallColormap;
- pScreen->ListInstalledColormaps = miListInstalledColormaps;
- pScreen->StoreColors = (StoreColorsProcPtr)NoopDDA;
- pScreen->ResolveColor = miResolveColor;
- pScreen->BitmapToRegion = mfbPixmapToRegion;
-
- mfbRegisterCopyPlaneProc (pScreen, cfbCopyPlane);
- return TRUE;
-}
-
-static Bool
-cfb8_16CreateScreenResources(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- cfb8_16ScreenPtr pScreenPriv = CFB8_16_GET_SCREEN_PRIVATE(pScreen);
- PixmapPtr pix8, pix16;
-
- xfree(pScreen->devPrivate); /* freeing miScreenInitParmsRec */
-
- pix8 = (*pScreen->CreatePixmap)(pScreen, 0, 0, 8);
- pix16 = (*pScreen->CreatePixmap)(pScreen, 0, 0, pScrn->depth);
- if(!pix16 || !pix8)
- return FALSE;
-
- pix8->drawable.width = pScreen->width;
- pix8->drawable.height = pScreen->height;
- pix8->devKind = pScreenPriv->width8;
- pix8->devPrivate.ptr = pScreenPriv->pix8;
-
- pix16->drawable.width = pScreen->width;
- pix16->drawable.height = pScreen->height;
- pix16->devKind = pScreenPriv->width16 * 2;
- pix16->devPrivate.ptr = pScreenPriv->pix16;
-
- pScreenPriv->pix8 = (pointer)pix8;
- pScreenPriv->pix16 = (pointer)pix16;
-
- pScreen->devPrivate = (pointer)pix16;
-
- return TRUE;
-}
-
-
-static Bool
-cfb8_16CloseScreen (int i, ScreenPtr pScreen)
-{
- cfb8_16ScreenPtr pScreenPriv = CFB8_16_GET_SCREEN_PRIVATE(pScreen);
-
- xfree((pointer) pScreenPriv);
-
- return(cfb16CloseScreen(i, pScreen));
-}
-
-static Bool
-cfb8_16FinishScreenInit(
- ScreenPtr pScreen,
- int xsize, int ysize, /* in pixels */
- int dpix, int dpiy /* dots per inch */
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- VisualPtr visuals;
- DepthPtr depths;
- int nvisuals;
- int ndepths;
- int rootdepth;
- VisualID defaultVisual;
-
- rootdepth = 0;
- if (!miInitVisuals (&visuals, &depths, &nvisuals, &ndepths, &rootdepth,
- &defaultVisual,((unsigned long)1<<(16-1)), 8, -1))
- return FALSE;
- if (! miScreenInit(pScreen, NULL, xsize, ysize, dpix, dpiy, 0,
- rootdepth, ndepths, depths,
- defaultVisual, nvisuals, visuals))
- return FALSE;
-
- pScreen->BackingStoreFuncs = cfb8_16BSFuncRec;
- pScreen->CreateScreenResources = cfb8_16CreateScreenResources;
- pScreen->CloseScreen = cfb8_16CloseScreen;
- pScreen->GetWindowPixmap = cfb8_16GetWindowPixmap;
- pScreen->WindowExposures = cfb8_16WindowExposures;
-
- pScrn->EnableDisableFBAccess = cfb8_16EnableDisableFBAccess;
-
- return TRUE;
-}
-
-Bool
-cfb8_16ScreenInit(
- ScreenPtr pScreen,
- pointer pbits16, /* pointer to screen bitmap */
- pointer pbits8,
- int xsize, int ysize, /* in pixels */
- int dpix, int dpiy, /* dots per inch */
- int width16, /* pixel width of frame buffer */
- int width8
-){
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- cfb8_16ScreenPtr pScreenPriv;
-
- if (!cfb8_16SetupScreen(pScreen, xsize, ysize, dpix, dpiy))
- return FALSE;
-
- pScreenPriv = CFB8_16_GET_SCREEN_PRIVATE(pScreen);
- pScreenPriv->pix8 = pbits8;
- pScreenPriv->pix16 = pbits16;
- pScreenPriv->width8 = width8;
- pScreenPriv->width16 = width16;
- pScreenPriv->key = pScrn->colorKey;
-
- return cfb8_16FinishScreenInit(pScreen, xsize, ysize, dpix, dpiy);
-}
-
-
-static PixmapPtr
-cfb8_16GetWindowPixmap(WindowPtr pWin)
-{
- cfb8_16ScreenPtr pScreenPriv =
- CFB8_16_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
-
- return((pWin->drawable.bitsPerPixel == 16) ?
- (PixmapPtr)pScreenPriv->pix16 : (PixmapPtr)pScreenPriv->pix8);
-}
-
-static void
-cfb8_16GetImage (
- DrawablePtr pDraw,
- int sx, int sy, int w, int h,
- unsigned int format,
- unsigned long planemask,
- char *pdstLine
-){
- if(!w || !h) return;
-
- if(pDraw->bitsPerPixel == 16)
- cfb16GetImage(pDraw, sx, sy, w, h, format, planemask, pdstLine);
- else
- cfbGetImage(pDraw, sx, sy, w, h, format, planemask, pdstLine);
-}
-
-static void
-cfb8_16GetSpans(
- DrawablePtr pDraw,
- int wMax,
- DDXPointPtr ppt,
- int *pwidth,
- int nspans,
- char *pDst
-){
- if(pDraw->bitsPerPixel == 16)
- cfb16GetSpans(pDraw, wMax, ppt, pwidth, nspans, pDst);
- else
- cfbGetSpans(pDraw, wMax, ppt, pwidth, nspans, pDst);
-}
-
-static void
-cfb8_16SaveAreas(
- PixmapPtr pPixmap,
- RegionPtr prgnSave,
- int xorg,
- int yorg,
- WindowPtr pWin
-){
- if(pWin->drawable.bitsPerPixel == 16)
- cfb16SaveAreas(pPixmap, prgnSave, xorg, yorg, pWin);
- else
- cfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin);
-}
-
-static void
-cfb8_16RestoreAreas(
- PixmapPtr pPixmap,
- RegionPtr prgnRestore,
- int xorg,
- int yorg,
- WindowPtr pWin
-){
- if(pWin->drawable.bitsPerPixel == 16)
- cfb16RestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin);
- else
- cfbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin);
-}
-
-
-static Bool
-cfb8_16CreateGC(GCPtr pGC)
-{
- if(pGC->depth == 8)
- return(cfbCreateGC(pGC));
- else
- return(cfb16CreateGC(pGC));
-}
-
-static void
-cfb8_16EnableDisableFBAccess(int index, Bool enable)
-{
- ScreenPtr pScreen = xf86Screens[index]->pScreen;
- cfb8_16ScreenPtr pScreenPriv = CFB8_16_GET_SCREEN_PRIVATE(pScreen);
- static DevUnion devPrivates8[MAXSCREENS];
- static DevUnion devPrivates16[MAXSCREENS];
- PixmapPtr pix8, pix16;
-
- pix8 = (PixmapPtr) pScreenPriv->pix8;
- pix16 = (PixmapPtr) pScreenPriv->pix16;
-
- if (enable)
- {
- pix8->devPrivate = devPrivates8[index];
- pix16->devPrivate = devPrivates16[index];
- }
- xf86EnableDisableFBAccess (index, enable);
- if (!enable)
- {
- devPrivates8[index] = pix8->devPrivate;
- pix8->devPrivate.ptr = 0;
- devPrivates16[index] = pix16->devPrivate;
- pix16->devPrivate.ptr = 0;
- }
-}
diff --git a/hw/xfree86/xf8_16bpp/cfbwindow.c b/hw/xfree86/xf8_16bpp/cfbwindow.c
deleted file mode 100644
index 796311170..000000000
--- a/hw/xfree86/xf8_16bpp/cfbwindow.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- Copyright (C) 1999. The XFree86 Project Inc.
-
- Written by Mark Vojkovich (mvojkovi@ucsd.edu)
-*/
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/xf8_16bpp/cfbwindow.c,v 1.4tsi Exp $ */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include <X11/X.h>
-#include "scrnintstr.h"
-#include "windowstr.h"
-#define PSZ 8
-#include "cfb.h"
-#undef PSZ
-#include "cfb16.h"
-#include "cfb8_16.h"
-#include "mistruct.h"
-#include "regionstr.h"
-#include "cfbmskbits.h"
-#include "xf86.h"
-
-/* We don't bother with cfb's fastBackground/Border so we don't
- need to use the Window privates */
-
-
-Bool
-cfb8_16CreateWindow(WindowPtr pWin)
-{
- cfbPrivWin *pPrivWin = cfbGetWindowPrivate(pWin);
-
- pPrivWin->pRotatedBorder = NullPixmap;
- pPrivWin->pRotatedBackground = NullPixmap;
- pPrivWin->fastBackground = FALSE;
- pPrivWin->fastBorder = FALSE;
- pPrivWin->oldRotate.x = 0;
- pPrivWin->oldRotate.y = 0;
-
- return TRUE;
-}
-
-
-Bool
-cfb8_16DestroyWindow(WindowPtr pWin)
-{
- return TRUE;
-}
-
-Bool
-cfb8_16PositionWindow(
- WindowPtr pWin,
- int x, int y
-){
- return TRUE;
-}
-
-
-void
-cfb8_16CopyWindow(
- WindowPtr pWin,
- DDXPointRec ptOldOrg,
- RegionPtr prgnSrc
-){
- ScreenPtr pScreen = pWin->drawable.pScreen;
- cfb8_16ScreenPtr pScreenPriv =
- CFB8_16_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- DDXPointPtr ppt, pptSrc;
- RegionRec rgnDst;
- BoxPtr pbox;
- int i, nbox, dx, dy;
- WindowPtr pRoot = WindowTable[pScreen->myNum];
-
- REGION_NULL(pScreen, &rgnDst);
-
- dx = ptOldOrg.x - pWin->drawable.x;
- dy = ptOldOrg.y - pWin->drawable.y;
- REGION_TRANSLATE(pScreen, prgnSrc, -dx, -dy);
- REGION_INTERSECT(pScreen, &rgnDst, &pWin->borderClip, prgnSrc);
-
- nbox = REGION_NUM_RECTS(&rgnDst);
- if(nbox &&
- (pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec)))) {
-
- pbox = REGION_RECTS(&rgnDst);
- for (i = nbox, ppt = pptSrc; i--; ppt++, pbox++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
- cfbDoBitbltCopy((DrawablePtr)pRoot, (DrawablePtr)pRoot,
- GXcopy, &rgnDst, pptSrc, ~0L);
- if(pWin->drawable.bitsPerPixel == 16)
- cfb16DoBitbltCopy((DrawablePtr)pScreenPriv->pix16,
- (DrawablePtr)pScreenPriv->pix16,
- GXcopy, &rgnDst, pptSrc, ~0L);
-
- DEALLOCATE_LOCAL(pptSrc);
- }
-
- REGION_UNINIT(pScreen, &rgnDst);
-
- if(pWin->drawable.depth == 8) {
- REGION_NULL(pScreen, &rgnDst);
- miSegregateChildren(pWin, &rgnDst, pScrn->depth);
- if(REGION_NOTEMPTY(pScreen, &rgnDst)) {
- REGION_INTERSECT(pScreen, &rgnDst, &rgnDst, prgnSrc);
- nbox = REGION_NUM_RECTS(&rgnDst);
- if(nbox &&
- (pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec)))){
-
- pbox = REGION_RECTS(&rgnDst);
- for (i = nbox, ppt = pptSrc; i--; ppt++, pbox++) {
- ppt->x = pbox->x1 + dx;
- ppt->y = pbox->y1 + dy;
- }
-
- cfb16DoBitbltCopy((DrawablePtr)pScreenPriv->pix16,
- (DrawablePtr)pScreenPriv->pix16,
- GXcopy, &rgnDst, pptSrc, ~0L);
- DEALLOCATE_LOCAL(pptSrc);
- }
- }
- REGION_UNINIT(pScreen, &rgnDst);
- }
-}
-
-Bool
-cfb8_16ChangeWindowAttributes(
- WindowPtr pWin,
- unsigned long mask
-){
- if (pWin->drawable.bitsPerPixel == 16)
- return cfb16ChangeWindowAttributes(pWin,mask);
- else
- return cfbChangeWindowAttributes(pWin,mask);
-}
-
-void
-cfb8_16WindowExposures(
- WindowPtr pWin,
- RegionPtr pReg,
- RegionPtr pOtherReg
-){
-
- if(REGION_NUM_RECTS(pReg) && (pWin->drawable.bitsPerPixel == 16)) {
- cfb8_16ScreenPtr pScreenPriv =
- CFB8_16_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
-
- cfbFillBoxSolid((DrawablePtr)pScreenPriv->pix8,
- REGION_NUM_RECTS(pReg), REGION_RECTS(pReg),
- pScreenPriv->key);
- }
-
- miWindowExposures(pWin, pReg, pOtherReg);
-}
-
-
-void
-cfb8_16PaintWindow (
- WindowPtr pWin,
- RegionPtr pRegion,
- int what
-){
- if(pWin->drawable.bitsPerPixel == 16) {
- cfb16PaintWindow(pWin, pRegion, what);
- if(what == PW_BORDER) {
- cfb8_16ScreenPtr pScreenPriv =
- CFB8_16_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);
-
- cfbFillBoxSolid((DrawablePtr)pScreenPriv->pix8,
- REGION_NUM_RECTS(pRegion), REGION_RECTS(pRegion),
- pScreenPriv->key);
- }
- } else
- cfbPaintWindow(pWin, pRegion, what);
-
-}
-