diff options
Diffstat (limited to 'hw/kdrive/ephyr')
-rw-r--r-- | hw/kdrive/ephyr/Makefile.am | 35 | ||||
-rw-r--r-- | hw/kdrive/ephyr/README | 71 | ||||
-rw-r--r-- | hw/kdrive/ephyr/ephyr.c | 679 | ||||
-rw-r--r-- | hw/kdrive/ephyr/ephyr.h | 156 | ||||
-rw-r--r-- | hw/kdrive/ephyr/ephyrinit.c | 183 | ||||
-rw-r--r-- | hw/kdrive/ephyr/hostx.c | 564 | ||||
-rw-r--r-- | hw/kdrive/ephyr/hostx.h | 131 | ||||
-rw-r--r-- | hw/kdrive/ephyr/os.c | 67 |
8 files changed, 0 insertions, 1886 deletions
diff --git a/hw/kdrive/ephyr/Makefile.am b/hw/kdrive/ephyr/Makefile.am deleted file mode 100644 index 1a38e5934..000000000 --- a/hw/kdrive/ephyr/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ -INCLUDES = \ - @KDRIVE_INCS@ \ - @XSERVER_CFLAGS@ - -noinst_LIBRARIES = libxephyr.a libxephyr-hostx.a - -bin_PROGRAMS = Xephyr - -libxephyr_a_SOURCES = \ - ephyr.c \ - os.c \ - hostx.h \ - ephyr.h - -libxephyr_hostx_a_SOURCES = \ - hostx.c \ - hostx.h - -libxephyr_hostx_a_INCLUDES = @XEPHYR_INCS@ - -Xephyr_SOURCES = \ - ephyrinit.c - -Xephyr_LDADD = \ - libxephyr.a \ - libxephyr-hostx.a \ - @KDRIVE_LIBS@ \ - @XSERVER_LIBS@ \ - @XEPHYR_LIBS@ - -Xephyr_DEPENDENCIES = \ - libxephyr.a \ - libxephyr-hostx.a \ - @KDRIVE_LIBS@ - diff --git a/hw/kdrive/ephyr/README b/hw/kdrive/ephyr/README deleted file mode 100644 index 854e4d674..000000000 --- a/hw/kdrive/ephyr/README +++ /dev/null @@ -1,71 +0,0 @@ -Xephyr README -============= - - -What Is It ? -============ - -Xephyr is a a kdrive server that outputs to a window on a pre-existing -'host' X display. Think Xnest but with support for modern extensions -like composite, damage and randr. - -Unlike Xnest which is an X proxy, i.e. limited to the -capabilities of the host X server, Xephyr is a real X server which -uses the host X server window as "framebuffer" via fast SHM XImages. - -It also has support for 'visually' debugging what the server is -painting. - - -How To Use -========== - -You probably want to run like; - -Xephyr :1 -ac -screen 800x600 & - -Then set DISPLAY=:1 and run whatever X apps you like. - -Use 'xrandr' to change to orientation/size. - -There is a '-parent' switch which works just like Xnests ( for use -with things like matchbox-nest - http://matchbox.handhelds.org ). - -There is also a '-host-cursor' switch to set 'cursor acceleration' - -The host's cursor is reused. This is only really there to aid -debugging by avoiding server paints for the cursor. Performance -improvement is negiable. - -Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to -toggle the debugging mode. In this mode red rectangles are painted to -screen areas getting painted before painting the actual content. The -delay between this can be altered by setting a XEPHYR_PAUSE env var to -a value in micro seconds. - - -Caveats -======= - - - Depth is limited to being the same as the host. - - - Rotated displays are currently updated via full blits. This - is slower than a normal oprientated display. Debug mode will - therefor not be of much use rotated. - - - The '-host-cursor' cursor is static in its appearence. - - - The build gets a warning about 'nanosleep'. I think the various '-D' - build flags are causing this. I havn't figured as yet how to work - round it. It doesn't appear to break anything however. - - - Keyboard handling is basic but works. - - - Mouse button 5 probably wont work. - - - - - -Matthew Allum <mallum@o-hand.com> 2004 - - diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c deleted file mode 100644 index a105b284d..000000000 --- a/hw/kdrive/ephyr/ephyr.c +++ /dev/null @@ -1,679 +0,0 @@ -/* - * 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. - */ - -/* TODO: - * - * POSSIBLES - * - much improve keyboard handling *kind of done* - * - '-fullscreen' switch ? - * - full keyboard grab option somehow ? - use for testing WM key shortcuts - * with out host WM getting them instead. - * - Make cursor 'accel' better. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "ephyr.h" - -extern int KdTsPhyScreen; - -static int mouseState = 0; - -Bool -ephyrInitialize (KdCardInfo *card, EphyrPriv *priv) -{ - OsSignal(SIGUSR1, hostx_handle_signal); - - priv->base = 0; - priv->bytes_per_line = 0; - return TRUE; -} - -Bool -ephyrCardInit (KdCardInfo *card) -{ - EphyrPriv *priv; - - priv = (EphyrPriv *) xalloc (sizeof (EphyrPriv)); - if (!priv) - return FALSE; - - if (!ephyrInitialize (card, priv)) - { - xfree (priv); - return FALSE; - } - card->driver = priv; - - return TRUE; -} - -Bool -ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv) -{ - int width = 640, height = 480; - - if (hostx_want_screen_size(&width, &height) - || !screen->width || !screen->height) - { - screen->width = width; - screen->height = height; - } - - - if (screen->fb[0].depth && screen->fb[0].depth != hostx_get_depth()) - ErrorF("\nXephyr screen depth must match hosts, ignoring.\n"); - - screen->fb[0].depth = hostx_get_depth(); - screen->rate = 72; - - if (screen->fb[0].depth <= 8) - { - screen->fb[0].visuals = ((1 << StaticGray) | - (1 << GrayScale) | - (1 << StaticColor) | - (1 << PseudoColor) | - (1 << TrueColor) | - (1 << DirectColor)); - } - else - { - screen->fb[0].visuals = (1 << TrueColor); - - if (screen->fb[0].depth <= 15) - { - screen->fb[0].depth = 15; - screen->fb[0].bitsPerPixel = 16; - - hostx_get_visual_masks (&screen->fb[0].redMask, - &screen->fb[0].greenMask, - &screen->fb[0].blueMask); - - } - else if (screen->fb[0].depth <= 16) - { - screen->fb[0].depth = 16; - screen->fb[0].bitsPerPixel = 16; - - hostx_get_visual_masks (&screen->fb[0].redMask, - &screen->fb[0].greenMask, - &screen->fb[0].blueMask); - } - else - { - screen->fb[0].depth = 24; - screen->fb[0].bitsPerPixel = 32; - - hostx_get_visual_masks (&screen->fb[0].redMask, - &screen->fb[0].greenMask, - &screen->fb[0].blueMask); - } - } - - scrpriv->randr = screen->randr; - - return ephyrMapFramebuffer (screen); -} - -Bool -ephyrScreenInit (KdScreenInfo *screen) -{ - EphyrScrPriv *scrpriv; - - scrpriv = xalloc (sizeof (EphyrScrPriv)); - if (!scrpriv) - return FALSE; - memset (scrpriv, 0, sizeof (EphyrScrPriv)); - screen->driver = scrpriv; - if (!ephyrScreenInitialize (screen, scrpriv)) - { - screen->driver = 0; - xfree (scrpriv); - return FALSE; - } - return TRUE; -} - -void* -ephyrWindowLinear (ScreenPtr pScreen, - CARD32 row, - CARD32 offset, - int mode, - CARD32 *size, - void *closure) -{ - KdScreenPriv(pScreen); - EphyrPriv *priv = pScreenPriv->card->driver; - - if (!pScreenPriv->enabled) - { - return 0; - } - - *size = priv->bytes_per_line; - return priv->base + row * priv->bytes_per_line + offset; -} - -Bool -ephyrMapFramebuffer (KdScreenInfo *screen) -{ - EphyrScrPriv *scrpriv = screen->driver; - EphyrPriv *priv = screen->card->driver; - KdMouseMatrix m; - - EPHYR_DBG(" screen->width: %d, screen->height: %d", - screen->width, screen->height); - - /* Always use shadow so we get damage notifications */ - scrpriv->shadow = TRUE; - - KdComputeMouseMatrix (&m, scrpriv->randr, screen->width, screen->height); - - KdSetMouseMatrix (&m); - - priv->bytes_per_line = ((screen->width * screen->fb[0].bitsPerPixel + 31) >> 5) << 2; - - /* point the framebuffer to the data in an XImage */ - priv->base = hostx_screen_init (screen->width, screen->height); - - screen->memory_base = (CARD8 *) (priv->base); - screen->memory_size = 0; - screen->off_screen_base = 0; - - KdShadowFbAlloc (screen, 0, - scrpriv->randr & (RR_Rotate_90|RR_Rotate_270)); - return TRUE; -} - -void -ephyrSetScreenSizes (ScreenPtr pScreen) -{ - KdScreenPriv(pScreen); - KdScreenInfo *screen = pScreenPriv->screen; - EphyrScrPriv *scrpriv = screen->driver; - - if (scrpriv->randr & (RR_Rotate_0|RR_Rotate_180)) - { - pScreen->width = screen->width; - pScreen->height = screen->height; - pScreen->mmWidth = screen->width_mm; - pScreen->mmHeight = screen->height_mm; - } - else - { - pScreen->width = screen->height; - pScreen->height = screen->width; - pScreen->mmWidth = screen->height_mm; - pScreen->mmHeight = screen->width_mm; - } -} - -Bool -ephyrUnmapFramebuffer (KdScreenInfo *screen) -{ - KdShadowFbFree (screen, 0); - - /* Note, priv->base will get freed when XImage recreated */ - - return TRUE; -} - -void -ephyrShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf) -{ - KdScreenPriv(pScreen); - KdScreenInfo *screen = pScreenPriv->screen; - EphyrScrPriv *scrpriv = screen->driver; - int nbox; - BoxPtr pbox; - - RegionPtr damage; - - if (!(scrpriv->randr & RR_Rotate_0) || (scrpriv->randr & RR_Reflect_All)) - { - /* Rotated. - * TODO: Fix this to use damage as well so much faster. - * Sledgehammer approach atm. - * - * Catch reflects here too - though thats wrong ... - */ - EPHYR_DBG("slow paint"); - shadowUpdateRotatePacked(pScreen, pBuf); - hostx_paint_rect(0,0,0,0, screen->width, screen->height); - return; - } - else shadowUpdatePacked(pScreen, pBuf); - - /* Figure out what rects have changed and update em. */ - - if (!pBuf || !pBuf->pDamage) - return; - - damage = DamageRegion (pBuf->pDamage); - - if (!REGION_NOTEMPTY (pScreen, damage)) - return; - - nbox = REGION_NUM_RECTS (damage); - pbox = REGION_RECTS (damage); - - while (nbox--) - { - hostx_paint_rect(pbox->x1, pbox->y1, - pbox->x1, pbox->y1, - pbox->x2 - pbox->x1, - pbox->y2 - pbox->y1); - pbox++; - } -} - -Bool -ephyrSetShadow (ScreenPtr pScreen) -{ - KdScreenPriv(pScreen); - KdScreenInfo *screen = pScreenPriv->screen; - EphyrScrPriv *scrpriv = screen->driver; - ShadowUpdateProc update; - ShadowWindowProc window; - - window = ephyrWindowLinear; - update = ephyrShadowUpdate; - - return KdShadowSet (pScreen, scrpriv->randr, update, window); -} - -#ifdef RANDR -Bool -ephyrRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) -{ - KdScreenPriv(pScreen); - KdScreenInfo *screen = pScreenPriv->screen; - EphyrScrPriv *scrpriv = screen->driver; - RRScreenSizePtr pSize; - Rotation randr; - int n = 0; - - EPHYR_DBG("mark"); - - struct { int width, height; } sizes[] = - { - { 1600, 1200 }, - { 1400, 1050 }, - { 1280, 960 }, - { 1280, 1024 }, - { 1152, 768 }, - { 1024, 768 }, - { 832, 624 }, - { 800, 600 }, - { 720, 400 }, - { 480, 640 }, - { 640, 480 }, - { 640, 400 }, - { 320, 240 }, - { 240, 320 }, - { 160, 160 }, - { 0, 0 } - }; - - *rotations = RR_Rotate_All|RR_Reflect_All; - - if (!hostx_want_preexisting_window()) /* only if no -parent switch */ - { - while (sizes[n].width != 0 && sizes[n].height != 0) - { - RRRegisterSize (pScreen, - sizes[n].width, - sizes[n].height, - (sizes[n].width * screen->width_mm)/screen->width, - (sizes[n].height *screen->height_mm)/screen->height - ); - n++; - } - } - - pSize = RRRegisterSize (pScreen, - screen->width, - screen->height, - screen->width_mm, - screen->height_mm); - - randr = KdSubRotation (scrpriv->randr, screen->randr); - - RRSetCurrentConfig (pScreen, randr, 0, pSize); - - return TRUE; -} - -Bool -ephyrRandRSetConfig (ScreenPtr pScreen, - Rotation randr, - int rate, - RRScreenSizePtr pSize) -{ - KdScreenPriv(pScreen); - KdScreenInfo *screen = pScreenPriv->screen; - EphyrScrPriv *scrpriv = screen->driver; - Bool wasEnabled = pScreenPriv->enabled; - EphyrScrPriv oldscr; - int oldwidth; - int oldheight; - int oldmmwidth; - int oldmmheight; - int newwidth, newheight; - - if (screen->randr & (RR_Rotate_0|RR_Rotate_180)) - { - newwidth = pSize->width; - newheight = pSize->height; - } - else - { - newwidth = pSize->height; - newheight = pSize->width; - } - - if (wasEnabled) - KdDisableScreen (pScreen); - - oldscr = *scrpriv; - - oldwidth = screen->width; - oldheight = screen->height; - oldmmwidth = pScreen->mmWidth; - oldmmheight = pScreen->mmHeight; - - /* - * Set new configuration - */ - - scrpriv->randr = KdAddRotation (screen->randr, randr); - - KdOffscreenSwapOut (screen->pScreen); - - ephyrUnmapFramebuffer (screen); - - screen->width = newwidth; - screen->height = newheight; - - if (!ephyrMapFramebuffer (screen)) - goto bail4; - - KdShadowUnset (screen->pScreen); - - if (!ephyrSetShadow (screen->pScreen)) - goto bail4; - - ephyrSetScreenSizes (screen->pScreen); - - /* - * Set frame buffer mapping - */ - (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap (pScreen), - pScreen->width, - pScreen->height, - screen->fb[0].depth, - screen->fb[0].bitsPerPixel, - screen->fb[0].byteStride, - screen->fb[0].frameBuffer); - - /* set the subpixel order */ - - KdSetSubpixelOrder (pScreen, scrpriv->randr); - - - if (wasEnabled) - KdEnableScreen (pScreen); - - return TRUE; - -bail4: - EPHYR_DBG("bailed"); - - ephyrUnmapFramebuffer (screen); - *scrpriv = oldscr; - (void) ephyrMapFramebuffer (screen); - - pScreen->width = oldwidth; - pScreen->height = oldheight; - pScreen->mmWidth = oldmmwidth; - pScreen->mmHeight = oldmmheight; - - if (wasEnabled) - KdEnableScreen (pScreen); - return FALSE; -} - -Bool -ephyrRandRInit (ScreenPtr pScreen) -{ - rrScrPrivPtr pScrPriv; - - if (!RRScreenInit (pScreen)) - { - return FALSE; - } - - pScrPriv = rrGetScrPriv(pScreen); - pScrPriv->rrGetInfo = ephyrRandRGetInfo; - pScrPriv->rrSetConfig = ephyrRandRSetConfig; - return TRUE; -} -#endif - -Bool -ephyrCreateColormap (ColormapPtr pmap) -{ - return fbInitializeColormap (pmap); -} - -Bool -ephyrInitScreen (ScreenPtr pScreen) -{ -#ifdef TOUCHSCREEN - KdTsPhyScreen = pScreen->myNum; -#endif - - pScreen->CreateColormap = ephyrCreateColormap; - return TRUE; -} - -Bool -ephyrFinishInitScreen (ScreenPtr pScreen) -{ - if (!shadowSetup (pScreen)) - return FALSE; - -#ifdef RANDR - if (!ephyrRandRInit (pScreen)) - return FALSE; -#endif - - return TRUE; -} - -Bool -ephyrCreateResources (ScreenPtr pScreen) -{ - return ephyrSetShadow (pScreen); -} - -void -ephyrPreserve (KdCardInfo *card) -{ -} - -Bool -ephyrEnable (ScreenPtr pScreen) -{ - return TRUE; -} - -Bool -ephyrDPMS (ScreenPtr pScreen, int mode) -{ - return TRUE; -} - -void -ephyrDisable (ScreenPtr pScreen) -{ -} - -void -ephyrRestore (KdCardInfo *card) -{ -} - -void -ephyrScreenFini (KdScreenInfo *screen) -{ -} - -void -ephyrPoll(void) -{ - EphyrHostXEvent ev; - - while (hostx_get_event(&ev)) - { - switch (ev.type) - { - case EPHYR_EV_MOUSE_MOTION: - KdEnqueueMouseEvent(kdMouseInfo, mouseState, - ev.data.mouse_motion.x, - ev.data.mouse_motion.y); - break; - - case EPHYR_EV_MOUSE_PRESS: - - mouseState |= ev.data.mouse_down.button_num; - KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0); - break; - - case EPHYR_EV_MOUSE_RELEASE: - - mouseState &= ~ev.data.mouse_up.button_num; - KdEnqueueMouseEvent(kdMouseInfo, mouseState|KD_MOUSE_DELTA, 0, 0); - break; - - case EPHYR_EV_KEY_PRESS: - - KdEnqueueKeyboardEvent (ev.data.key_down.scancode, FALSE); - break; - - case EPHYR_EV_KEY_RELEASE: - - KdEnqueueKeyboardEvent (ev.data.key_up.scancode, TRUE); - break; - - default: - break; - } - } -} - -void -ephyrCardFini (KdCardInfo *card) -{ - EphyrPriv *priv = card->driver; - xfree (priv); -} - -void -ephyrGetColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs) -{ - while (n--) - { - pdefs->red = 0; - pdefs->green = 0; - pdefs->blue = 0; - pdefs++; - } -} - -void -ephyrPutColors (ScreenPtr pScreen, int fb, int n, xColorItem *pdefs) -{ -} - -/* Mouse calls */ - -static Bool -MouseInit (void) -{ - return TRUE; -} - -static void -MouseFini (void) -{ - ; -} - -KdMouseFuncs EphyrMouseFuncs = { - MouseInit, - MouseFini, -}; - -/* Keyboard */ - -static void -EphyrKeyboardLoad (void) -{ - EPHYR_DBG("mark"); - - hostx_load_keymap(); -} - -static int -EphyrKeyboardInit (void) -{ - return 0; -} - -static void -EphyrKeyboardFini (void) -{ -} - -static void -EphyrKeyboardLeds (int leds) -{ -} - -static void -EphyrKeyboardBell (int volume, int frequency, int duration) -{ -} - -KdKeyboardFuncs EphyrKeyboardFuncs = { - EphyrKeyboardLoad, - EphyrKeyboardInit, - EphyrKeyboardLeds, - EphyrKeyboardBell, - EphyrKeyboardFini, - 0, -}; diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h deleted file mode 100644 index d7c9ecdb4..000000000 --- a/hw/kdrive/ephyr/ephyr.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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 "os.h" /* for OsSignal() */ -#include "kdrive.h" -#include "kkeymap.h" -#include "hostx.h" - -#ifdef RANDR -#include "randrstr.h" -#endif - -typedef struct _ephyrPriv { - CARD8 *base; - int bytes_per_line; -} EphyrPriv; - -typedef struct _ephyrScrPriv { - Rotation randr; - Bool shadow; - PixmapPtr pShadow; -} EphyrScrPriv; - -extern KdCardFuncs ephyrFuncs; - -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 fb, int n, xColorItem *pdefs); - -void -ephyrPutColors (ScreenPtr pScreen, int fb, 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); - -Bool -ephyrSetShadow (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 - -extern KdMouseFuncs EphyrMouseFuncs; - -extern KdKeyboardFuncs EphyrKeyboardFuncs; - -extern KdOsFuncs EphyrOsFuncs; - -extern Bool ephyrCursorInit(ScreenPtr pScreen); - -extern void ephyrCursorEnable(ScreenPtr pScreen); - - -#endif diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c deleted file mode 100644 index 76df5885e..000000000 --- a/hw/kdrive/ephyr/ephyrinit.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * 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. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "ephyr.h" - -extern Window EphyrPreExistingHostWin; - -void -InitCard (char *name) -{ - KdCardAttr attr; - - EPHYR_DBG("mark"); - - if (hostx_want_host_cursor()) - { - ephyrFuncs.initCursor = &ephyrCursorInit; - ephyrFuncs.enableCursor = &ephyrCursorEnable; - } - - KdCardInfoAdd (&ephyrFuncs, &attr, 0); -} - -void -InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv) -{ - KdInitOutput (pScreenInfo, argc, argv); -} - -void -InitInput (int argc, char **argv) -{ - KdInitInput (&EphyrMouseFuncs, &EphyrKeyboardFuncs); -} - -void -ddxUseMsg (void) -{ - KdUseMsg(); - - ErrorF("\nXephyr Option Usage:\n"); - ErrorF("-parent XID Use existing window as Xephyr root win\n"); - ErrorF("-host-cursor Re-use exisiting X host server cursor\n"); - ErrorF("\n"); - - exit(1); -} - -int -ddxProcessArgument (int argc, char **argv, int i) -{ - EPHYR_DBG("mark"); - - if (!strcmp (argv[i], "-parent")) - { - if(i+1 < argc) - { - hostx_use_preexisting_window(strtol(argv[i+1], NULL, 0)); - return 2; - } - - UseMsg(); - exit(1); - } - else if (!strcmp (argv[i], "-host-cursor")) - { - hostx_use_host_cursor(); - return 1; - } - - return KdProcessArgument (argc, argv, i); -} - -void -OsVendorInit (void) -{ - EPHYR_DBG("mark"); - KdOsInit (&EphyrOsFuncs); -} - -/* 'Fake' cursor stuff, could be improved */ - -static Bool -ephyrRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) -{ - return TRUE; -} - -static Bool -ephyrUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) -{ - return TRUE; -} - -static void -ephyrSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y) -{ - ; -} - -static void -ephyrMoveCursor(ScreenPtr pScreen, int x, int y) -{ - ; -} - -miPointerSpriteFuncRec EphyrPointerSpriteFuncs = { - ephyrRealizeCursor, - ephyrUnrealizeCursor, - ephyrSetCursor, - ephyrMoveCursor, -}; - - -Bool -ephyrCursorInit(ScreenPtr pScreen) -{ - miPointerInitialize(pScreen, &EphyrPointerSpriteFuncs, - &kdPointerScreenFuncs, FALSE); - - return TRUE; -} - -void -ephyrCursorEnable(ScreenPtr pScreen) -{ - ; -} - -KdCardFuncs ephyrFuncs = { - ephyrCardInit, /* cardinit */ - ephyrScreenInit, /* scrinit */ - ephyrInitScreen, /* initScreen */ - ephyrFinishInitScreen, /* finishInitScreen */ - ephyrCreateResources, /* createRes */ - ephyrPreserve, /* preserve */ - ephyrEnable, /* enable */ - ephyrDPMS, /* dpms */ - ephyrDisable, /* disable */ - ephyrRestore, /* restore */ - ephyrScreenFini, /* scrfini */ - ephyrCardFini, /* cardfini */ - - 0, /* initCursor */ - 0, /* enableCursor */ - 0, /* disableCursor */ - 0, /* finiCursor */ - 0, /* recolorCursor */ - - 0, /* initAccel */ - 0, /* enableAccel */ - 0, /* syncAccel */ - 0, /* disableAccel */ - 0, /* finiAccel */ - - ephyrGetColors, /* getColors */ - ephyrPutColors, /* putColors */ -}; diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c deleted file mode 100644 index 87c68112d..000000000 --- a/hw/kdrive/ephyr/hostx.c +++ /dev/null @@ -1,564 +0,0 @@ -/* - * 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. - */ - -#include "hostx.h" - -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <string.h> /* for memset */ -#include <time.h> - -#include <sys/ipc.h> -#include <sys/shm.h> -#include <sys/time.h> - -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <X11/Xatom.h> -#include <X11/extensions/XShm.h> - -/* - * All xlib calls go here, which gets built as its own .a . - * Mixing kdrive and xlib headers causes all sorts of types - * to get clobbered. - */ - -struct EphyrHostXVars -{ - Display *dpy; - int screen; - Visual *visual; - Window win, winroot; - Window win_pre_existing; /* Set via -parent option like xnest */ - GC gc; - int depth; - XImage *ximg; - int win_width, win_height; - Bool use_host_cursor; - Bool have_shm; - long damage_debug_msec; - - XShmSegmentInfo shminfo; -}; - -static EphyrHostXVars HostX = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; /* defaults */ - -static int HostXWantDamageDebug = 0; - -extern KeySym EphyrKeymap[]; - -extern KeySym kdKeymap[]; -extern int kdMinScanCode; -extern int kdMaxScanCode; -extern int kdMinKeyCode; -extern int kdMaxKeyCode; -extern int kdKeymapWidth; -extern int monitorResolution; - -/* X Error traps */ - -static int trapped_error_code = 0; -static int (*old_error_handler) (Display *d, XErrorEvent *e); - -static int -error_handler(Display *display, - XErrorEvent *error) -{ - trapped_error_code = error->error_code; - return 0; -} - -static void -hostx_errors_trap(void) -{ - trapped_error_code = 0; - old_error_handler = XSetErrorHandler(error_handler); -} - -static int -hostx_errors_untrap(void) -{ - XSetErrorHandler(old_error_handler); - return trapped_error_code; -} - -int -hostx_want_screen_size(int *width, int *height) -{ - if (HostX.win_pre_existing != None) - { - *width = HostX.win_width; - *height = HostX.win_height; - return 1; - } - - return 0; -} - -int -hostx_want_host_cursor(void) -{ - return HostX.use_host_cursor; -} - -void -hostx_use_host_cursor(void) -{ - HostX.use_host_cursor = True; -} - -int -hostx_want_preexisting_window(void) -{ - if (HostX.win_pre_existing) - return 1; - else - return 0; -} - -void -hostx_use_preexisting_window(unsigned long win_id) -{ - HostX.win_pre_existing = win_id; -} - -static void -hostx_toggle_damage_debug(void) -{ - HostXWantDamageDebug ^= 1; -} - -void -hostx_handle_signal(int signum) -{ - hostx_toggle_damage_debug(); - EPHYR_DBG("Signal caught. Damage Debug:%i\n", HostXWantDamageDebug); -} - -int -hostx_init(void) -{ - XSetWindowAttributes attr; - Cursor empty_cursor; - Pixmap cursor_pxm; - XColor col; - - attr.event_mask = - ButtonPressMask - |ButtonReleaseMask - |PointerMotionMask - |KeyPressMask - |KeyReleaseMask - |ExposureMask; - - EPHYR_DBG("mark"); - - if ((HostX.dpy = XOpenDisplay(getenv("DISPLAY"))) == NULL) - { - fprintf(stderr, "\nXephyr cannot open host display. Is DISPLAY set?\n"); - exit(1); - } - - HostX.screen = DefaultScreen(HostX.dpy); - HostX.winroot = RootWindow(HostX.dpy, HostX.screen); - HostX.gc = XCreateGC(HostX.dpy, HostX.winroot, 0, NULL); - HostX.depth = DefaultDepth(HostX.dpy, HostX.screen); - HostX.visual = DefaultVisual(HostX.dpy, HostX.screen); - - /* old way of getting dpi - HostX.mm_per_pixel_vertical = (double)DisplayHeightMM(HostX.dpy, HostX.screen) - / DisplayHeight(HostX.dpy, HostX.screen); - - HostX.mm_per_pixel_horizontal = (double)DisplayWidthMM(HostX.dpy, HostX.screen) - / DisplayWidth(HostX.dpy, HostX.screen); - */ - - if (HostX.win_pre_existing != None) - { - Status result; - XWindowAttributes prewin_attr; - - /* Get screen size from existing window */ - - HostX.win = HostX.win_pre_existing; - - hostx_errors_trap(); - - result = XGetWindowAttributes(HostX.dpy, HostX.win, &prewin_attr); - - if (hostx_errors_untrap() || !result) - { - fprintf(stderr, "\nXephyr -parent window' does not exist!\n"); - exit(1); - } - - HostX.win_width = prewin_attr.width; - HostX.win_height = prewin_attr.height; - - XSelectInput(HostX.dpy, HostX.win, attr.event_mask); - } - else - { - HostX.win = XCreateWindow(HostX.dpy, - HostX.winroot, - 0,0,100,100, /* will resize */ - 0, - CopyFromParent, - CopyFromParent, - CopyFromParent, - CWEventMask, - &attr); - - XStoreName(HostX.dpy, HostX.win, "Xephyr"); - } - - HostX.gc = XCreateGC(HostX.dpy, HostX.winroot, 0, NULL); - - XParseColor(HostX.dpy, DefaultColormap(HostX.dpy,HostX.screen), "red", &col); - XAllocColor(HostX.dpy, DefaultColormap(HostX.dpy, HostX.screen), &col); - XSetForeground(HostX.dpy, HostX.gc, col.pixel); - - if (!hostx_want_host_cursor()) - { - /* Ditch the cursor, we provide our 'own' */ - cursor_pxm = XCreatePixmap (HostX.dpy, HostX.winroot, 1, 1, 1); - memset (&col, 0, sizeof (col)); - empty_cursor = XCreatePixmapCursor (HostX.dpy, - cursor_pxm, cursor_pxm, - &col, &col, 1, 1); - XDefineCursor (HostX.dpy, HostX.win, empty_cursor); - XFreePixmap (HostX.dpy, cursor_pxm); - } - - HostX.ximg = NULL; - - /* Try to get share memory ximages for a little bit more speed */ - - if (!XShmQueryExtension(HostX.dpy) || getenv("XEPHYR_NO_SHM")) - { - fprintf(stderr, "\nXephyr unable to use SHM XImages\n"); - HostX.have_shm = False; - } - else - { - /* Really really check we have shm - better way ?*/ - XShmSegmentInfo shminfo; - - HostX.have_shm = True; - - shminfo.shmid=shmget(IPC_PRIVATE, 1, IPC_CREAT|0777); - shminfo.shmaddr=shmat(shminfo.shmid,0,0); - shminfo.readOnly=True; - - hostx_errors_trap(); - - XShmAttach(HostX.dpy, &shminfo); - XSync(HostX.dpy, False); - - if (hostx_errors_untrap()) - { - fprintf(stderr, "\nXephyr unable to use SHM XImages\n"); - HostX.have_shm = False; - } - - shmdt(shminfo.shmaddr); - shmctl(shminfo.shmid, IPC_RMID, 0); - } - - XFlush(HostX.dpy); - - /* Setup the pause time between paints when debugging updates */ - - HostX.damage_debug_msec = 20000; /* 1/50 th of a second */ - - if (getenv("XEPHYR_PAUSE")) - { - HostX.damage_debug_msec = strtol(getenv("XEPHYR_PAUSE"), NULL, 0); - EPHYR_DBG("pause is %li\n", HostX.damage_debug_msec); - } - - return 1; -} - -int -hostx_get_depth (void) -{ - return HostX.depth; -} - -int -hostx_get_bpp(void) -{ - return HostX.visual->bits_per_rgb; -} - -void -hostx_get_visual_masks (unsigned long *rmsk, - unsigned long *gmsk, - unsigned long *bmsk) -{ - *rmsk = HostX.visual->red_mask; - *gmsk = HostX.visual->green_mask; - *bmsk = HostX.visual->blue_mask; -} - - -void* -hostx_screen_init (int width, int height) -{ - int bitmap_pad; - Bool shm_success = False; - XSizeHints *size_hints; - - EPHYR_DBG("mark"); - - if (HostX.ximg != NULL) - { - /* Free up the image data if previously used - * i.ie called by server reset - */ - - if (HostX.have_shm) - { - XShmDetach(HostX.dpy, &HostX.shminfo); - XDestroyImage (HostX.ximg); - shmdt(HostX.shminfo.shmaddr); - shmctl(HostX.shminfo.shmid, IPC_RMID, 0); - } - else - { - if (HostX.ximg->data) - { - free(HostX.ximg->data); - HostX.ximg->data = NULL; - } - - XDestroyImage(HostX.ximg); - } - } - - if (HostX.have_shm) - { - HostX.ximg = XShmCreateImage(HostX.dpy, HostX.visual, HostX.depth, - ZPixmap, NULL, &HostX.shminfo, - width, height ); - - HostX.shminfo.shmid = shmget(IPC_PRIVATE, - HostX.ximg->bytes_per_line * height, - IPC_CREAT|0777); - HostX.shminfo.shmaddr = HostX.ximg->data = shmat(HostX.shminfo.shmid, - 0, 0); - - if (HostX.ximg->data == (char *)-1) - { - EPHYR_DBG("Can't attach SHM Segment, falling back to plain XImages"); - HostX.have_shm = False; - XDestroyImage(HostX.ximg); - shmctl(HostX.shminfo.shmid, IPC_RMID, 0); - } - else - { - EPHYR_DBG("SHM segment attached"); - HostX.shminfo.readOnly = False; - XShmAttach(HostX.dpy, &HostX.shminfo); - shm_success = True; - } - } - - if (!shm_success) - { - bitmap_pad = ( HostX.depth > 16 )? 32 : (( HostX.depth > 8 )? 16 : 8 ); - - HostX.ximg = XCreateImage( HostX.dpy, - HostX.visual, - HostX.depth, - ZPixmap, 0, 0, - width, - height, - bitmap_pad, - 0); - - HostX.ximg->data = malloc( HostX.ximg->bytes_per_line * height ); - } - - - XResizeWindow(HostX.dpy, HostX.win, width, height); - - /* Ask the WM to keep our size static */ - size_hints = XAllocSizeHints(); - size_hints->max_width = size_hints->min_width = width; - size_hints->max_height = size_hints->min_height = height; - size_hints->flags = PMinSize|PMaxSize; - XSetWMNormalHints(HostX.dpy, HostX.win, size_hints); - XFree(size_hints); - - XMapWindow(HostX.dpy, HostX.win); - - XSync(HostX.dpy, False); - - HostX.win_width = width; - HostX.win_height = height; - - return HostX.ximg->data; -} - -void -hostx_paint_rect(int sx, int sy, - int dx, int dy, - int width, int height) -{ - /* - * Copy the image data updated by the shadow layer - * on to the window - */ - - if (HostXWantDamageDebug) - { - hostx_paint_debug_rect(dx, dy, width, height); - } - - if (HostX.have_shm) - { - XShmPutImage(HostX.dpy, HostX.win, HostX.gc, HostX.ximg, - sx, sy, dx, dy, width, height, False); - } - else - { - XPutImage(HostX.dpy, HostX.win, HostX.gc, HostX.ximg, - sx, sy, dx, dy, width, height); - } - - XSync(HostX.dpy, False); -} - -void -hostx_paint_debug_rect(int x, int y, - int width, int height) -{ - struct timespec tspec; - - tspec.tv_sec = HostX.damage_debug_msec / (10e6); - tspec.tv_nsec = (HostX.damage_debug_msec % 1000000) * 1000; - - EPHYR_DBG("msec: %li tv_sec %li, tv_msec %li", - HostX.damage_debug_msec, tspec.tv_sec, tspec.tv_nsec); - - XFillRectangle(HostX.dpy, HostX.win, HostX.gc, x, y, width,height); - XSync(HostX.dpy, False); - - /* nanosleep seems to work better than usleep for me... */ - nanosleep(&tspec, NULL); -} - -void -hostx_load_keymap(void) -{ - KeySym *keymap; - int mapWidth, min_keycode, max_keycode; - - XDisplayKeycodes(HostX.dpy, &min_keycode, &max_keycode); - - EPHYR_DBG("min: %d, max: %d", min_keycode, max_keycode); - - keymap = XGetKeyboardMapping(HostX.dpy, - min_keycode, - max_keycode - min_keycode + 1, - &mapWidth); - - memcpy (kdKeymap, keymap, - (max_keycode - min_keycode + 1)*mapWidth*sizeof(KeySym)); - - EPHYR_DBG("keymap width: %d", mapWidth); - - /* all kdrive vars - see kkeymap.c */ - - kdMinScanCode = min_keycode; - kdMaxScanCode = max_keycode; - kdMinKeyCode = min_keycode; - kdMaxKeyCode = max_keycode; - kdKeymapWidth = mapWidth; - - XFree(keymap); -} - -int -hostx_get_event(EphyrHostXEvent *ev) -{ - XEvent xev; - - if (XPending(HostX.dpy)) - { - XNextEvent(HostX.dpy, &xev); - - switch (xev.type) - { - case Expose: - /* Not so great event compression, but works ok */ - while (XCheckTypedWindowEvent(HostX.dpy, xev.xexpose.window, - Expose, &xev)); - hostx_paint_rect(0, 0, 0, 0, HostX.win_width, HostX.win_height); - return 0; - - case MotionNotify: - ev->type = EPHYR_EV_MOUSE_MOTION; - ev->data.mouse_motion.x = xev.xmotion.x; - ev->data.mouse_motion.y = xev.xmotion.y; - return 1; - - case ButtonPress: - ev->type = EPHYR_EV_MOUSE_PRESS; - /* - * This is a bit hacky. will break for button 5 ( defined as 0x10 ) - * Check KD_BUTTON defines in kdrive.h - */ - ev->data.mouse_down.button_num = 1<<(xev.xbutton.button-1); - return 1; - - case ButtonRelease: - ev->type = EPHYR_EV_MOUSE_RELEASE; - ev->data.mouse_up.button_num = 1<<(xev.xbutton.button-1); - return 1; - - case KeyPress: - { - ev->type = EPHYR_EV_KEY_PRESS; - ev->data.key_down.scancode = xev.xkey.keycode; - return 1; - } - case KeyRelease: - ev->type = EPHYR_EV_KEY_RELEASE; - ev->data.key_up.scancode = xev.xkey.keycode; - - return 1; - - default: - break; - - } - } - return 0; -} - diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h deleted file mode 100644 index 44d2d74b4..000000000 --- a/hw/kdrive/ephyr/hostx.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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 _XLIBS_STUFF_H_ -#define _XLIBS_STUFF_H_ - -#define EPHYR_WANT_DEBUG 0 - -#if (EPHYR_WANT_DEBUG) -#define EPHYR_DBG(x, a...) \ - fprintf(stderr, __FILE__ ":%d,%s() " x "\n", __LINE__, __func__, ##a) -#else -#define EPHYR_DBG(x, a...) do {} while (0) -#endif - -typedef struct EphyrHostXVars EphyrHostXVars; -typedef struct EphyrHostXEvent EphyrHostXEvent; - -typedef enum EphyrHostXEventType -{ - EPHYR_EV_MOUSE_MOTION, - EPHYR_EV_MOUSE_PRESS, - EPHYR_EV_MOUSE_RELEASE, - EPHYR_EV_KEY_PRESS, - EPHYR_EV_KEY_RELEASE -} -EphyrHostXEventType; - -struct EphyrHostXEvent -{ - EphyrHostXEventType type; - - union - { - struct mouse_motion { - int x; - int y; - } mouse_motion; - - struct mouse_down { - int button_num; - } mouse_down; - - struct mouse_up { - int button_num; - } mouse_up; - - struct key_up { - int scancode; - } key_up; - - struct key_down { - int scancode; - } key_down; - - } data; - -}; - -int -hostx_want_screen_size(int *width, int *height); - -int -hostx_want_host_cursor(void); - -void -hostx_use_host_cursor(void); - -int -hostx_want_preexisting_window(void); - -void -hostx_use_preexisting_window(unsigned long win_id); - -void -hostx_handle_signal(int signum); - -int -hostx_init(void); - -int -hostx_get_depth (void); - -int -hostx_get_bpp(void); - -void -hostx_get_visual_masks (unsigned long *rmsk, - unsigned long *gmsk, - unsigned long *bmsk); - -void* -hostx_screen_init (int width, int height); - -void -hostx_paint_rect(int sx, int sy, - int dx, int dy, - int width, int height); -void -hostx_paint_debug_rect(int x, int y, - int width, int height); - -void -hostx_load_keymap(void); - -int -hostx_get_event(EphyrHostXEvent *ev); - -#endif diff --git a/hw/kdrive/ephyr/os.c b/hw/kdrive/ephyr/os.c deleted file mode 100644 index 2ee556155..000000000 --- a/hw/kdrive/ephyr/os.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include "ephyr.h" - -static int -EphyrInit (void) -{ - return hostx_init(); -} - -static void -EphyrEnable (void) -{ - EPHYR_DBG("mark"); -} - -static Bool -EphyrSpecialKey (KeySym sym) -{ - return FALSE; -} - -static void -EphyrDisable (void) -{ -} - -static void -EphyrFini (void) -{ -} - -KdOsFuncs EphyrOsFuncs = { - EphyrInit, - EphyrEnable, - EphyrSpecialKey, - EphyrDisable, - EphyrFini, - ephyrPoll -}; - |