aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/kdrive/ephyr/ephyr.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/kdrive/ephyr/ephyr.c')
-rw-r--r--xorg-server/hw/kdrive/ephyr/ephyr.c48
1 files changed, 29 insertions, 19 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/ephyr.c b/xorg-server/hw/kdrive/ephyr/ephyr.c
index b02f9903c..ab8459cfc 100644
--- a/xorg-server/hw/kdrive/ephyr/ephyr.c
+++ b/xorg-server/hw/kdrive/ephyr/ephyr.c
@@ -32,11 +32,11 @@
#include "scrnintstr.h"
#include "ephyrlog.h"
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
#include "ephyrdri.h"
#include "ephyrdriext.h"
#include "ephyrglxext.h"
-#endif /*XEPHYR_DRI*/
+#endif /* XF86DRI */
extern int KdTsPhyScreen;
#ifdef GLXEXT
@@ -91,7 +91,7 @@ Bool
ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
{
int width = 640, height = 480;
- unsigned long redMask, greenMask, blueMask;
+ CARD32 redMask, greenMask, blueMask;
if (hostx_want_screen_size(screen, &width, &height)
|| !screen->width || !screen->height)
@@ -150,11 +150,22 @@ ephyrScreenInitialize (KdScreenInfo *screen, EphyrScrPriv *scrpriv)
screen->fb[0].depth = 16;
screen->fb[0].bitsPerPixel = 16;
}
- else
+ else if (screen->fb[0].depth <= 24)
{
screen->fb[0].depth = 24;
screen->fb[0].bitsPerPixel = 32;
}
+ else if (screen->fb[0].depth <= 30)
+ {
+ screen->fb[0].depth = 30;
+ screen->fb[0].bitsPerPixel = 32;
+ }
+ else
+ {
+ ErrorF("\nXephyr: Unsupported screen depth %d\n",
+ screen->fb[0].depth);
+ return FALSE;
+ }
hostx_get_visual_masks (screen, &redMask, &greenMask, &blueMask);
@@ -174,12 +185,11 @@ ephyrScreenInit (KdScreenInfo *screen)
{
EphyrScrPriv *scrpriv;
- scrpriv = xalloc (sizeof (EphyrScrPriv));
+ scrpriv = xcalloc (1, sizeof (EphyrScrPriv));
if (!scrpriv)
return FALSE;
- memset (scrpriv, 0, sizeof (EphyrScrPriv));
screen->driver = scrpriv;
if (!ephyrScreenInitialize (screen, scrpriv))
@@ -515,8 +525,6 @@ ephyrRandRSetConfig (ScreenPtr pScreen,
scrpriv->randr = KdAddRotation (screen->randr, randr);
- KdOffscreenSwapOut (screen->pScreen);
-
ephyrUnmapFramebuffer (screen);
screen->width = newwidth;
@@ -631,7 +639,7 @@ ephyrInitScreen (ScreenPtr pScreen)
}
#endif /*XV*/
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
if (!ephyrNoDRI && !hostx_has_dri ()) {
EPHYR_LOG ("host x does not support DRI. Disabling DRI forwarding\n") ;
ephyrNoDRI = TRUE ;
@@ -826,11 +834,11 @@ ephyrCrossScreen (ScreenPtr pScreen, Bool entering)
int ephyrCurScreen; /*current event screen*/
static void
-ephyrWarpCursor (ScreenPtr pScreen, int x, int y)
+ephyrWarpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
{
ephyrBlockSigio ();
ephyrCurScreen = pScreen->myNum;
- miPointerWarpCursor (pScreen, x, y);
+ miPointerWarpCursor (inputInfo.pointer, pScreen, x, y);
ephyrUnblockSigio ();
}
@@ -838,10 +846,12 @@ miPointerScreenFuncRec ephyrPointerScreenFuncs =
{
ephyrCursorOffScreen,
ephyrCrossScreen,
- ephyrWarpCursor
+ ephyrWarpCursor,
+ NULL,
+ NULL
};
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
/**
* find if the remote window denoted by a_remote
* is paired with an internal Window within the Xephyr server.
@@ -873,7 +883,7 @@ ephyrExposePairedWindow (int a_remote)
screen->WindowExposures (pair->local, &reg, NullRegion);
REGION_UNINIT (screen, &reg);
}
-#endif /*XEPHYR_DRI*/
+#endif /* XF86DRI */
void
ephyrPoll(void)
@@ -900,7 +910,7 @@ ephyrPoll(void)
if (ev.data.mouse_motion.screen >= 0)
{
ephyrWarpCursor
- (screenInfo.screens[ev.data.mouse_motion.screen],
+ (inputInfo.pointer, screenInfo.screens[ev.data.mouse_motion.screen],
ev.data.mouse_motion.x,
ev.data.mouse_motion.y );
}
@@ -908,14 +918,14 @@ ephyrPoll(void)
else
{
int x=0, y=0;
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
EphyrWindowPair *pair = NULL;
#endif
EPHYR_LOG ("enqueuing mouse motion:%d\n", ephyrCurScreen) ;
x = ev.data.mouse_motion.x;
y = ev.data.mouse_motion.y;
EPHYR_LOG ("initial (x,y):(%d,%d)\n", x, y) ;
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
EPHYR_LOG ("is this window peered by a gl drawable ?\n") ;
if (findWindowPairFromRemote (ev.data.mouse_motion.window,
&pair))
@@ -972,7 +982,7 @@ ephyrPoll(void)
KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_up.scancode, TRUE);
break;
-#ifdef XEPHYR_DRI
+#ifdef XF86DRI
case EPHYR_EV_EXPOSE:
/*
* We only receive expose events when the expose event have
@@ -982,7 +992,7 @@ ephyrPoll(void)
*/
ephyrExposePairedWindow (ev.data.expose.window);
break;
-#endif /*XEPHYR_DRI*/
+#endif /* XF86DRI */
default:
break;