Commit 49607e93 authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Lift Xext to xorg 1.4.2

parent fccef5fc
...@@ -196,12 +196,15 @@ static int ...@@ -196,12 +196,15 @@ static int
ProcDPMSEnable(client) ProcDPMSEnable(client)
register ClientPtr client; register ClientPtr client;
{ {
/* REQUEST(xDPMSEnableReq); */ Bool was_enabled = DPMSEnabled;
REQUEST_SIZE_MATCH(xDPMSEnableReq); REQUEST_SIZE_MATCH(xDPMSEnableReq);
if (DPMSCapableFlag) if (DPMSCapableFlag) {
DPMSEnabled = TRUE; DPMSEnabled = TRUE;
if (!was_enabled)
SetScreenSaverTimer();
}
return(client->noClientException); return(client->noClientException);
} }
......
...@@ -55,8 +55,10 @@ Equipment Corporation. ...@@ -55,8 +55,10 @@ Equipment Corporation.
#ifdef RENDER #ifdef RENDER
#include "picturestr.h" #include "picturestr.h"
#endif #endif
#include "protocol-versions.h" #include "protocol-versions.h"
#ifdef GLXPROXY #ifdef GLXPROXY
extern VisualPtr glxMatchVisual(ScreenPtr pScreen, extern VisualPtr glxMatchVisual(ScreenPtr pScreen,
VisualPtr pVisual, VisualPtr pVisual,
...@@ -107,7 +109,6 @@ static void PanoramiXResetProc(ExtensionEntry*); ...@@ -107,7 +109,6 @@ static void PanoramiXResetProc(ExtensionEntry*);
#include "panoramiXh.h" #include "panoramiXh.h"
int (* SavedProcVector[256]) (ClientPtr client) = { NULL, }; int (* SavedProcVector[256]) (ClientPtr client) = { NULL, };
ScreenInfo *GlobalScrInfo = NULL;
static int PanoramiXGCIndex = -1; static int PanoramiXGCIndex = -1;
static int PanoramiXScreenIndex = -1; static int PanoramiXScreenIndex = -1;
...@@ -133,7 +134,7 @@ static void XineramaChangeClip(GCPtr, int, void *, int); ...@@ -133,7 +134,7 @@ static void XineramaChangeClip(GCPtr, int, void *, int);
static void XineramaDestroyClip(GCPtr); static void XineramaDestroyClip(GCPtr);
static void XineramaCopyClip(GCPtr, GCPtr); static void XineramaCopyClip(GCPtr, GCPtr);
GCFuncs XineramaGCFuncs = { static GCFuncs XineramaGCFuncs = {
XineramaValidateGC, XineramaChangeGC, XineramaCopyGC, XineramaDestroyGC, XineramaValidateGC, XineramaChangeGC, XineramaCopyGC, XineramaDestroyGC,
XineramaChangeClip, XineramaDestroyClip, XineramaCopyClip XineramaChangeClip, XineramaDestroyClip, XineramaCopyClip
}; };
...@@ -166,7 +167,7 @@ XineramaCloseScreen (ScreenPtr pScreen) ...@@ -166,7 +167,7 @@ XineramaCloseScreen (ScreenPtr pScreen)
return (*pScreen->CloseScreen) (pScreen); return (*pScreen->CloseScreen) (pScreen);
} }
Bool static Bool
XineramaCreateGC(GCPtr pGC) XineramaCreateGC(GCPtr pGC)
{ {
ScreenPtr pScreen = pGC->pScreen; ScreenPtr pScreen = pGC->pScreen;
...@@ -337,32 +338,11 @@ XineramaDeleteResource(void * data, XID id) ...@@ -337,32 +338,11 @@ XineramaDeleteResource(void * data, XID id)
return 1; return 1;
} }
static Bool
XineramaFindIDOnAnyScreen(void * resource, XID id, void * privdata)
{
PanoramiXRes *res = (PanoramiXRes*)resource;
int j;
FOR_NSCREENS(j)
if(res->info[j].id == *((XID*)privdata)) return TRUE;
return FALSE;
}
PanoramiXRes *
PanoramiXFindIDOnAnyScreen(RESTYPE type, XID id)
{
return LookupClientResourceComplex(clients[CLIENT_ID(id)], type,
XineramaFindIDOnAnyScreen, &id);
}
typedef struct { typedef struct {
int screen; int screen;
int id; int id;
} PanoramiXSearchData; } PanoramiXSearchData;
static Bool static Bool
XineramaFindIDByScrnum(void * resource, XID id, void * privdata) XineramaFindIDByScrnum(void * resource, XID id, void * privdata)
{ {
...@@ -387,23 +367,6 @@ PanoramiXFindIDByScrnum(RESTYPE type, XID id, int screen) ...@@ -387,23 +367,6 @@ PanoramiXFindIDByScrnum(RESTYPE type, XID id, int screen)
XineramaFindIDByScrnum, &data); XineramaFindIDByScrnum, &data);
} }
WindowPtr
PanoramiXChangeWindow(int ScrnNum, WindowPtr pWin)
{
int num = pWin->drawable.pScreen->myNum;
if(num != ScrnNum) {
PanoramiXRes *win;
win = PanoramiXFindIDByScrnum(XRT_WINDOW, pWin->drawable.id, num);
if (win)
pWin = (WindowPtr) LookupIDByType(win->info[ScrnNum].id, RT_WINDOW);
}
return pWin;
}
typedef struct _connect_callback_list { typedef struct _connect_callback_list {
void (*func)(void); void (*func)(void);
struct _connect_callback_list *next; struct _connect_callback_list *next;
...@@ -494,7 +457,6 @@ void PanoramiXExtensionInit(int argc, char *argv[]) ...@@ -494,7 +457,6 @@ void PanoramiXExtensionInit(int argc, char *argv[])
if (noPanoramiXExtension) if (noPanoramiXExtension)
return; return;
GlobalScrInfo = &screenInfo; /* For debug visibility */
PanoramiXNumScreens = screenInfo.numScreens; PanoramiXNumScreens = screenInfo.numScreens;
if (PanoramiXNumScreens == 1) { /* Only 1 screen */ if (PanoramiXNumScreens == 1) { /* Only 1 screen */
noPanoramiXExtension = TRUE; noPanoramiXExtension = TRUE;
......
/* $TOG: panoramiX.h /main/4 1998/03/17 06:51:02 kaleb $ */
/***************************************************************** /*****************************************************************
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts. Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
...@@ -94,18 +93,6 @@ typedef struct { ...@@ -94,18 +93,6 @@ typedef struct {
(a).root = screenInfo.screens[0]->root->drawable.id; \ (a).root = screenInfo.screens[0]->root->drawable.id; \
} }
#define FORCE_WIN(a) { \
if ((win = PanoramiXFindIDOnAnyScreen(XRT_WINDOW, a))) { \
(a) = win->info[0].id; /* Real ID */ \
} \
}
#define FORCE_CMAP(a) { \
if ((win = PanoramiXFindIDOnAnyScreen(XRT_COLORMAP, a))) { \
(a) = win->info[0].id; /* Real ID */ \
} \
}
#define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared) #define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared)
#define SKIP_FAKE_WINDOW(a) if(!LookupIDByType(a, XRT_WINDOW)) return #define SKIP_FAKE_WINDOW(a) if(!LookupIDByType(a, XRT_WINDOW)) return
......
...@@ -68,6 +68,7 @@ SProcPanoramiXGetState(ClientPtr client) ...@@ -68,6 +68,7 @@ SProcPanoramiXGetState(ClientPtr client)
swaps (&stuff->length); swaps (&stuff->length);
REQUEST_SIZE_MATCH(xPanoramiXGetStateReq); REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
swapl (&stuff->window);
return ProcPanoramiXGetState(client); return ProcPanoramiXGetState(client);
} }
...@@ -78,6 +79,7 @@ SProcPanoramiXGetScreenCount(ClientPtr client) ...@@ -78,6 +79,7 @@ SProcPanoramiXGetScreenCount(ClientPtr client)
swaps (&stuff->length); swaps (&stuff->length);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
swapl (&stuff->window);
return ProcPanoramiXGetScreenCount(client); return ProcPanoramiXGetScreenCount(client);
} }
...@@ -88,6 +90,8 @@ SProcPanoramiXGetScreenSize(ClientPtr client) ...@@ -88,6 +90,8 @@ SProcPanoramiXGetScreenSize(ClientPtr client)
swaps (&stuff->length); swaps (&stuff->length);
REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq); REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
swapl (&stuff->window);
swapl (&stuff->screen);
return ProcPanoramiXGetScreenSize(client); return ProcPanoramiXGetScreenSize(client);
} }
......
...@@ -19,10 +19,10 @@ extern int PanoramiXGetGeometry(ClientPtr client); ...@@ -19,10 +19,10 @@ extern int PanoramiXGetGeometry(ClientPtr client);
extern int PanoramiXTranslateCoords(ClientPtr client); extern int PanoramiXTranslateCoords(ClientPtr client);
extern int PanoramiXCreatePixmap(ClientPtr client); extern int PanoramiXCreatePixmap(ClientPtr client);
extern int PanoramiXFreePixmap(ClientPtr client); extern int PanoramiXFreePixmap(ClientPtr client);
extern int PanoramiXCreateGC(ClientPtr client);
extern int PanoramiXChangeGC(ClientPtr client); extern int PanoramiXChangeGC(ClientPtr client);
extern int PanoramiXCopyGC(ClientPtr client); extern int PanoramiXCopyGC(ClientPtr client);
extern int PanoramiXCopyColormapAndFree(ClientPtr client); extern int PanoramiXCopyColormapAndFree(ClientPtr client);
extern int PanoramiXCreateGC(ClientPtr client);
extern int PanoramiXSetDashes(ClientPtr client); extern int PanoramiXSetDashes(ClientPtr client);
extern int PanoramiXSetClipRectangles(ClientPtr client); extern int PanoramiXSetClipRectangles(ClientPtr client);
extern int PanoramiXFreeGC(ClientPtr client); extern int PanoramiXFreeGC(ClientPtr client);
...@@ -64,7 +64,6 @@ PROC_EXTERN(ProcPanoramiXGetScreenSize); ...@@ -64,7 +64,6 @@ PROC_EXTERN(ProcPanoramiXGetScreenSize);
PROC_EXTERN(ProcXineramaQueryScreens); PROC_EXTERN(ProcXineramaQueryScreens);
PROC_EXTERN(ProcXineramaIsActive); PROC_EXTERN(ProcXineramaIsActive);
extern Bool XineramaCreateGC(GCPtr pGC);
extern int SProcPanoramiXDispatch(ClientPtr client); extern int SProcPanoramiXDispatch(ClientPtr client);
...@@ -72,6 +71,4 @@ extern char *ConnectionInfo; ...@@ -72,6 +71,4 @@ extern char *ConnectionInfo;
extern int connBlockScreenStart; extern int connBlockScreenStart;
extern xConnSetupPrefix connSetupPrefix; extern xConnSetupPrefix connSetupPrefix;
extern ScreenInfo *GlobalScrInfo;
extern int (* SavedProcVector[256]) (ClientPtr client); extern int (* SavedProcVector[256]) (ClientPtr client);
...@@ -572,7 +572,7 @@ int PanoramiXTranslateCoords(ClientPtr client) ...@@ -572,7 +572,7 @@ int PanoramiXTranslateCoords(ClientPtr client)
INT16 x, y; INT16 x, y;
REQUEST(xTranslateCoordsReq); REQUEST(xTranslateCoordsReq);
register WindowPtr pWin, pDst; WindowPtr pWin, pDst;
xTranslateCoordsReply rep; xTranslateCoordsReply rep;
REQUEST_SIZE_MATCH(xTranslateCoordsReq); REQUEST_SIZE_MATCH(xTranslateCoordsReq);
...@@ -1080,8 +1080,8 @@ int PanoramiXCopyArea(ClientPtr client) ...@@ -1080,8 +1080,8 @@ int PanoramiXCopyArea(ClientPtr client)
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client); VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pDst, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable) { if (stuff->dstDrawable != stuff->srcDrawable) {
SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client, SECURITY_VERIFY_DRAWABLE(pSrc, stuff->srcDrawable, client,
DixReadAccess); DixReadAccess);
if ((pDst->pScreen != pSrc->pScreen) || if ((pDst->pScreen != pSrc->pScreen) ||
(pDst->depth != pSrc->depth)) { (pDst->depth != pSrc->depth)) {
client->errorValue = stuff->dstDrawable; client->errorValue = stuff->dstDrawable;
return (BadMatch); return (BadMatch);
...@@ -1186,7 +1186,7 @@ int PanoramiXCopyPlane(ClientPtr client) ...@@ -1186,7 +1186,7 @@ int PanoramiXCopyPlane(ClientPtr client)
VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client); VALIDATE_DRAWABLE_AND_GC(stuff->dstDrawable, pdstDraw, pGC, client);
if (stuff->dstDrawable != stuff->srcDrawable) { if (stuff->dstDrawable != stuff->srcDrawable) {
SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client, SECURITY_VERIFY_DRAWABLE(psrcDraw, stuff->srcDrawable, client,
DixReadAccess); DixReadAccess);
if (pdstDraw->pScreen != psrcDraw->pScreen) { if (pdstDraw->pScreen != psrcDraw->pScreen) {
client->errorValue = stuff->dstDrawable; client->errorValue = stuff->dstDrawable;
return (BadMatch); return (BadMatch);
......
/* /*
* $XConsortium: saver.c,v 1.12 94/04/17 20:59:36 dpw Exp $
* *
Copyright (c) 1992 X Consortium Copyright (c) 1992 X Consortium
...@@ -65,7 +64,7 @@ static unsigned char ScreenSaverReqCode = 0; ...@@ -65,7 +64,7 @@ static unsigned char ScreenSaverReqCode = 0;
#endif #endif
static int ScreenSaverEventBase = 0; static int ScreenSaverEventBase = 0;
extern DISPATCH_PROC(ProcScreenSaverQueryInfo); static DISPATCH_PROC(ProcScreenSaverQueryInfo);
static DISPATCH_PROC(ProcScreenSaverDispatch); static DISPATCH_PROC(ProcScreenSaverDispatch);
static DISPATCH_PROC(ProcScreenSaverQueryVersion); static DISPATCH_PROC(ProcScreenSaverQueryVersion);
static DISPATCH_PROC(ProcScreenSaverSelectInput); static DISPATCH_PROC(ProcScreenSaverSelectInput);
...@@ -137,7 +136,7 @@ typedef struct _ScreenSaverSuspension ...@@ -137,7 +136,7 @@ typedef struct _ScreenSaverSuspension
} ScreenSaverSuspensionRec; } ScreenSaverSuspensionRec;
static int ScreenSaverFreeSuspend( static int ScreenSaverFreeSuspend(
pointer /*value */, void * /*value */,
XID /* id */ XID /* id */
); );
...@@ -461,7 +460,7 @@ ScreenSaverFreeAttr (value, id) ...@@ -461,7 +460,7 @@ ScreenSaverFreeAttr (value, id)
} }
static int static int
ScreenSaverFreeSuspend (pointer value, XID id) ScreenSaverFreeSuspend (void * value, XID id)
{ {
ScreenSaverSuspensionPtr data = (ScreenSaverSuspensionPtr) value; ScreenSaverSuspensionPtr data = (ScreenSaverSuspensionPtr) value;
ScreenSaverSuspensionPtr *prev, this; ScreenSaverSuspensionPtr *prev, this;
...@@ -767,7 +766,7 @@ ProcScreenSaverQueryVersion (client) ...@@ -767,7 +766,7 @@ ProcScreenSaverQueryVersion (client)
return (client->noClientException); return (client->noClientException);
} }
int static int
ProcScreenSaverQueryInfo (client) ProcScreenSaverQueryInfo (client)
register ClientPtr client; register ClientPtr client;
{ {
...@@ -863,9 +862,7 @@ ScreenSaverSetAttributes (ClientPtr client) ...@@ -863,9 +862,7 @@ ScreenSaverSetAttributes (ClientPtr client)
ScreenPtr pScreen; ScreenPtr pScreen;
ScreenSaverScreenPrivatePtr pPriv = 0; ScreenSaverScreenPrivatePtr pPriv = 0;
ScreenSaverAttrPtr pAttr = 0; ScreenSaverAttrPtr pAttr = 0;
int ret; int ret, len, class, bw, depth;
int len;
int class, bw, depth;
unsigned long visual; unsigned long visual;
int idepth, ivisual; int idepth, ivisual;
Bool fOK; Bool fOK;
...@@ -1404,7 +1401,7 @@ ProcScreenSaverSuspend (ClientPtr client) ...@@ -1404,7 +1401,7 @@ ProcScreenSaverSuspend (ClientPtr client)
this->count = 1; this->count = 1;
this->clientResource = FakeClientID (client->index); this->clientResource = FakeClientID (client->index);
if (!AddResource (this->clientResource, SuspendType, (pointer) this)) if (!AddResource (this->clientResource, SuspendType, (void *) this))
{ {
free (this); free (this);
return BadAlloc; return BadAlloc;
......
...@@ -758,10 +758,10 @@ CreatePmap: ...@@ -758,10 +758,10 @@ CreatePmap:
if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) {
if (size < width * height) if (size < width * height)
return BadAlloc; return BadAlloc;
/* thankfully, offset is unsigned */
if (stuff->offset + size < size)
return BadAlloc;
} }
/* thankfully, offset is unsigned */
if (stuff->offset + size < size)
return BadAlloc;
VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client);
...@@ -820,8 +820,8 @@ static int ...@@ -820,8 +820,8 @@ static int
ProcShmPutImage(client) ProcShmPutImage(client)
register ClientPtr client; register ClientPtr client;
{ {
register GCPtr pGC; GCPtr pGC;
register DrawablePtr pDraw; DrawablePtr pDraw;
long length; long length;
ShmDescPtr shmdesc; ShmDescPtr shmdesc;
REQUEST(xShmPutImageReq); REQUEST(xShmPutImageReq);
...@@ -933,7 +933,7 @@ static int ...@@ -933,7 +933,7 @@ static int
ProcShmGetImage(client) ProcShmGetImage(client)
register ClientPtr client; register ClientPtr client;
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
long lenPer = 0, length; long lenPer = 0, length;
Mask plane = 0; Mask plane = 0;
xShmGetImageReply xgi; xShmGetImageReply xgi;
...@@ -1070,7 +1070,7 @@ ProcShmCreatePixmap(client) ...@@ -1070,7 +1070,7 @@ ProcShmCreatePixmap(client)
register ClientPtr client; register ClientPtr client;
{ {
PixmapPtr pMap; PixmapPtr pMap;
register DrawablePtr pDraw; DrawablePtr pDraw;
DepthPtr pDepth; DepthPtr pDepth;
register int i; register int i;
ShmDescPtr shmdesc; ShmDescPtr shmdesc;
...@@ -1112,9 +1112,9 @@ CreatePmap: ...@@ -1112,9 +1112,9 @@ CreatePmap:
if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) { if (sizeof(size) == 4 && BitsPerPixel(depth) > 8) {
if (size < width * height) if (size < width * height)
return BadAlloc; return BadAlloc;
/* thankfully, offset is unsigned */ /* thankfully, offset is unsigned */
if (stuff->offset + size < size) if (stuff->offset + size < size)
return BadAlloc; return BadAlloc;
} }
VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client); VERIFY_SHMSIZE(shmdesc, stuff->offset, size, client);
......
/* /*
* $Id$
*
* Copyright © 2003 Keith Packard * Copyright © 2003 Keith Packard
* *
* Permission to use, copy, modify, distribute, and sell this software and its * Permission to use, copy, modify, distribute, and sell this software and its
......
/* /*
* $Xorg: sleepuntil.c,v 1.4 2001/02/09 02:04:33 xorgcvs Exp $
* *
Copyright 1992, 1998 The Open Group Copyright 1992, 1998 The Open Group
......
...@@ -71,9 +71,8 @@ PERFORMANCE OF THIS SOFTWARE. ...@@ -71,9 +71,8 @@ PERFORMANCE OF THIS SOFTWARE.
#include "protocol-versions.h" #include "protocol-versions.h"
#include <stdio.h> #include <stdio.h>
#if !defined(WIN32)
#include <sys/time.h> #include <sys/time.h>
#endif
/* /*
* Local Global Variables * Local Global Variables
...@@ -572,7 +571,7 @@ SyncSendAlarmNotifyEvents(pAlarm) ...@@ -572,7 +571,7 @@ SyncSendAlarmNotifyEvents(pAlarm)
/* send to other interested clients */ /* send to other interested clients */
for (pcl = pAlarm->pEventClients; pcl; pcl = pcl->next) for (pcl = pAlarm->pEventClients; pcl; pcl = pcl->next)
WriteEventsToClient(pcl->client, 1, (xEvent *) &ane); WriteEventsToClient(pcl->client, 1, (xEvent *) &ane);
} }
...@@ -1112,7 +1111,7 @@ SyncComputeBracketValues(pCounter, startOver) ...@@ -1112,7 +1111,7 @@ SyncComputeBracketValues(pCounter, startOver)
{ {
SyncTriggerList *pCur; SyncTriggerList *pCur;
SyncTrigger *pTrigger; SyncTrigger *pTrigger;
SysCounterInfo *psci = pCounter->pSysCounterInfo; SysCounterInfo *psci;
CARD64 *pnewgtval = NULL; CARD64 *pnewgtval = NULL;
CARD64 *pnewltval = NULL; CARD64 *pnewltval = NULL;
SyncCounterType ct; SyncCounterType ct;
...@@ -1120,6 +1119,7 @@ SyncComputeBracketValues(pCounter, startOver) ...@@ -1120,6 +1119,7 @@ SyncComputeBracketValues(pCounter, startOver)
if (!pCounter) if (!pCounter)
return; return;
psci = pCounter->pSysCounterInfo;
ct = pCounter->pSysCounterInfo->counterType; ct = pCounter->pSysCounterInfo->counterType;
if (ct == XSyncCounterNeverChanges) if (ct == XSyncCounterNeverChanges)
return; return;
...@@ -2460,7 +2460,7 @@ ServertimeQueryValue(pCounter, pValue_return) ...@@ -2460,7 +2460,7 @@ ServertimeQueryValue(pCounter, pValue_return)
static void static void
ServertimeBracketValues(pCounter, pbracket_less, pbracket_greater) ServertimeBracketValues(pCounter, pbracket_less, pbracket_greater)
void * pCounter; void *pCounter;
CARD64 *pbracket_less; CARD64 *pbracket_less;
CARD64 *pbracket_greater; CARD64 *pbracket_greater;
{ {
...@@ -2480,7 +2480,7 @@ ServertimeBracketValues(pCounter, pbracket_less, pbracket_greater) ...@@ -2480,7 +2480,7 @@ ServertimeBracketValues(pCounter, pbracket_less, pbracket_greater)
} }
static void static void
SyncInitServerTime() SyncInitServerTime(void)
{ {
CARD64 resolution; CARD64 resolution;
...@@ -2502,14 +2502,14 @@ static XSyncValue *pIdleTimeValueLess; ...@@ -2502,14 +2502,14 @@ static XSyncValue *pIdleTimeValueLess;
static XSyncValue *pIdleTimeValueGreater; static XSyncValue *pIdleTimeValueGreater;
static void static void
IdleTimeQueryValue (pointer pCounter, CARD64 *pValue_return) IdleTimeQueryValue (void *pCounter, CARD64 *pValue_return)
{ {
CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds; CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
XSyncIntsToValue (pValue_return, idle, 0); XSyncIntsToValue (pValue_return, idle, 0);
} }
static void static void
IdleTimeBlockHandler (pointer env, struct timeval **wt, pointer LastSelectMask) IdleTimeBlockHandler (void *env, struct timeval **wt, void *LastSelectMask)
{ {
XSyncValue idle, old_idle; XSyncValue idle, old_idle;
SyncTriggerList *list = IdleTimeCounter->pTriglist; SyncTriggerList *list = IdleTimeCounter->pTriglist;
...@@ -2584,9 +2584,9 @@ IdleTimeBlockHandler (pointer env, struct timeval **wt, pointer LastSelectMask) ...@@ -2584,9 +2584,9 @@ IdleTimeBlockHandler (pointer env, struct timeval **wt, pointer LastSelectMask)
} }
static void static void
IdleTimeWakeupHandler (pointer env, IdleTimeWakeupHandler (void * env,
int rc, int rc,
pointer LastSelectMask) void * LastSelectMask)
{ {
XSyncValue idle; XSyncValue idle;
...@@ -2598,14 +2598,14 @@ IdleTimeWakeupHandler (pointer env, ...@@ -2598,14 +2598,14 @@ IdleTimeWakeupHandler (pointer env,
if ((pIdleTimeValueGreater && if ((pIdleTimeValueGreater &&
XSyncValueGreaterOrEqual (idle, *pIdleTimeValueGreater)) || XSyncValueGreaterOrEqual (idle, *pIdleTimeValueGreater)) ||
(pIdleTimeValueLess && (pIdleTimeValueLess &&
XSyncValueLessOrEqual (idle, *pIdleTimeValueLess))) XSyncValueLessOrEqual (idle, *pIdleTimeValueLess)))
{ {
SyncChangeCounter (IdleTimeCounter, idle); SyncChangeCounter (IdleTimeCounter, idle);
} }
} }
static void static void
IdleTimeBracketValues (pointer pCounter, IdleTimeBracketValues (void *pCounter,
CARD64 *pbracket_less, CARD64 *pbracket_less,
CARD64 *pbracket_greater) CARD64 *pbracket_greater)
{ {
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
#include <nx-X11/X.h> #include <nx-X11/X.h>
#include <nx-X11/Xproto.h> #include <nx-X11/Xproto.h>
#include "misc.h" #include "misc.h"
#include "os.h"
#include "dixstruct.h" #include "dixstruct.h"
#include "gcstruct.h" #include "gcstruct.h"
#include "dixfontstr.h" #include "dixfontstr.h"
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#include "swaprep.h" #include "swaprep.h"
#include <nx-X11/extensions/XResproto.h> #include <nx-X11/extensions/XResproto.h>
#include "pixmapstr.h" #include "pixmapstr.h"
#include "windowstr.h"
#include "gcstruct.h"
#include "protocol-versions.h" #include "protocol-versions.h"
static int static int
...@@ -171,13 +174,54 @@ ProcXResQueryClientResources (ClientPtr client) ...@@ -171,13 +174,54 @@ ProcXResQueryClientResources (ClientPtr client)
return (client->noClientException); return (client->noClientException);
} }
static unsigned long
ResGetApproxPixmapBytes (PixmapPtr pix)
{
unsigned long nPixels;
int bytesPerPixel;
bytesPerPixel = pix->drawable.bitsPerPixel>>3;
nPixels = pix->drawable.width * pix->drawable.height;
/* Divide by refcnt as pixmap could be shared between clients,
* so total pixmap mem is shared between these.
*/
return ( nPixels * bytesPerPixel ) / pix->refcnt;
}
static void static void
ResFindPixmaps (void * value, XID id, void * cdata) ResFindPixmaps (void * value, XID id, void * cdata)
{ {
unsigned long *bytes = (unsigned long *)cdata; unsigned long *bytes = (unsigned long *)cdata;
PixmapPtr pix = (PixmapPtr)value; PixmapPtr pix = (PixmapPtr)value;
*bytes += (pix->devKind * pix->drawable.height); *bytes += ResGetApproxPixmapBytes(pix);
}
static void
ResFindWindowPixmaps (void * value, XID id, void * cdata)
{
unsigned long *bytes = (unsigned long *)cdata;
WindowPtr pWin = (WindowPtr)value;
if (pWin->backgroundState == BackgroundPixmap)
*bytes += ResGetApproxPixmapBytes(pWin->background.pixmap);
if (pWin->border.pixmap != NULL && !pWin->borderIsPixel)
*bytes += ResGetApproxPixmapBytes(pWin->border.pixmap);
}
static void
ResFindGCPixmaps (void * value, XID id, void * cdata)
{
unsigned long *bytes = (unsigned long *)cdata;
GCPtr pGC = (GCPtr)value;
if (pGC->stipple != NULL)
*bytes += ResGetApproxPixmapBytes(pGC->stipple);
if (pGC->tile.pixmap != NULL && !pGC->tileIsPixel)
*bytes += ResGetApproxPixmapBytes(pGC->tile.pixmap);
} }
static int static int
...@@ -204,6 +248,24 @@ ProcXResQueryClientPixmapBytes (ClientPtr client) ...@@ -204,6 +248,24 @@ ProcXResQueryClientPixmapBytes (ClientPtr client)
FindClientResourcesByType(clients[clientID], RT_PIXMAP, ResFindPixmaps, FindClientResourcesByType(clients[clientID], RT_PIXMAP, ResFindPixmaps,
(void *)(&bytes)); (void *)(&bytes));
/*
* Make sure win background pixmaps also held to account.
*/
FindClientResourcesByType(clients[clientID], RT_WINDOW,
ResFindWindowPixmaps,
(void *)(&bytes));
/*
* GC Tile & Stipple pixmaps too.
*/
FindClientResourcesByType(clients[clientID], RT_GC,
ResFindGCPixmaps,
(void *)(&bytes));
#ifdef COMPOSITE
/* FIXME: include composite pixmaps too */
#endif
rep.type = X_Reply; rep.type = X_Reply;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.length = 0; rep.length = 0;
......
...@@ -168,12 +168,10 @@ ProcXTestFakeInput(client) ...@@ -168,12 +168,10 @@ ProcXTestFakeInput(client)
register ClientPtr client; register ClientPtr client;
{ {
REQUEST(xXTestFakeInputReq); REQUEST(xXTestFakeInputReq);
int nev; int nev, n, type;
int n;
xEvent *ev; xEvent *ev;
DeviceIntPtr dev = NULL; DeviceIntPtr dev = NULL;
WindowPtr root; WindowPtr root;
int type;
#ifdef XINPUT #ifdef XINPUT
Bool extension = FALSE; Bool extension = FALSE;
deviceValuator *dv = NULL; deviceValuator *dv = NULL;
...@@ -437,6 +435,8 @@ ProcXTestFakeInput(client) ...@@ -437,6 +435,8 @@ ProcXTestFakeInput(client)
(root->drawable.pScreen, (root->drawable.pScreen,
ev->u.keyButtonPointer.rootX, ev->u.keyButtonPointer.rootX,
ev->u.keyButtonPointer.rootY, FALSE); ev->u.keyButtonPointer.rootY, FALSE);
dev->valuator->lastx = ev->u.keyButtonPointer.rootX;
dev->valuator->lasty = ev->u.keyButtonPointer.rootY;
break; break;
case ButtonPress: case ButtonPress:
case ButtonRelease: case ButtonRelease:
......
...@@ -381,10 +381,8 @@ ProcXvQueryAdaptors(ClientPtr client) ...@@ -381,10 +381,8 @@ ProcXvQueryAdaptors(ClientPtr client)
xvFormat format; xvFormat format;
xvAdaptorInfo ainfo; xvAdaptorInfo ainfo;
xvQueryAdaptorsReply rep; xvQueryAdaptorsReply rep;
int totalSize; int totalSize, na, nf;
int na;
XvAdaptorPtr pa; XvAdaptorPtr pa;
int nf;
XvFormatPtr pf; XvFormatPtr pf;
WindowPtr pWin; WindowPtr pWin;
ScreenPtr pScreen; ScreenPtr pScreen;
...@@ -539,9 +537,9 @@ ProcXvQueryEncodings(ClientPtr client) ...@@ -539,9 +537,9 @@ ProcXvQueryEncodings(ClientPtr client)
static int static int
ProcXvPutVideo(ClientPtr client) ProcXvPutVideo(ClientPtr client)
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
XvPortPtr pPort; XvPortPtr pPort;
register GCPtr pGC; GCPtr pGC;
int status; int status;
REQUEST(xvPutVideoReq); REQUEST(xvPutVideoReq);
...@@ -585,9 +583,9 @@ ProcXvPutVideo(ClientPtr client) ...@@ -585,9 +583,9 @@ ProcXvPutVideo(ClientPtr client)
static int static int
ProcXvPutStill(ClientPtr client) ProcXvPutStill(ClientPtr client)
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
XvPortPtr pPort; XvPortPtr pPort;
register GCPtr pGC; GCPtr pGC;
int status; int status;
REQUEST(xvPutStillReq); REQUEST(xvPutStillReq);
...@@ -632,9 +630,9 @@ ProcXvPutStill(ClientPtr client) ...@@ -632,9 +630,9 @@ ProcXvPutStill(ClientPtr client)
static int static int
ProcXvGetVideo(ClientPtr client) ProcXvGetVideo(ClientPtr client)
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
XvPortPtr pPort; XvPortPtr pPort;
register GCPtr pGC; GCPtr pGC;
int status; int status;
REQUEST(xvGetVideoReq); REQUEST(xvGetVideoReq);
...@@ -679,9 +677,9 @@ ProcXvGetVideo(ClientPtr client) ...@@ -679,9 +677,9 @@ ProcXvGetVideo(ClientPtr client)
static int static int
ProcXvGetStill(ClientPtr client) ProcXvGetStill(ClientPtr client)
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
XvPortPtr pPort; XvPortPtr pPort;
register GCPtr pGC; GCPtr pGC;
int status; int status;
REQUEST(xvGetStillReq); REQUEST(xvGetStillReq);
...@@ -725,7 +723,7 @@ ProcXvGetStill(ClientPtr client) ...@@ -725,7 +723,7 @@ ProcXvGetStill(ClientPtr client)
static int static int
ProcXvSelectVideoNotify(ClientPtr client) ProcXvSelectVideoNotify(ClientPtr client)
{ {
register DrawablePtr pDraw; DrawablePtr pDraw;
REQUEST(xvSelectVideoNotifyReq); REQUEST(xvSelectVideoNotifyReq);
REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq); REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq);
...@@ -831,7 +829,7 @@ static int ...@@ -831,7 +829,7 @@ static int
ProcXvStopVideo(ClientPtr client) ProcXvStopVideo(ClientPtr client)
{ {
int status; int status;
register DrawablePtr pDraw; DrawablePtr pDraw;
XvPortPtr pPort; XvPortPtr pPort;
REQUEST(xvStopVideoReq); REQUEST(xvStopVideoReq);
REQUEST_SIZE_MATCH(xvStopVideoReq); REQUEST_SIZE_MATCH(xvStopVideoReq);
......
...@@ -153,7 +153,7 @@ static int XvdiSendVideoNotify(XvPortPtr, DrawablePtr, int); ...@@ -153,7 +153,7 @@ static int XvdiSendVideoNotify(XvPortPtr, DrawablePtr, int);
*/ */
void void
XvExtensionInit() XvExtensionInit(void)
{ {
ExtensionEntry *extEntry; ExtensionEntry *extEntry;
...@@ -205,7 +205,7 @@ XvExtensionInit() ...@@ -205,7 +205,7 @@ XvExtensionInit()
} }
static Bool static Bool
CreateResourceTypes() CreateResourceTypes(void)
{ {
......
...@@ -668,7 +668,7 @@ SProcXvMCDispatch (ClientPtr client) ...@@ -668,7 +668,7 @@ SProcXvMCDispatch (ClientPtr client)
} }
void void
XvMCExtensionInit() XvMCExtensionInit(void)
{ {
ExtensionEntry *extEntry; ExtensionEntry *extEntry;
......
...@@ -16,7 +16,7 @@ os 7.1/1.1 ...@@ -16,7 +16,7 @@ os 7.1/1.1
randr 1.18.0 randr 1.18.0
record 1.4.2 record 1.4.2
render 6.9/7.0 render 6.9/7.0
Xext 7.1/1.1 Xext 1.4.2
xfixes 1.4.2 xfixes 1.4.2
Xi 1.3.0.0 Xi 1.3.0.0
xkb 1.3.0.0 xkb 1.3.0.0
...@@ -95,15 +95,21 @@ ShmExtensionInit(void) ...@@ -95,15 +95,21 @@ ShmExtensionInit(void)
} }
#endif #endif
#ifdef NXAGENT_SERVER
if (nxagentOption(SharedMemory) == False) if (nxagentOption(SharedMemory) == False)
{ {
return; return;
} }
#endif
sharedPixmaps = xFalse; sharedPixmaps = xFalse;
pixmapFormat = 0; pixmapFormat = 0;
{ {
#ifdef NXAGENT_SERVER
sharedPixmaps = nxagentOption(SharedPixmaps); sharedPixmaps = nxagentOption(SharedPixmaps);
#else
sharedPixmaps = xTrue;
#endif
pixmapFormat = shmPixFormat[0]; pixmapFormat = shmPixFormat[0];
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
{ {
...@@ -156,7 +162,7 @@ ShmExtensionInit(void) ...@@ -156,7 +162,7 @@ ShmExtensionInit(void)
} }
static void static void
miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) nxagent_miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
DrawablePtr dst; DrawablePtr dst;
GCPtr pGC; GCPtr pGC;
int depth, w, h, sx, sy, sw, sh, dx, dy; int depth, w, h, sx, sy, sw, sh, dx, dy;
...@@ -166,18 +172,15 @@ miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -166,18 +172,15 @@ miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
PixmapPtr pmap; PixmapPtr pmap;
GCPtr putGC; GCPtr putGC;
nxagentShmTrap = 0;
putGC = GetScratchGC(depth, dst->pScreen); putGC = GetScratchGC(depth, dst->pScreen);
if (!putGC) if (!putGC)
{ {
nxagentShmTrap = 1;
return; return;
} }
pmap = (*dst->pScreen->CreatePixmap)(dst->pScreen, sw, sh, depth, pmap = (*dst->pScreen->CreatePixmap)(dst->pScreen, sw, sh, depth,
CREATE_PIXMAP_USAGE_SCRATCH); CREATE_PIXMAP_USAGE_SCRATCH);
if (!pmap) if (!pmap)
{ {
nxagentShmTrap = 1;
FreeScratchGC(putGC); FreeScratchGC(putGC);
return; return;
} }
...@@ -192,9 +195,28 @@ miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -192,9 +195,28 @@ miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
(void)(*pGC->ops->CopyArea)((DrawablePtr)pmap, dst, pGC, 0, 0, sw, sh, (void)(*pGC->ops->CopyArea)((DrawablePtr)pmap, dst, pGC, 0, 0, sw, sh,
dx, dy); dx, dy);
(*pmap->drawable.pScreen->DestroyPixmap)(pmap); (*pmap->drawable.pScreen->DestroyPixmap)(pmap);
}
static void
miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
DrawablePtr dst;
GCPtr pGC;
int depth, w, h, sx, sy, sw, sh, dx, dy;
unsigned int format;
char *data;
{
/* Careful! This wrapper DEACTIVATES the trap! */
nxagentShmTrap = 0;
nxagent_miShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data);
nxagentShmTrap = 1; nxagentShmTrap = 1;
return;
} }
static void static void
fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
DrawablePtr dst; DrawablePtr dst;
...@@ -203,6 +225,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -203,6 +225,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
unsigned int format; unsigned int format;
char *data; char *data;
{ {
#ifdef NXAGENT_SERVER
int length; int length;
char *newdata; char *newdata;
extern int nxagentImageLength(int, int, int, int, int); extern int nxagentImageLength(int, int, int, int, int);
...@@ -211,6 +234,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -211,6 +234,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
fprintf(stderr, "fbShmPutImage: Called with drawable at [%p] GC at [%p] data at [%p].\n", fprintf(stderr, "fbShmPutImage: Called with drawable at [%p] GC at [%p] data at [%p].\n",
(void *) dst, (void *) pGC, (void *) data); (void *) dst, (void *) pGC, (void *) data);
#endif #endif
#endif
if ((format == ZPixmap) || (depth == 1)) if ((format == ZPixmap) || (depth == 1))
{ {
...@@ -227,6 +251,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -227,6 +251,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
(void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC, (void)(*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC,
sx, sy, sw, sh, dx, dy); sx, sy, sw, sh, dx, dy);
#ifdef NXAGENT_SERVER
/* /*
* We updated the internal framebuffer, * We updated the internal framebuffer,
* now we want to go on the real X. * now we want to go on the real X.
...@@ -255,6 +280,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data) ...@@ -255,6 +280,7 @@ fbShmPutImage(dst, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, data)
#endif #endif
} }
#endif /* NXAGENT_SERVER */
FreeScratchPixmapHeader(pPixmap); FreeScratchPixmapHeader(pPixmap);
} }
else else
...@@ -345,17 +371,46 @@ ProcShmPutImage(client) ...@@ -345,17 +371,46 @@ ProcShmPutImage(client)
stuff->srcY, stuff->totalWidth, stuff->totalHeight); stuff->srcY, stuff->totalWidth, stuff->totalHeight);
#endif #endif
#ifdef TEST #ifndef NXAGENT_SERVER
fprintf(stderr, "ProcShmPutImage: Calling (*shmFuncs[pDraw->pScreen->myNum]->PutImage)().\n"); /*
#endif It seems like this code was removed for a good reason. Including
it leads to very strange issues when coupled with libXcomp and using
(*shmFuncs[pDraw->pScreen->myNum]->PutImage)( connection speed settings lower than LAN (and even on LAN some icons
pDraw, pGC, stuff->depth, stuff->format, are not showing up correctly, e.g., when using MATE).
stuff->totalWidth, stuff->totalHeight,
stuff->srcX, stuff->srcY, Further investigation on why this happens pending and might happen at a
stuff->srcWidth, stuff->srcHeight, later time.
See also ArcticaProject/nx-libs#656
*/
if ((((stuff->format == ZPixmap) && (stuff->srcX == 0)) ||
((stuff->format != ZPixmap) &&
(stuff->srcX < screenInfo.bitmapScanlinePad) &&
((stuff->format == XYBitmap) ||
- ((stuff->srcY == 0) &&
- (stuff->srcHeight == stuff->totalHeight))))) &&
((stuff->srcX + stuff->srcWidth) == stuff->totalWidth))
(*pGC->ops->PutImage) (pDraw, pGC, stuff->depth,
stuff->dstX, stuff->dstY, stuff->dstX, stuff->dstY,
shmdesc->addr + stuff->offset); stuff->totalWidth, stuff->srcHeight,
stuff->srcX, stuff->format,
shmdesc->addr + stuff->offset +
(stuff->srcY * length));
- else
#endif
{
#ifdef TEST
fprintf(stderr, "ProcShmPutImage: Calling (*shmFuncs[pDraw->pScreen->myNum]->PutImage)().\n");
#endif
(*shmFuncs[pDraw->pScreen->myNum]->PutImage)(
pDraw, pGC, stuff->depth, stuff->format,
stuff->totalWidth, stuff->totalHeight,
stuff->srcX, stuff->srcY,
stuff->srcWidth, stuff->srcHeight,
stuff->dstX, stuff->dstY,
shmdesc->addr + stuff->offset);
}
if (stuff->sendEvent) if (stuff->sendEvent)
{ {
...@@ -376,7 +431,7 @@ ProcShmPutImage(client) ...@@ -376,7 +431,7 @@ ProcShmPutImage(client)
static PixmapPtr static PixmapPtr
fbShmCreatePixmap (pScreen, width, height, depth, addr) nxagent_fbShmCreatePixmap (pScreen, width, height, depth, addr)
ScreenPtr pScreen; ScreenPtr pScreen;
int width; int width;
int height; int height;
...@@ -385,47 +440,59 @@ fbShmCreatePixmap (pScreen, width, height, depth, addr) ...@@ -385,47 +440,59 @@ fbShmCreatePixmap (pScreen, width, height, depth, addr)
{ {
register PixmapPtr pPixmap; register PixmapPtr pPixmap;
nxagentShmPixmapTrap = 1;
pPixmap = (*pScreen->CreatePixmap)(pScreen, width, height, depth, 0); pPixmap = (*pScreen->CreatePixmap)(pScreen, width, height, depth, 0);
if (!pPixmap) if (!pPixmap)
{ {
nxagentShmPixmapTrap = 0;
return NullPixmap; return NullPixmap;
} }
#ifdef TEST #if defined(NXAGENT_SERVER) && defined(TEST)
fprintf(stderr,"fbShmCreatePixmap: Width [%d] Height [%d] Depth [%d] Hint[%d]\n", width, height, depth, 0); fprintf(stderr,"fbShmCreatePixmap: Width [%d] Height [%d] Depth [%d] Hint[%d]\n", width, height, depth, 0);
#endif #endif
if (!(*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth, if (!(*pScreen->ModifyPixmapHeader)(pPixmap, width, height, depth,
BitsPerPixel(depth), PixmapBytePad(width, depth), (void *)addr)) BitsPerPixel(depth), PixmapBytePad(width, depth), (void *)addr))
{ {
#ifdef WARNING #if defined(NXAGENT_SERVER) && defined(WARNING)
fprintf(stderr,"fbShmCreatePixmap: Return Null Pixmap.\n"); fprintf(stderr,"fbShmCreatePixmap: Return Null Pixmap.\n");
#endif #endif
(*pScreen->DestroyPixmap)(pPixmap); (*pScreen->DestroyPixmap)(pPixmap);
nxagentShmPixmapTrap = 0;
return NullPixmap; return NullPixmap;
} }
return pPixmap;
}
static PixmapPtr
fbShmCreatePixmap (pScreen, width, height, depth, addr)
ScreenPtr pScreen;
int width;
int height;
int depth;
char *addr;
{
PixmapPtr result;
nxagentShmPixmapTrap = 1;
result = nxagent_fbShmCreatePixmap(pScreen, width, height, depth, addr);
nxagentShmPixmapTrap = 0; nxagentShmPixmapTrap = 0;
return pPixmap; return result;
} }
static int static int
ProcShmDispatch (client) nxagent_ProcShmDispatch (client)
register ClientPtr client; register ClientPtr client;
{ {
REQUEST(xReq); REQUEST(xReq);
#ifdef NXAGENT_SERVER
#ifdef TEST #ifdef TEST
fprintf(stderr, "ProcShmDispatch: Going to execute operation [%d] for client [%d].\n", fprintf(stderr, "ProcShmDispatch: Going to execute operation [%d] for client [%d].\n",
stuff -> data, client -> index); stuff -> data, client -> index);
...@@ -436,6 +503,7 @@ ProcShmDispatch (client) ...@@ -436,6 +503,7 @@ ProcShmDispatch (client)
nxagentShmRequestLiteral[stuff->data], stuff->data); nxagentShmRequestLiteral[stuff->data], stuff->data);
} }
#endif #endif
#endif
switch (stuff->data) switch (stuff->data)
{ {
...@@ -447,36 +515,18 @@ ProcShmDispatch (client) ...@@ -447,36 +515,18 @@ ProcShmDispatch (client)
return ProcShmDetach(client); return ProcShmDetach(client);
case X_ShmPutImage: case X_ShmPutImage:
{ {
int result; #ifdef NXAGENT_SERVER
#ifdef TEST #ifdef TEST
fprintf(stderr, "ProcShmDispatch: Going to execute ProcShmPutImage() for client [%d].\n", fprintf(stderr, "ProcShmDispatch: Going to execute ProcShmPutImage() for client [%d].\n",
client -> index); client -> index);
#endif #endif
#endif
nxagentShmTrap = 1;
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
{ return ProcPanoramiXShmPutImage(client);
result = ProcPanoramiXShmPutImage(client);
nxagentShmTrap = 0;
return result;
}
#endif #endif
return ProcShmPutImage(client);
result = ProcShmPutImage(client);
nxagentShmTrap = 0;
#ifdef TEST
fprintf(stderr, "ProcShmDispatch: Returning from ProcShmPutImage() for client [%d].\n",
client -> index);
#endif
return result;
} }
case X_ShmGetImage: case X_ShmGetImage:
#ifdef PANORAMIX #ifdef PANORAMIX
...@@ -495,6 +545,23 @@ ProcShmDispatch (client) ...@@ -495,6 +545,23 @@ ProcShmDispatch (client)
} }
} }
/* A wrapper that handles the trap. This construct is used
to keep the derived code closer to the original
*/
static int
ProcShmDispatch (register ClientPtr client)
{
int result;
nxagentShmTrap = 1;
result = nxagent_ProcShmDispatch(client);
nxagentShmTrap = 0;
return result;
}
static int static int
SProcShmDispatch (client) SProcShmDispatch (client)
register ClientPtr client; register ClientPtr client;
...@@ -523,11 +590,15 @@ SProcShmDispatch (client) ...@@ -523,11 +590,15 @@ SProcShmDispatch (client)
client -> index); client -> index);
#endif #endif
#ifdef NXAGENT_SERVER
nxagentShmTrap = 1; nxagentShmTrap = 1;
#endif
result = SProcShmPutImage(client); result = SProcShmPutImage(client);
#ifdef NXAGENT_SERVER
nxagentShmTrap = 0; nxagentShmTrap = 0;
#endif
#ifdef TEST #ifdef TEST
fprintf(stderr, "SProcShmDispatch: Returning from SProcShmPutImage() for client [%d].\n", fprintf(stderr, "SProcShmDispatch: Returning from SProcShmPutImage() for client [%d].\n",
......
...@@ -64,194 +64,195 @@ SOFTWARE. ...@@ -64,194 +64,195 @@ SOFTWARE.
*/ */
int int
ProcXvDispatch(ClientPtr client) nxagent_ProcXvDispatch(ClientPtr client)
{ {
int result;
REQUEST(xReq); REQUEST(xReq);
UpdateCurrentTime(); UpdateCurrentTime();
/*
* Report upstream that we are
* dispatching a XVideo operation.
*/
nxagentXvTrap = 1;
#ifdef TEST
fprintf(stderr, "ProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index);
#endif
switch (stuff->data) switch (stuff->data)
{ {
case xv_QueryExtension: result = (ProcXvQueryExtension(client)); break; case xv_QueryExtension: return(ProcXvQueryExtension(client));
case xv_QueryAdaptors: result = (ProcXvQueryAdaptors(client)); break; case xv_QueryAdaptors: return(ProcXvQueryAdaptors(client));
case xv_QueryEncodings: result = (ProcXvQueryEncodings(client)); break; case xv_QueryEncodings: return(ProcXvQueryEncodings(client));
case xv_PutVideo: case xv_PutVideo:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvPutVideo(client)); return(XineramaXvPutVideo(client));
else else
#endif #endif
{ return(ProcXvPutVideo(client));
result = (ProcXvPutVideo(client));
}
break;
case xv_PutStill: case xv_PutStill:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvPutStill(client)); return(XineramaXvPutStill(client));
else else
#endif #endif
{ {
result = (ProcXvPutStill(client)); return(ProcXvPutStill(client));
} }
break; case xv_GetVideo: return(ProcXvGetVideo(client));
case xv_GetVideo: result = (ProcXvGetVideo(client)); break; case xv_GetStill: return(ProcXvGetStill(client));
case xv_GetStill: result = (ProcXvGetStill(client)); break; case xv_GrabPort: return(ProcXvGrabPort(client));
case xv_GrabPort: result = (ProcXvGrabPort(client)); break; case xv_UngrabPort: return(ProcXvUngrabPort(client));
case xv_UngrabPort: result = (ProcXvUngrabPort(client)); break; case xv_SelectVideoNotify: return(ProcXvSelectVideoNotify(client));
case xv_SelectVideoNotify: result = (ProcXvSelectVideoNotify(client)); break; case xv_SelectPortNotify: return(ProcXvSelectPortNotify(client));
case xv_SelectPortNotify: result = (ProcXvSelectPortNotify(client)); break;
case xv_StopVideo: case xv_StopVideo:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvStopVideo(client)); return(XineramaXvStopVideo(client));
else else
#endif #endif
{ return(ProcXvStopVideo(client));
result = (ProcXvStopVideo(client));
}
break;
case xv_SetPortAttribute: case xv_SetPortAttribute:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvSetPortAttribute(client)); return(XineramaXvSetPortAttribute(client));
else else
#endif #endif
{ return(ProcXvSetPortAttribute(client));
result = (ProcXvSetPortAttribute(client)); case xv_GetPortAttribute: return(ProcXvGetPortAttribute(client));
} case xv_QueryBestSize: return(ProcXvQueryBestSize(client));
break; case xv_QueryPortAttributes: return(ProcXvQueryPortAttributes(client));
case xv_GetPortAttribute: result = (ProcXvGetPortAttribute(client)); break;
case xv_QueryBestSize: result = (ProcXvQueryBestSize(client)); break;
case xv_QueryPortAttributes: result = (ProcXvQueryPortAttributes(client)); break;
case xv_PutImage: case xv_PutImage:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvPutImage(client)); return(XineramaXvPutImage(client));
else else
#endif #endif
{ return(ProcXvPutImage(client));
result = (ProcXvPutImage(client));
}
break;
#ifdef MITSHM #ifdef MITSHM
case xv_ShmPutImage: case xv_ShmPutImage:
#ifdef PANORAMIX #ifdef PANORAMIX
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
result = (XineramaXvShmPutImage(client)); return(XineramaXvShmPutImage(client));
else else
#endif #endif
{ return(ProcXvShmPutImage(client));
result = (ProcXvShmPutImage(client));
}
break;
#endif #endif
case xv_QueryImageAttributes: result = (ProcXvQueryImageAttributes(client)); break; case xv_QueryImageAttributes: return(ProcXvQueryImageAttributes(client));
case xv_ListImageFormats: result = (ProcXvListImageFormats(client)); break; case xv_ListImageFormats: return(ProcXvListImageFormats(client));
default: default:
if (stuff->data < xvNumRequests) if (stuff->data < xvNumRequests)
{ {
SendErrorToClient(client, XvReqCode, stuff->data, 0, SendErrorToClient(client, XvReqCode, stuff->data, 0,
BadImplementation); BadImplementation);
result = (BadImplementation); break; return(BadImplementation);
} }
else else
{ {
SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest); SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
result = (BadRequest); break; return(BadRequest);
} }
} }
nxagentXvTrap = 0;
#ifdef TEST
fprintf(stderr, "ProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index);
#endif
return result;
} }
int int
SProcXvDispatch(ClientPtr client) ProcXvDispatch(ClientPtr client)
{ {
int result; int result;
REQUEST(xReq);
UpdateCurrentTime();
/* /*
* Report upstream that we are * Report upstream that we are
* dispatching a XVideo operation. * dispatching a XVideo operation.
*/ */
#ifdef TEST
fprintf(stderr, "ProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index);
#endif
nxagentXvTrap = 1; nxagentXvTrap = 1;
result = nxagent_ProcXvDispatch(client);
nxagentXvTrap = 0;
#ifdef TEST #ifdef TEST
fprintf(stderr, "SProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n", fprintf(stderr, "ProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index); stuff->data, client -> index);
#endif #endif
return result;
}
int
nxagent_SProcXvDispatch(ClientPtr client)
{
REQUEST(xReq);
UpdateCurrentTime();
switch (stuff->data) switch (stuff->data)
{ {
case xv_QueryExtension: result = (SProcXvQueryExtension(client)); break; case xv_QueryExtension: return(SProcXvQueryExtension(client));
case xv_QueryAdaptors: result = (SProcXvQueryAdaptors(client)); break; case xv_QueryAdaptors: return(SProcXvQueryAdaptors(client));
case xv_QueryEncodings: result = (SProcXvQueryEncodings(client)); break; case xv_QueryEncodings: return(SProcXvQueryEncodings(client));
case xv_PutVideo: result = (SProcXvPutVideo(client)); break; case xv_PutVideo: return(SProcXvPutVideo(client));
case xv_PutStill: result = (SProcXvPutStill(client)); break; case xv_PutStill: return(SProcXvPutStill(client));
case xv_GetVideo: result = (SProcXvGetVideo(client)); break; case xv_GetVideo: return(SProcXvGetVideo(client));
case xv_GetStill: result = (SProcXvGetStill(client)); break; case xv_GetStill: return(SProcXvGetStill(client));
case xv_GrabPort: result = (SProcXvGrabPort(client)); break; case xv_GrabPort: return(SProcXvGrabPort(client));
case xv_UngrabPort: result = (SProcXvUngrabPort(client)); break; case xv_UngrabPort: return(SProcXvUngrabPort(client));
case xv_SelectVideoNotify: result = (SProcXvSelectVideoNotify(client)); break; case xv_SelectVideoNotify: return(SProcXvSelectVideoNotify(client));
case xv_SelectPortNotify: result = (SProcXvSelectPortNotify(client)); break; case xv_SelectPortNotify: return(SProcXvSelectPortNotify(client));
case xv_StopVideo: result = (SProcXvStopVideo(client)); break; case xv_StopVideo: return(SProcXvStopVideo(client));
case xv_SetPortAttribute: result = (SProcXvSetPortAttribute(client)); break; case xv_SetPortAttribute: return(SProcXvSetPortAttribute(client));
case xv_GetPortAttribute: result = (SProcXvGetPortAttribute(client)); break; case xv_GetPortAttribute: return(SProcXvGetPortAttribute(client));
case xv_QueryBestSize: result = (SProcXvQueryBestSize(client)); break; case xv_QueryBestSize: return(SProcXvQueryBestSize(client));
case xv_QueryPortAttributes: result = (SProcXvQueryPortAttributes(client)); break; case xv_QueryPortAttributes: return(SProcXvQueryPortAttributes(client));
case xv_PutImage: result = (SProcXvPutImage(client)); break; case xv_PutImage: return(SProcXvPutImage(client));
#ifdef MITSHM #ifdef MITSHM
case xv_ShmPutImage: result = (SProcXvShmPutImage(client)); break; case xv_ShmPutImage: return(SProcXvShmPutImage(client));
#endif #endif
case xv_QueryImageAttributes: result = (SProcXvQueryImageAttributes(client)); break; case xv_QueryImageAttributes: return(SProcXvQueryImageAttributes(client));
case xv_ListImageFormats: result = (SProcXvListImageFormats(client)); break; case xv_ListImageFormats: return(SProcXvListImageFormats(client));
default: default:
if (stuff->data < xvNumRequests) if (stuff->data < xvNumRequests)
{ {
SendErrorToClient(client, XvReqCode, stuff->data, 0, SendErrorToClient(client, XvReqCode, stuff->data, 0,
BadImplementation); BadImplementation);
result = (BadImplementation); break; return(BadImplementation);
} }
else else
{ {
SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest); SendErrorToClient(client, XvReqCode, stuff->data, 0, BadRequest);
result = (BadRequest); break; return(BadRequest);
} }
} }
}
int
SProcXvDispatch(ClientPtr client)
{
int result;
/*
* Report upstream that we are
* dispatching a XVideo operation.
*/
#ifdef TEST
fprintf(stderr, "SProcXvDispatch: Going to dispatch XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index);
#endif
nxagentXvTrap = 1;
result = nxagent_SProcXvDispatch(client);
nxagentXvTrap = 0; nxagentXvTrap = 0;
#ifdef TEST #ifdef TEST
fprintf(stderr, "ProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n", fprintf(stderr, "SProcXvDispatch: Dispatched XVideo operation [%d] for client [%d].\n",
stuff->data, client -> index); stuff->data, client -> index);
#endif #endif
return result; return result;
} }
#endif /* !defined(__sun) && !defined(__CYGWIN__) */ #endif /* !defined(__sun) && !defined(__CYGWIN__) */
...@@ -147,6 +147,11 @@ typedef struct _ValuatorClassRec { ...@@ -147,6 +147,11 @@ typedef struct _ValuatorClassRec {
AxisInfoPtr axes; AxisInfoPtr axes;
unsigned short numAxes; unsigned short numAxes;
int *axisVal; int *axisVal;
/* the next two are only written by xtest and never read currently. They exist
to satisfy the compiler. Once Xi is updated, too, they will be a regular member
anyway */
int lastx, lasty; /* last event recorded, not posted to
* client; see dix/devices.c */
CARD8 mode; CARD8 mode;
} ValuatorClassRec, *ValuatorClassPtr; } ValuatorClassRec, *ValuatorClassPtr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment