Mercurial > sdl-ios-xcode
comparison src/video/fbcon/SDL_fbvideo.c @ 1036:50f4e7e4d117
[SDL] [PATCH] fix FB_VideoQuit for ia64
Jesse Barnes
Fri Jan 14 11:13:54 PST 2005
I noticed that on my ia64 machine when SDL_Quit was called, the machine would
hang in weird ways. It turned out to be caused by a machine check in the
memset() call near the top of FB_VideoQuit. Generally memset shouldn't be
used on I/O regions like the framebuffer or other I/O device memory (the
Linux kernel has special routines for dealing with I/O memory), so I changed
the #ifdef __powerpc__ to #if defined(__powerpc__) || defined(__ia64__) and
SDL_Quit now works properly. The change should probably be made
unconditional though since doing one byte at a time is the only way to be
portable, afaik.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 12 Feb 2005 18:03:54 +0000 |
parents | 5095c4a264aa |
children | d082d2d66ec8 |
comparison
equal
deleted
inserted
replaced
1035:974ba6ae0fa3 | 1036:50f4e7e4d117 |
---|---|
1421 int i, j; | 1421 int i, j; |
1422 | 1422 |
1423 if ( this->screen ) { | 1423 if ( this->screen ) { |
1424 /* Clear screen and tell SDL not to free the pixels */ | 1424 /* Clear screen and tell SDL not to free the pixels */ |
1425 if ( this->screen->pixels && FB_InGraphicsMode(this) ) { | 1425 if ( this->screen->pixels && FB_InGraphicsMode(this) ) { |
1426 #ifdef __powerpc__ /* SIGBUS when using memset() ?? */ | 1426 #if defined(__powerpc__) || defined(__ia64__) /* SIGBUS when using memset() ?? */ |
1427 Uint8 *rowp = (Uint8 *)this->screen->pixels; | 1427 Uint8 *rowp = (Uint8 *)this->screen->pixels; |
1428 int left = this->screen->pitch*this->screen->h; | 1428 int left = this->screen->pitch*this->screen->h; |
1429 while ( left-- ) { *rowp++ = 0; } | 1429 while ( left-- ) { *rowp++ = 0; } |
1430 #else | 1430 #else |
1431 memset(this->screen->pixels,0,this->screen->h*this->screen->pitch); | 1431 memset(this->screen->pixels,0,this->screen->h*this->screen->pitch); |