insufficient SHM detection in XvMC local test. Removed reference to
    getpagesize() which caused linking problems on s390. Reported by Stefan
    Dirsch <sndirsh@suse.de>
This commit is contained in:
Thomas Hellstrom 2004-11-23 17:29:47 +00:00
parent fec868bf0f
commit 9a26d6f39e

View File

@ -17,10 +17,21 @@
#include "Xvproto.h" #include "Xvproto.h"
#include "XvMCproto.h" #include "XvMCproto.h"
#include "xvmcext.h" #include "xvmcext.h"
#include "xf86_ansic.h"
#ifdef HAS_XVMCSHM
#ifndef Lynx
#include <sys/ipc.h>
#include <sys/shm.h>
#else
#include <ipc.h>
#include <shm.h>
#endif /* Lynx */
#endif /* HAS_XVMCSHM */
#define DR_CLIENT_DRIVER_NAME_SIZE 48 #define DR_CLIENT_DRIVER_NAME_SIZE 48
#define DR_BUSID_SIZE 20 #define DR_BUSID_SIZE 48
int XvMCScreenIndex = -1; int XvMCScreenIndex = -1;
@ -558,7 +569,10 @@ ProcXvMCGetDRInfo(ClientPtr client)
XvPortPtr pPort; XvPortPtr pPort;
ScreenPtr pScreen; ScreenPtr pScreen;
XvMCScreenPtr pScreenPriv; XvMCScreenPtr pScreenPriv;
#ifdef HAS_XVMCSHM
volatile CARD32 *patternP; volatile CARD32 *patternP;
#endif
REQUEST(xvmcGetDRInfoReq); REQUEST(xvmcGetDRInfoReq);
REQUEST_SIZE_MATCH(xvmcGetDRInfoReq); REQUEST_SIZE_MATCH(xvmcGetDRInfoReq);
@ -589,15 +603,16 @@ ProcXvMCGetDRInfo(ClientPtr client)
* segment she prepared for us. * segment she prepared for us.
*/ */
rep.isLocal = 0; rep.isLocal = 1;
#ifdef HAS_XVMCSHM
if ( NULL != (patternP = (CARD32 *)shmat( stuff->shmKey, NULL, SHM_RDONLY ))) { patternP = (CARD32 *)shmat( stuff->shmKey, NULL, SHM_RDONLY );
register volatile CARD32 *patternC = patternP; if ( -1 != (long) patternP) {
register volatile CARD32 *patternC = patternP;
register int i; register int i;
CARD32 magic = stuff->magic; CARD32 magic = stuff->magic;
rep.isLocal = 1; rep.isLocal = 1;
i = getpagesize() / sizeof(CARD32); i = 1024 / sizeof(CARD32);
while ( i-- ) { while ( i-- ) {
if (*patternC++ != magic) { if (*patternC++ != magic) {
@ -606,9 +621,10 @@ ProcXvMCGetDRInfo(ClientPtr client)
} }
magic = ~magic; magic = ~magic;
} }
shmdt( (char *)patternP ); shmdt( (char *)patternP );
} }
#endif /* HAS_XVMCSHM */
WriteToClient(client, sizeof(xvmcGetDRInfoReply), WriteToClient(client, sizeof(xvmcGetDRInfoReply),
(char*)&rep); (char*)&rep);
if (rep.length) { if (rep.length) {