Commit 999b432d authored by Sam Lantinga's avatar Sam Lantinga

[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.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401037
parent a0f696dd
...@@ -1423,7 +1423,7 @@ static void FB_VideoQuit(_THIS) ...@@ -1423,7 +1423,7 @@ static void FB_VideoQuit(_THIS)
if ( this->screen ) { if ( this->screen ) {
/* Clear screen and tell SDL not to free the pixels */ /* Clear screen and tell SDL not to free the pixels */
if ( this->screen->pixels && FB_InGraphicsMode(this) ) { if ( this->screen->pixels && FB_InGraphicsMode(this) ) {
#ifdef __powerpc__ /* SIGBUS when using memset() ?? */ #if defined(__powerpc__) || defined(__ia64__) /* SIGBUS when using memset() ?? */
Uint8 *rowp = (Uint8 *)this->screen->pixels; Uint8 *rowp = (Uint8 *)this->screen->pixels;
int left = this->screen->pitch*this->screen->h; int left = this->screen->pitch*this->screen->h;
while ( left-- ) { *rowp++ = 0; } while ( left-- ) { *rowp++ = 0; }
......
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