/* * Xephyr - A kdrive X server thats runs in a host X window. * Authored by Matthew Allum <mallum@o-hand.com> * * Copyright © 2004 Nokia * * 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 Nokia not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Nokia makes no * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * * NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL NOKIA 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. */ #ifndef _EPHYR_H_ #define _EPHYR_H_ #include <stdio.h> #include <unistd.h> #include <signal.h> #include <libgen.h> #include "os.h" /* for OsSignal() */ #include "kdrive.h" #include "hostx.h" #include "exa.h" #ifdef RANDR #include "randrstr.h" #endif #include "damage.h" typedef struct _ephyrPriv { CARD8 *base; int bytes_per_line; } EphyrPriv; typedef struct _ephyrFakexaPriv { ExaDriverPtr exa; Bool is_synced; /* The following are arguments and other information from Prepare* calls * which are stored for use in the inner calls. */ int op; PicturePtr pSrcPicture, pMaskPicture, pDstPicture; void *saved_ptrs[3]; PixmapPtr pDst, pSrc, pMask; GCPtr pGC; } EphyrFakexaPriv; typedef struct _ephyrScrPriv { Rotation randr; Bool shadow; DamagePtr pDamage; EphyrFakexaPriv *fakexa; } EphyrScrPriv; extern KdCardFuncs ephyrFuncs; extern KdKeyboardInfo *ephyrKbd; extern KdPointerInfo *ephyrMouse; extern miPointerScreenFuncRec ephyrPointerScreenFuncs; Bool ephyrInitialize(KdCardInfo * card, EphyrPriv * priv); Bool ephyrCardInit(KdCardInfo * card); Bool ephyrScreenInit(KdScreenInfo * screen); Bool ephyrScreenInitialize(KdScreenInfo * screen, EphyrScrPriv * scrpriv); Bool ephyrInitScreen(ScreenPtr pScreen); Bool ephyrFinishInitScreen(ScreenPtr pScreen); Bool ephyrCreateResources(ScreenPtr pScreen); void ephyrPreserve(KdCardInfo * card); Bool ephyrEnable(ScreenPtr pScreen); Bool ephyrDPMS(ScreenPtr pScreen, int mode); void ephyrDisable(ScreenPtr pScreen); void ephyrRestore(KdCardInfo * card); void ephyrScreenFini(KdScreenInfo * screen); void ephyrCardFini(KdCardInfo * card); void ephyrGetColors(ScreenPtr pScreen, int n, xColorItem * pdefs); void ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs); Bool ephyrMapFramebuffer(KdScreenInfo * screen); void *ephyrWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure); void ephyrSetScreenSizes(ScreenPtr pScreen); Bool ephyrUnmapFramebuffer(KdScreenInfo * screen); void ephyrUnsetInternalDamage(ScreenPtr pScreen); Bool ephyrSetInternalDamage(ScreenPtr pScreen); Bool ephyrCreateColormap(ColormapPtr pmap); void ephyrPoll(void); #ifdef RANDR Bool ephyrRandRGetInfo(ScreenPtr pScreen, Rotation * rotations); Bool ephyrRandRSetConfig(ScreenPtr pScreen, Rotation randr, int rate, RRScreenSizePtr pSize); Bool ephyrRandRInit(ScreenPtr pScreen); void ephyrShadowUpdate(ScreenPtr pScreen, shadowBufPtr pBuf); #endif void ephyrUpdateModifierState(unsigned int state); extern KdPointerDriver EphyrMouseDriver; extern KdKeyboardDriver EphyrKeyboardDriver; extern KdOsFuncs EphyrOsFuncs; extern Bool ephyrCursorInit(ScreenPtr pScreen); extern void ephyrCursorEnable(ScreenPtr pScreen); extern int ephyrBufferHeight(KdScreenInfo * screen); /* ephyr_draw.c */ Bool ephyrDrawInit(ScreenPtr pScreen); void ephyrDrawEnable(ScreenPtr pScreen); void ephyrDrawDisable(ScreenPtr pScreen); void ephyrDrawFini(ScreenPtr pScreen); /*ephyvideo.c*/ Bool ephyrInitVideo(ScreenPtr pScreen); #endif