xserver-multidpi/hw/kdrive/ephyr/ephyr.h

239 lines
5.5 KiB
C
Raw Normal View History

2004-08-31 18:33:05 +02:00
/*
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
* Copyright © 2004 Nokia
2004-08-31 18:33:05 +02:00
*
* 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 <xcb/xcb_image.h>
2004-08-31 18:33:05 +02:00
#include "os.h" /* for OsSignal() */
2004-08-31 18:33:05 +02:00
#include "kdrive.h"
#include "hostx.h"
#include "exa.h"
2004-08-31 18:33:05 +02:00
#ifdef RANDR
#include "randrstr.h"
#endif
#include "damage.h"
2004-08-31 18:33:05 +02:00
typedef struct _ephyrPriv {
CARD8 *base;
int bytes_per_line;
2004-08-31 18:33:05 +02:00
} 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;
2004-08-31 18:33:05 +02:00
typedef struct _ephyrScrPriv {
/* ephyr server info */
Rotation randr;
Bool shadow;
DamagePtr pDamage;
EphyrFakexaPriv *fakexa;
/* Host X window info */
xcb_window_t win;
xcb_window_t win_pre_existing; /* Set via -parent option like xnest */
xcb_window_t peer_win; /* Used for GL; should be at most one */
xcb_image_t *ximg;
Bool win_explicit_position;
int win_x, win_y;
int win_width, win_height;
int server_depth;
const char *output; /* Set via -output option */
unsigned char *fb_data; /* only used when host bpp != server bpp */
xcb_shm_segment_info_t shminfo;
KdScreenInfo *screen;
int mynum; /* Screen number */
/**
* Per-screen Xlib-using state for glamor (private to
* ephyr_glamor_glx.c)
*/
struct ephyr_glamor *glamor;
2004-08-31 18:33:05 +02:00
} EphyrScrPriv;
extern KdCardFuncs ephyrFuncs;
extern KdKeyboardInfo *ephyrKbd;
extern KdPointerInfo *ephyrMouse;
2004-08-31 18:33:05 +02:00
extern miPointerScreenFuncRec ephyrPointerScreenFuncs;
2004-08-31 18:33:05 +02:00
Bool
ephyrInitialize(KdCardInfo * card, EphyrPriv * priv);
2004-08-31 18:33:05 +02:00
Bool
ephyrCardInit(KdCardInfo * card);
2004-08-31 18:33:05 +02:00
Bool
ephyrScreenInitialize(KdScreenInfo *screen);
2004-08-31 18:33:05 +02:00
Bool
ephyrInitScreen(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
Bool
ephyrFinishInitScreen(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
Bool
ephyrCreateResources(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
void
ephyrPreserve(KdCardInfo * card);
2004-08-31 18:33:05 +02:00
Bool
ephyrEnable(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
Bool
ephyrDPMS(ScreenPtr pScreen, int mode);
2004-08-31 18:33:05 +02:00
void
ephyrDisable(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
void
ephyrRestore(KdCardInfo * card);
2004-08-31 18:33:05 +02:00
void
ephyrScreenFini(KdScreenInfo * screen);
2004-08-31 18:33:05 +02:00
void
ephyrCloseScreen(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
void
ephyrCardFini(KdCardInfo * card);
2004-08-31 18:33:05 +02:00
void
ephyrGetColors(ScreenPtr pScreen, int n, xColorItem * pdefs);
2004-08-31 18:33:05 +02:00
void
ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs);
2004-08-31 18:33:05 +02:00
Bool
ephyrMapFramebuffer(KdScreenInfo * screen);
2004-08-31 18:33:05 +02:00
void *ephyrWindowLinear(ScreenPtr pScreen,
CARD32 row,
CARD32 offset, int mode, CARD32 *size, void *closure);
2004-08-31 18:33:05 +02:00
void
ephyrSetScreenSizes(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
Bool
ephyrUnmapFramebuffer(KdScreenInfo * screen);
2004-08-31 18:33:05 +02:00
2005-08-05 11:08:32 +02:00
void
ephyrUnsetInternalDamage(ScreenPtr pScreen);
2005-08-05 11:08:32 +02:00
2004-08-31 18:33:05 +02:00
Bool
ephyrSetInternalDamage(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
Bool
ephyrCreateColormap(ColormapPtr pmap);
2004-08-31 18:33:05 +02:00
void
ephyrPoll(void);
2004-08-31 18:33:05 +02:00
#ifdef RANDR
Bool
ephyrRandRGetInfo(ScreenPtr pScreen, Rotation * rotations);
2004-08-31 18:33:05 +02:00
Bool
ephyrRandRSetConfig(ScreenPtr pScreen,
Rotation randr, int rate, RRScreenSizePtr pSize);
2004-08-31 18:33:05 +02:00
Bool
ephyrRandRInit(ScreenPtr pScreen);
2004-08-31 18:33:05 +02:00
void
ephyrShadowUpdate(ScreenPtr pScreen, shadowBufPtr pBuf);
2004-08-31 18:33:05 +02:00
#endif
void
ephyrUpdateModifierState(unsigned int state);
extern KdPointerDriver EphyrMouseDriver;
2004-08-31 18:33:05 +02:00
extern KdKeyboardDriver EphyrKeyboardDriver;
2004-08-31 18:33:05 +02:00
extern KdOsFuncs EphyrOsFuncs;
2004-08-31 18:33:05 +02:00
extern Bool ephyrCursorInit(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);
2004-08-31 18:33:05 +02:00
/* hostx.c glamor support */
Bool ephyr_glamor_init(ScreenPtr pScreen);
Bool ephyr_glamor_create_screen_resources(ScreenPtr pScreen);
void ephyr_glamor_enable(ScreenPtr pScreen);
void ephyr_glamor_disable(ScreenPtr pScreen);
void ephyr_glamor_fini(ScreenPtr pScreen);
void ephyr_glamor_host_paint_rect(ScreenPtr pScreen);
2007-07-21 12:08:39 +02:00
/*ephyvideo.c*/
Bool ephyrInitVideo(ScreenPtr pScreen);
2007-07-21 12:08:39 +02:00
/* ephyr_glamor_xv.c */
#ifdef GLAMOR
void ephyr_glamor_xv_init(ScreenPtr screen);
#else /* !GLAMOR */
static inline void
ephyr_glamor_xv_init(ScreenPtr screen)
{
}
#endif /* !GLAMOR */
2004-08-31 18:33:05 +02:00
#endif