diff options
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c')
-rw-r--r-- | xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c b/xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c new file mode 100644 index 000000000..d1dece31b --- /dev/null +++ b/xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c @@ -0,0 +1,59 @@ +/* ********************************************************** + * Copyright (C) 1998-2001 VMware, Inc. + * All Rights Reserved + * **********************************************************/ +#ifdef VMX86_DEVEL +char rcsId_vmwareimage[] = + + "Id: vmwareimage.c,v 1.3 2001/01/26 23:32:16 yoel Exp $"; +#endif +/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/vmware/vmwareimage.c,v 1.1 2001/04/05 19:29:44 dawes Exp $ */ + +#include "vmware.h" + +/* + * vmwarePutImage does not optimize ops because a downstream call is made + * to CopyArea. + */ + +static __inline void +vmwareImageToBox(BoxPtr BB, DrawablePtr pDrawable, int x, int y, int w, int h) +{ + BB->x2 = (BB->x1 = pDrawable->x + x) + w; + BB->y2 = (BB->y1 = pDrawable->y + y) + h; +} + +void +vmwarePutImage(DrawablePtr pDrawable, + GCPtr pGC, + int depth, + int x, int y, int w, int h, int leftPad, int format, char *pImage) +{ + TRACEPOINT + + GC_FUNC_WRAPPER(pDrawable->type == DRAWABLE_WINDOW, + pGC->pScreen, + vmwareImageToBox(&BB, pDrawable, x, y, w, h), + GC_OPS(pGC)->PutImage(pDrawable, pGC, depth, x, y, + w, h, leftPad, format, pImage)); +} + +void +vmwareGetImage(DrawablePtr pDrawable, + int x, + int y, + int w, + int h, unsigned int format, unsigned long planeMask, char *pBinImage) +{ + VMWAREPtr pVMWARE = VMWAREPTR(infoFromScreen(pDrawable->pScreen)); + + TRACEPOINT + + VM_FUNC_WRAPPER(pDrawable->type == DRAWABLE_WINDOW, + vmwareImageToBox(&BB, pDrawable, x, y, w, h), + pVMWARE->ScrnFuncs.GetImage(pDrawable, x, y, w, h, format, planeMask, pBinImage)); +} + + + + |