Mercurial > sdl-ios-xcode
diff src/video/Xext/Xxf86dga/XF86DGA.c @ 1662:782fd950bd46 SDL-1.3
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid.
The code is now run through a consistent indent format:
indent -i4 -nut -nsc -br -ce
The headers are being converted to automatically generate doxygen documentation.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 28 May 2006 13:04:16 +0000 |
parents | ecba4bbaf9c2 |
children | 4da1ee79c9af |
line wrap: on
line diff
--- a/src/video/Xext/Xxf86dga/XF86DGA.c Sun May 21 17:27:13 2006 +0000 +++ b/src/video/Xext/Xxf86dga/XF86DGA.c Sun May 28 13:04:16 2006 +0000 @@ -8,7 +8,7 @@ /* THIS IS NOT AN X CONSORTIUM STANDARD */ -#ifdef __EMX__ /* needed here to override certain constants in X headers */ +#ifdef __EMX__ /* needed here to override certain constants in X headers */ #define INCL_DOS #define INCL_DOSIOCTL #include <os2.h> @@ -18,8 +18,8 @@ #define HAS_MMAP_ANON #include <sys/types.h> #include <sys/mman.h> -#include <asm/page.h> /* PAGE_SIZE */ -#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ +#include <asm/page.h> /* PAGE_SIZE */ +#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ #define HAS_GETPAGESIZE #endif /* linux */ @@ -45,8 +45,8 @@ #include <unistd.h> #endif /* SVR4 && !DGUX */ -#if defined(sun) && !defined(SVR4) /* SunOS */ -#define MMAP_DEV_ZERO /* doesn't SunOS have MAP_ANON ?? */ +#if defined(sun) && !defined(SVR4) /* SunOS */ +#define MMAP_DEV_ZERO /* doesn't SunOS have MAP_ANON ?? */ #define HAS_GETPAGESIZE #include <sys/types.h> #include <sys/mman.h> @@ -65,8 +65,8 @@ #include "../extensions/Xext.h" #include "../extensions/extutil.h" -extern XExtDisplayInfo* SDL_NAME(xdga_find_display)(Display*); -extern char *SDL_NAME(xdga_extension_name); +extern XExtDisplayInfo *SDL_NAME (xdga_find_display) (Display *); +extern char *SDL_NAME (xdga_extension_name); #define XF86DGACheckExtension(dpy,i,val) \ XextCheckExtension (dpy, i, SDL_NAME(xdga_extension_name), val) @@ -77,261 +77,231 @@ * * *****************************************************************************/ -Bool SDL_NAME(XF86DGAQueryExtension) ( - Display *dpy, - int *event_basep, - int *error_basep -){ - return SDL_NAME(XDGAQueryExtension)(dpy, event_basep, error_basep); +Bool SDL_NAME (XF86DGAQueryExtension) (Display * dpy, + int *event_basep, int *error_basep) +{ + return SDL_NAME (XDGAQueryExtension) (dpy, event_basep, error_basep); } -Bool SDL_NAME(XF86DGAQueryVersion)( - Display* dpy, - int* majorVersion, - int* minorVersion -){ - return SDL_NAME(XDGAQueryVersion)(dpy, majorVersion, minorVersion); +Bool SDL_NAME (XF86DGAQueryVersion) (Display * dpy, + int *majorVersion, int *minorVersion) +{ + return SDL_NAME (XDGAQueryVersion) (dpy, majorVersion, minorVersion); } -Bool SDL_NAME(XF86DGAGetVideoLL)( - Display* dpy, - int screen, - int *offset, - int *width, - int *bank_size, - int *ram_size -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); +Bool SDL_NAME (XF86DGAGetVideoLL) (Display * dpy, + int screen, + int *offset, + int *width, int *bank_size, int *ram_size) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAGetVideoLLReply rep; xXF86DGAGetVideoLLReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAGetVideoLL, req); + LockDisplay (dpy); + GetReq (XF86DGAGetVideoLL, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAGetVideoLL; req->screen = screen; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; + if (!_XReply (dpy, (xReply *) & rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; } - *offset = /*(char *)*/rep.offset; + *offset = /*(char *) */ rep.offset; *width = rep.width; *bank_size = rep.bank_size; *ram_size = rep.ram_size; - - UnlockDisplay(dpy); - SyncHandle(); + + UnlockDisplay (dpy); + SyncHandle (); return True; } - -Bool SDL_NAME(XF86DGADirectVideoLL)( - Display* dpy, - int screen, - int enable -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); + +Bool SDL_NAME (XF86DGADirectVideoLL) (Display * dpy, int screen, int enable) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGADirectVideoReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGADirectVideo, req); + LockDisplay (dpy); + GetReq (XF86DGADirectVideo, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGADirectVideo; req->screen = screen; req->enable = enable; - UnlockDisplay(dpy); - SyncHandle(); - XSync(dpy,False); + UnlockDisplay (dpy); + SyncHandle (); + XSync (dpy, False); return True; } -Bool SDL_NAME(XF86DGAGetViewPortSize)( - Display* dpy, - int screen, - int *width, - int *height -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); +Bool SDL_NAME (XF86DGAGetViewPortSize) (Display * dpy, + int screen, int *width, int *height) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAGetViewPortSizeReply rep; xXF86DGAGetViewPortSizeReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAGetViewPortSize, req); + LockDisplay (dpy); + GetReq (XF86DGAGetViewPortSize, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAGetViewPortSize; req->screen = screen; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; + if (!_XReply (dpy, (xReply *) & rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; } *width = rep.width; *height = rep.height; - - UnlockDisplay(dpy); - SyncHandle(); + + UnlockDisplay (dpy); + SyncHandle (); return True; } - - -Bool SDL_NAME(XF86DGASetViewPort)( - Display* dpy, - int screen, - int x, - int y -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); + + +Bool SDL_NAME (XF86DGASetViewPort) (Display * dpy, int screen, int x, int y) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGASetViewPortReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGASetViewPort, req); + LockDisplay (dpy); + GetReq (XF86DGASetViewPort, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGASetViewPort; req->screen = screen; req->x = x; req->y = y; - UnlockDisplay(dpy); - SyncHandle(); - XSync(dpy,False); + UnlockDisplay (dpy); + SyncHandle (); + XSync (dpy, False); return True; } - -Bool SDL_NAME(XF86DGAGetVidPage)( - Display* dpy, - int screen, - int *vpage -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); + +Bool SDL_NAME (XF86DGAGetVidPage) (Display * dpy, int screen, int *vpage) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAGetVidPageReply rep; xXF86DGAGetVidPageReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAGetVidPage, req); + LockDisplay (dpy); + GetReq (XF86DGAGetVidPage, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAGetVidPage; req->screen = screen; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; + if (!_XReply (dpy, (xReply *) & rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; } *vpage = rep.vpage; - UnlockDisplay(dpy); - SyncHandle(); + UnlockDisplay (dpy); + SyncHandle (); return True; } - -Bool SDL_NAME(XF86DGASetVidPage)( - Display* dpy, - int screen, - int vpage -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); + +Bool SDL_NAME (XF86DGASetVidPage) (Display * dpy, int screen, int vpage) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGASetVidPageReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGASetVidPage, req); + LockDisplay (dpy); + GetReq (XF86DGASetVidPage, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGASetVidPage; req->screen = screen; req->vpage = vpage; - UnlockDisplay(dpy); - SyncHandle(); - XSync(dpy,False); + UnlockDisplay (dpy); + SyncHandle (); + XSync (dpy, False); return True; } -Bool SDL_NAME(XF86DGAInstallColormap)( - Display* dpy, - int screen, - Colormap cmap -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); +Bool SDL_NAME (XF86DGAInstallColormap) (Display * dpy, + int screen, Colormap cmap) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAInstallColormapReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAInstallColormap, req); + LockDisplay (dpy); + GetReq (XF86DGAInstallColormap, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAInstallColormap; req->screen = screen; req->id = cmap; - UnlockDisplay(dpy); - SyncHandle(); - XSync(dpy,False); + UnlockDisplay (dpy); + SyncHandle (); + XSync (dpy, False); return True; } -Bool SDL_NAME(XF86DGAQueryDirectVideo)( - Display *dpy, - int screen, - int *flags -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); +Bool SDL_NAME (XF86DGAQueryDirectVideo) (Display * dpy, + int screen, int *flags) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAQueryDirectVideoReply rep; xXF86DGAQueryDirectVideoReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAQueryDirectVideo, req); + LockDisplay (dpy); + GetReq (XF86DGAQueryDirectVideo, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAQueryDirectVideo; req->screen = screen; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; + if (!_XReply (dpy, (xReply *) & rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; } *flags = rep.flags; - UnlockDisplay(dpy); - SyncHandle(); + UnlockDisplay (dpy); + SyncHandle (); return True; } -Bool SDL_NAME(XF86DGAViewPortChanged)( - Display *dpy, - int screen, - int n -){ - XExtDisplayInfo *info = SDL_NAME(xdga_find_display) (dpy); +Bool SDL_NAME (XF86DGAViewPortChanged) (Display * dpy, int screen, int n) +{ + XExtDisplayInfo *info = SDL_NAME (xdga_find_display) (dpy); xXF86DGAViewPortChangedReply rep; xXF86DGAViewPortChangedReq *req; XF86DGACheckExtension (dpy, info, False); - LockDisplay(dpy); - GetReq(XF86DGAViewPortChanged, req); + LockDisplay (dpy); + GetReq (XF86DGAViewPortChanged, req); req->reqType = info->codes->major_opcode; req->dgaReqType = X_XF86DGAViewPortChanged; req->screen = screen; req->n = n; - if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) { - UnlockDisplay(dpy); - SyncHandle(); - return False; + if (!_XReply (dpy, (xReply *) & rep, 0, xFalse)) { + UnlockDisplay (dpy); + SyncHandle (); + return False; } - UnlockDisplay(dpy); - SyncHandle(); + UnlockDisplay (dpy); + SyncHandle (); return rep.result; } @@ -344,7 +314,7 @@ #include <stdlib.h> #include <stdio.h> #include <fcntl.h> -#if defined(ISC) +#if defined(ISC) # define HAS_SVR3_MMAP # include <sys/types.h> # include <errno.h> @@ -380,18 +350,20 @@ #define DEV_MEM "/dev/mem" #endif -typedef struct { - unsigned long physaddr; /* actual requested physical address */ - unsigned long size; /* actual requested map size */ - unsigned long delta; /* delta to account for page alignment */ - void * vaddr; /* mapped address, without the delta */ - int refcount; /* reference count */ +typedef struct +{ + unsigned long physaddr; /* actual requested physical address */ + unsigned long size; /* actual requested map size */ + unsigned long delta; /* delta to account for page alignment */ + void *vaddr; /* mapped address, without the delta */ + int refcount; /* reference count */ } MapRec, *MapPtr; -typedef struct { - Display * display; - int screen; - MapPtr map; +typedef struct +{ + Display *display; + int screen; + MapPtr map; } ScrRec, *ScrPtr; static int mapFd = -1; @@ -401,67 +373,65 @@ static ScrPtr *scrList = NULL; static MapPtr -AddMap(void) +AddMap (void) { MapPtr *old; old = mapList; - mapList = realloc(mapList, sizeof(MapPtr) * (numMaps + 1)); + mapList = realloc (mapList, sizeof (MapPtr) * (numMaps + 1)); if (!mapList) { - mapList = old; - return NULL; + mapList = old; + return NULL; } - mapList[numMaps] = malloc(sizeof(MapRec)); + mapList[numMaps] = malloc (sizeof (MapRec)); if (!mapList[numMaps]) - return NULL; + return NULL; return mapList[numMaps++]; } static ScrPtr -AddScr(void) +AddScr (void) { ScrPtr *old; old = scrList; - scrList = realloc(scrList, sizeof(ScrPtr) * (numScrs + 1)); + scrList = realloc (scrList, sizeof (ScrPtr) * (numScrs + 1)); if (!scrList) { - scrList = old; - return NULL; + scrList = old; + return NULL; } - scrList[numScrs] = malloc(sizeof(ScrRec)); + scrList[numScrs] = malloc (sizeof (ScrRec)); if (!scrList[numScrs]) - return NULL; + return NULL; return scrList[numScrs++]; } static MapPtr -FindMap(unsigned long address, unsigned long size) +FindMap (unsigned long address, unsigned long size) { int i; for (i = 0; i < numMaps; i++) { - if (mapList[i]->physaddr == address && - mapList[i]->size == size) - return mapList[i]; + if (mapList[i]->physaddr == address && mapList[i]->size == size) + return mapList[i]; } return NULL; } static ScrPtr -FindScr(Display *display, int screen) +FindScr (Display * display, int screen) { int i; for (i = 0; i < numScrs; i++) { - if (scrList[i]->display == display && - scrList[i]->screen == screen) - return scrList[i]; + if (scrList[i]->display == display && scrList[i]->screen == screen) + return scrList[i]; } return NULL; } static void * -MapPhysAddress(unsigned long address, unsigned long size) +MapPhysAddress (unsigned long address, unsigned long size) { unsigned long offset, delta; int pagesize = -1; @@ -475,44 +445,43 @@ HFILE hfd; #endif - if ((mp = FindMap(address, size))) { - mp->refcount++; - return (void *)((unsigned long)mp->vaddr + mp->delta); + if ((mp = FindMap (address, size))) { + mp->refcount++; + return (void *) ((unsigned long) mp->vaddr + mp->delta); } - #if defined(_SC_PAGESIZE) && defined(HAS_SC_PAGESIZE) - pagesize = sysconf(_SC_PAGESIZE); + pagesize = sysconf (_SC_PAGESIZE); #endif #ifdef _SC_PAGE_SIZE if (pagesize == -1) - pagesize = sysconf(_SC_PAGE_SIZE); + pagesize = sysconf (_SC_PAGE_SIZE); #endif #ifdef HAS_GETPAGESIZE if (pagesize == -1) - pagesize = getpagesize(); + pagesize = getpagesize (); #endif #ifdef PAGE_SIZE if (pagesize == -1) - pagesize = PAGE_SIZE; + pagesize = PAGE_SIZE; #endif if (pagesize == -1) - pagesize = 4096; + pagesize = 4096; - delta = address % pagesize; - offset = address - delta; + delta = address % pagesize; + offset = address - delta; #if defined(ISC) && defined(HAS_SVR3_MMAP) if (mapFd < 0) { - if ((mapFd = open("/dev/mmap", O_RDWR)) < 0) - return NULL; + if ((mapFd = open ("/dev/mmap", O_RDWR)) < 0) + return NULL; } - mloc.vaddr = (char *)0; - mloc.physaddr = (char *)offset; + mloc.vaddr = (char *) 0; + mloc.physaddr = (char *) offset; mloc.length = size + delta; - mloc.ioflg=1; + mloc.ioflg = 1; - if ((vaddr = (void *)ioctl(mapFd, MAP, &mloc)) == (void *)-1) - return NULL; + if ((vaddr = (void *) ioctl (mapFd, MAP, &mloc)) == (void *) -1) + return NULL; #elif defined (__EMX__) /* * Dragon warning here! /dev/pmap$ is never closed, except on progam exit. @@ -520,60 +489,62 @@ * of memory handles. Some umap/close mechanism should be provided */ - rc = DosOpen("/dev/pmap$", &hfd, &action, 0, FILE_NORMAL, FILE_OPEN, - OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, (PEAOP2)NULL); + rc = DosOpen ("/dev/pmap$", &hfd, &action, 0, FILE_NORMAL, FILE_OPEN, + OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, (PEAOP2) NULL); if (rc != 0) - return NULL; + return NULL; { - struct map_ioctl { - union { - ULONG phys; - void* user; - } a; - ULONG size; - } pmap,dmap; - ULONG plen,dlen; + struct map_ioctl + { + union + { + ULONG phys; + void *user; + } a; + ULONG size; + } pmap, dmap; + ULONG plen, dlen; #define XFREE86_PMAP 0x76 #define PMAP_MAP 0x44 - pmap.a.phys = offset; - pmap.size = size + delta; - rc = DosDevIOCtl(hfd, XFREE86_PMAP, PMAP_MAP, - (PULONG)&pmap, sizeof(pmap), &plen, - (PULONG)&dmap, sizeof(dmap), &dlen); - if (rc == 0) { - vaddr = dmap.a.user; - } - } - if (rc != 0) - return NULL; + pmap.a.phys = offset; + pmap.size = size + delta; + rc = DosDevIOCtl (hfd, XFREE86_PMAP, PMAP_MAP, + (PULONG) & pmap, sizeof (pmap), &plen, + (PULONG) & dmap, sizeof (dmap), &dlen); + if (rc == 0) { + vaddr = dmap.a.user; + } + } + if (rc != 0) + return NULL; #elif defined (Lynx) - vaddr = (void *)smem_create("XF86DGA", (char *)offset, - size + delta, SM_READ|SM_WRITE); + vaddr = (void *) smem_create ("XF86DGA", (char *) offset, + size + delta, SM_READ | SM_WRITE); #else #ifndef MAP_FILE #define MAP_FILE 0 #endif if (mapFd < 0) { - if ((mapFd = open(DEV_MEM, O_RDWR)) < 0) - return NULL; + if ((mapFd = open (DEV_MEM, O_RDWR)) < 0) + return NULL; } - vaddr = (void *)mmap(NULL, size + delta, PROT_READ | PROT_WRITE, - MAP_FILE | MAP_SHARED, mapFd, (off_t)offset); - if (vaddr == (void *)-1) - return NULL; + vaddr = (void *) mmap (NULL, size + delta, PROT_READ | PROT_WRITE, + MAP_FILE | MAP_SHARED, mapFd, (off_t) offset); + if (vaddr == (void *) -1) + return NULL; #endif if (!vaddr) { - if (!(mp = AddMap())) - return NULL; - mp->physaddr = address; - mp->size = size; - mp->delta = delta; - mp->vaddr = vaddr; - mp->refcount = 1; + if (!(mp = AddMap ())) + return NULL; + mp->physaddr = address; + mp->size = size; + mp->delta = delta; + mp->vaddr = vaddr; + mp->refcount = 1; } - return (void *)((unsigned long)vaddr + delta); + return (void *) ((unsigned long) vaddr + delta); } /* @@ -583,134 +554,128 @@ * should restore text mode. */ -int -SDL_NAME(XF86DGAForkApp)(int screen) +int SDL_NAME (XF86DGAForkApp) (int screen) { pid_t pid; int status; int i; - /* fork the app, parent hangs around to clean up */ - if ((pid = fork()) > 0) { - ScrPtr sp; + /* fork the app, parent hangs around to clean up */ + if ((pid = fork ()) > 0) { + ScrPtr sp; - waitpid(pid, &status, 0); - for (i = 0; i < numScrs; i++) { - sp = scrList[i]; - SDL_NAME(XF86DGADirectVideoLL)(sp->display, sp->screen, 0); - XSync(sp->display, False); - } - if (WIFEXITED(status)) - _exit(0); - else - _exit(-1); + waitpid (pid, &status, 0); + for (i = 0; i < numScrs; i++) { + sp = scrList[i]; + SDL_NAME (XF86DGADirectVideoLL) (sp->display, sp->screen, 0); + XSync (sp->display, False); + } + if (WIFEXITED (status)) + _exit (0); + else + _exit (-1); } return pid; } -Bool -SDL_NAME(XF86DGADirectVideo)( - Display *dis, - int screen, - int enable -){ +Bool SDL_NAME (XF86DGADirectVideo) (Display * dis, int screen, int enable) +{ ScrPtr sp; MapPtr mp = NULL; - if ((sp = FindScr(dis, screen))) - mp = sp->map; + if ((sp = FindScr (dis, screen))) + mp = sp->map; if (enable & XF86DGADirectGraphics) { #if !defined(ISC) && !defined(HAS_SVR3_MMAP) && !defined(Lynx) \ && !defined(__EMX__) - if (mp && mp->vaddr) - mprotect(mp->vaddr, mp->size + mp->delta, PROT_READ | PROT_WRITE); + if (mp && mp->vaddr) + mprotect (mp->vaddr, mp->size + mp->delta, + PROT_READ | PROT_WRITE); #endif } else { #if !defined(ISC) && !defined(HAS_SVR3_MMAP) && !defined(Lynx) \ && !defined(__EMX__) - if (mp && mp->vaddr) - mprotect(mp->vaddr, mp->size + mp->delta, PROT_READ); + if (mp && mp->vaddr) + mprotect (mp->vaddr, mp->size + mp->delta, PROT_READ); #elif defined(Lynx) - /* XXX this doesn't allow enable after disable */ - smem_create(NULL, mp->vaddr, mp->size + mp->delta, SM_DETACH); - smem_remove("XF86DGA"); + /* XXX this doesn't allow enable after disable */ + smem_create (NULL, mp->vaddr, mp->size + mp->delta, SM_DETACH); + smem_remove ("XF86DGA"); #endif } - SDL_NAME(XF86DGADirectVideoLL)(dis, screen, enable); + SDL_NAME (XF86DGADirectVideoLL) (dis, screen, enable); return 1; } static void -XF86cleanup(int sig) +XF86cleanup (int sig) { ScrPtr sp; int i; static char beenhere = 0; if (beenhere) - _exit(3); + _exit (3); beenhere = 1; for (i = 0; i < numScrs; i++) { - sp = scrList[i]; - SDL_NAME(XF86DGADirectVideo)(sp->display, sp->screen, 0); - XSync(sp->display, False); + sp = scrList[i]; + SDL_NAME (XF86DGADirectVideo) (sp->display, sp->screen, 0); + XSync (sp->display, False); } - _exit(3); + _exit (3); } Bool -SDL_NAME(XF86DGAGetVideo)( - Display *dis, - int screen, - char **addr, - int *width, - int *bank, - int *ram -){ - /*unsigned long*/ int offset; +SDL_NAME (XF86DGAGetVideo) (Display * dis, + int screen, + char **addr, int *width, int *bank, int *ram) +{ + /*unsigned long */ int offset; static int beenHere = 0; ScrPtr sp; MapPtr mp; - if (!(sp = FindScr(dis, screen))) { - if (!(sp = AddScr())) { - fprintf(stderr, "XF86DGAGetVideo: malloc failure\n"); - exit(-2); - } - sp->display = dis; - sp->screen = screen; - sp->map = NULL; + if (!(sp = FindScr (dis, screen))) { + if (!(sp = AddScr ())) { + fprintf (stderr, "XF86DGAGetVideo: malloc failure\n"); + exit (-2); + } + sp->display = dis; + sp->screen = screen; + sp->map = NULL; } - SDL_NAME(XF86DGAGetVideoLL)(dis, screen , &offset, width, bank, ram); + SDL_NAME (XF86DGAGetVideoLL) (dis, screen, &offset, width, bank, ram); - *addr = MapPhysAddress(offset, *bank); + *addr = MapPhysAddress (offset, *bank); if (*addr == NULL) { - fprintf(stderr, "XF86DGAGetVideo: failed to map video memory (%s)\n", - strerror(errno)); - exit(-2); + fprintf (stderr, + "XF86DGAGetVideo: failed to map video memory (%s)\n", + strerror (errno)); + exit (-2); } - if ((mp = FindMap(offset, *bank))) - sp->map = mp; + if ((mp = FindMap (offset, *bank))) + sp->map = mp; if (!beenHere) { - beenHere = 1; - atexit((void(*)(void))XF86cleanup); - /* one shot XF86cleanup attempts */ - signal(SIGSEGV, XF86cleanup); + beenHere = 1; + atexit ((void (*)(void)) XF86cleanup); + /* one shot XF86cleanup attempts */ + signal (SIGSEGV, XF86cleanup); #ifdef SIGBUS - signal(SIGBUS, XF86cleanup); + signal (SIGBUS, XF86cleanup); #endif - signal(SIGHUP, XF86cleanup); - signal(SIGFPE, XF86cleanup); + signal (SIGHUP, XF86cleanup); + signal (SIGFPE, XF86cleanup); } return 1; } +/* vi: set ts=4 sw=4 expandtab: */