fixes: Add panoramix support
Taken from:
583f4dde81
With minor style fixes and ported to dixLookupResourceByType.
Reviewed-by: Dave Airlie <airlied@gmail.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
1b3c57f075
commit
6dea617e0f
|
@ -53,6 +53,9 @@ Equipment Corporation.
|
||||||
#include "servermd.h"
|
#include "servermd.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "picturestr.h"
|
#include "picturestr.h"
|
||||||
|
#ifdef XFIXES
|
||||||
|
#include "xfixesint.h"
|
||||||
|
#endif
|
||||||
#include "modinit.h"
|
#include "modinit.h"
|
||||||
#include "protocol-versions.h"
|
#include "protocol-versions.h"
|
||||||
|
|
||||||
|
@ -581,6 +584,9 @@ void PanoramiXExtensionInit(int argc, char *argv[])
|
||||||
ProcVector[X_StoreNamedColor] = PanoramiXStoreNamedColor;
|
ProcVector[X_StoreNamedColor] = PanoramiXStoreNamedColor;
|
||||||
|
|
||||||
PanoramiXRenderInit ();
|
PanoramiXRenderInit ();
|
||||||
|
#ifdef XFIXES
|
||||||
|
PanoramiXFixesInit ();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
extern Bool CreateConnectionBlock(void);
|
extern Bool CreateConnectionBlock(void);
|
||||||
|
@ -882,6 +888,9 @@ static void PanoramiXResetProc(ExtensionEntry* extEntry)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
PanoramiXRenderReset ();
|
PanoramiXRenderReset ();
|
||||||
|
#ifdef XFIXES
|
||||||
|
PanoramiXFixesReset ();
|
||||||
|
#endif
|
||||||
screenInfo.numScreens = PanoramiXNumScreens;
|
screenInfo.numScreens = PanoramiXNumScreens;
|
||||||
for (i = 256; i--; )
|
for (i = 256; i--; )
|
||||||
ProcVector[i] = SavedProcVector[i];
|
ProcVector[i] = SavedProcVector[i];
|
||||||
|
|
|
@ -26,6 +26,7 @@ extern _X_EXPORT unsigned long XRT_WINDOW;
|
||||||
extern _X_EXPORT unsigned long XRT_PIXMAP;
|
extern _X_EXPORT unsigned long XRT_PIXMAP;
|
||||||
extern _X_EXPORT unsigned long XRT_GC;
|
extern _X_EXPORT unsigned long XRT_GC;
|
||||||
extern _X_EXPORT unsigned long XRT_COLORMAP;
|
extern _X_EXPORT unsigned long XRT_COLORMAP;
|
||||||
|
extern _X_EXPORT unsigned long XRT_PICTURE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drivers are allowed to wrap this function. Each wrapper can decide that the
|
* Drivers are allowed to wrap this function. Each wrapper can decide that the
|
||||||
|
|
|
@ -842,3 +842,81 @@ SProcXFixesExpandRegion (ClientPtr client)
|
||||||
return (*ProcXFixesVector[stuff->xfixesReqType]) (client);
|
return (*ProcXFixesVector[stuff->xfixesReqType]) (client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
|
#include "panoramiX.h"
|
||||||
|
#include "panoramiXsrv.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetGCClipRegion (ClientPtr client)
|
||||||
|
{
|
||||||
|
REQUEST(xXFixesSetGCClipRegionReq);
|
||||||
|
int result = Success, j;
|
||||||
|
PanoramiXRes *gc;
|
||||||
|
REQUEST_SIZE_MATCH(xXFixesSetGCClipRegionReq);
|
||||||
|
|
||||||
|
if ((result = dixLookupResourceByType((void **)&gc, stuff->gc, XRT_GC,
|
||||||
|
client, DixWriteAccess))) {
|
||||||
|
client->errorValue = stuff->gc;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
FOR_NSCREENS_BACKWARD(j) {
|
||||||
|
stuff->gc = gc->info[j].id;
|
||||||
|
result = (*PanoramiXSaveXFixesVector[X_XFixesSetGCClipRegion]) (client);
|
||||||
|
if(result != Success) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetWindowShapeRegion (ClientPtr client)
|
||||||
|
{
|
||||||
|
int result = Success, j;
|
||||||
|
PanoramiXRes *win;
|
||||||
|
REQUEST(xXFixesSetWindowShapeRegionReq);
|
||||||
|
|
||||||
|
REQUEST_SIZE_MATCH(xXFixesSetWindowShapeRegionReq);
|
||||||
|
|
||||||
|
if ((result = dixLookupResourceByType((void **)&win, stuff->dest,
|
||||||
|
XRT_WINDOW, client,
|
||||||
|
DixWriteAccess))) {
|
||||||
|
client->errorValue = stuff->dest;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
FOR_NSCREENS_FORWARD(j) {
|
||||||
|
stuff->dest = win->info[j].id;
|
||||||
|
result = (*PanoramiXSaveXFixesVector[X_XFixesSetWindowShapeRegion]) (client);
|
||||||
|
if(result != Success) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetPictureClipRegion (ClientPtr client)
|
||||||
|
{
|
||||||
|
REQUEST(xXFixesSetPictureClipRegionReq);
|
||||||
|
int result = Success, j;
|
||||||
|
PanoramiXRes *pict;
|
||||||
|
|
||||||
|
REQUEST_SIZE_MATCH (xXFixesSetPictureClipRegionReq);
|
||||||
|
|
||||||
|
if ((result = dixLookupResourceByType((void **)&pict, stuff->picture,
|
||||||
|
XRT_PICTURE, client,
|
||||||
|
DixWriteAccess))) {
|
||||||
|
client->errorValue = stuff->picture;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
FOR_NSCREENS_BACKWARD(j) {
|
||||||
|
stuff->picture = pict->info[j].id;
|
||||||
|
result = (*PanoramiXSaveXFixesVector[X_XFixesSetPictureClipRegion]) (client);
|
||||||
|
if(result != Success) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -262,3 +262,33 @@ XFixesExtensionInit(void)
|
||||||
SetResourceTypeErrorValue(RegionResType, XFixesErrorBase + BadRegion);
|
SetResourceTypeErrorValue(RegionResType, XFixesErrorBase + BadRegion);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef PANORAMIX
|
||||||
|
|
||||||
|
int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr);
|
||||||
|
|
||||||
|
void
|
||||||
|
PanoramiXFixesInit (void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < XFixesNumberRequests; i++)
|
||||||
|
PanoramiXSaveXFixesVector[i] = ProcXFixesVector[i];
|
||||||
|
/*
|
||||||
|
* Stuff in Xinerama aware request processing hooks
|
||||||
|
*/
|
||||||
|
ProcXFixesVector[X_XFixesSetGCClipRegion] = PanoramiXFixesSetGCClipRegion;
|
||||||
|
ProcXFixesVector[X_XFixesSetWindowShapeRegion] = PanoramiXFixesSetWindowShapeRegion;
|
||||||
|
ProcXFixesVector[X_XFixesSetPictureClipRegion] = PanoramiXFixesSetPictureClipRegion;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PanoramiXFixesReset (void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < XFixesNumberRequests; i++)
|
||||||
|
ProcXFixesVector[i] = PanoramiXSaveXFixesVector[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -255,6 +255,15 @@ ProcXFixesExpandRegion (ClientPtr client);
|
||||||
int
|
int
|
||||||
SProcXFixesExpandRegion (ClientPtr client);
|
SProcXFixesExpandRegion (ClientPtr client);
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetGCClipRegion (ClientPtr client);
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetWindowShapeRegion (ClientPtr client);
|
||||||
|
|
||||||
|
int
|
||||||
|
PanoramiXFixesSetPictureClipRegion (ClientPtr client);
|
||||||
|
|
||||||
/* Cursor Visibility (Version 4) */
|
/* Cursor Visibility (Version 4) */
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -269,4 +278,8 @@ ProcXFixesShowCursor (ClientPtr client);
|
||||||
int
|
int
|
||||||
SProcXFixesShowCursor (ClientPtr client);
|
SProcXFixesShowCursor (ClientPtr client);
|
||||||
|
|
||||||
|
extern int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr);
|
||||||
|
void PanoramiXFixesInit (void);
|
||||||
|
void PanoramiXFixesReset (void);
|
||||||
|
|
||||||
#endif /* _XFIXESINT_H_ */
|
#endif /* _XFIXESINT_H_ */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user