comparison src/video/nanox/SDL_nxvideo.c @ 471:26dafefeebb2

Date: Sat, 24 Aug 2002 22:20:01 -0600 From: "Greg Haerr" Subject: Announce: sdl-nanox-patch Sam, I've created an update patch for enhanced Nano-X support with SDL. I've created the patch against SDL-1.2.4. I'd appreciate it if you would apply it to the next SDL version. Enhancements include: 1. Small bugfixes to compile without errors 2. Support for direct client-side framebuffer access with configure option 3. Add dynamic pixel type support for hardware framebuffer; eliminating the need for compile-time configuration option. I've updated the README.NanoX file with the details. This version has been tested with Microwindows v0.89pre9 CVS and SMPEG 0.4.4. I've added multi-threading support to Microwindows to support the multi-threaded SMPEG, and all works fine. To turn on thread safety in Microwindows, use THREADSAFE=Y in the Microwindows config file. Thanks! Regards, Greg Founder, The Microwindows Project http://microwindows.org
author Sam Lantinga <slouken@libsdl.org>
date Sun, 25 Aug 2002 06:21:49 +0000
parents f6ffac90895c
children 31d9be995d5c
comparison
equal deleted inserted replaced
470:877b992f2d0c 471:26dafefeebb2
1 /* 1 /*
2 SDL - Simple DirectMedia Layer 2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga 3 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
4 Copyright (C) 2001 Hsieh-Fu Tsai 4 Copyright (C) 2001 Hsieh-Fu Tsai
5 Copyright (C) 2002 Greg Haerr <greg@censoft.com>
5 6
6 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
220 SDL_modelist [0] -> h = si.rows ; 221 SDL_modelist [0] -> h = si.rows ;
221 } 222 }
222 SDL_modelist [1] = NULL ; 223 SDL_modelist [1] = NULL ;
223 } 224 }
224 225
225 #ifdef NANOX_PIXEL_RGB 226 pixel_type = si.pixtype;
226 pixel_type = MWPF_RGB ; 227 SDL_Visual.red_mask = si.rmask;
227 SDL_Visual.red_mask = 0x000000FF ; 228 SDL_Visual.green_mask = si.gmask;
228 SDL_Visual.green_mask = 0x0000FF00 ; 229 SDL_Visual.blue_mask = si.bmask;
229 SDL_Visual.blue_mask = 0x00FF0000 ;
230 #endif
231 #ifdef NANOX_PIXEL_0888
232 pixel_type = MWPF_TRUECOLOR0888 ;
233 SDL_Visual.red_mask = 0x00FF0000 ;
234 SDL_Visual.green_mask = 0x0000FF00 ;
235 SDL_Visual.blue_mask = 0x000000FF ;
236 #endif
237 #ifdef NANOX_PIXEL_888
238 pixel_type = MWPF_TRUECOLOR888 ;
239 SDL_Visual.red_mask = 0xFF0000 ;
240 SDL_Visual.green_mask = 0x00FF00 ;
241 SDL_Visual.blue_mask = 0x0000FF ;
242 #endif
243 #ifdef NANOX_PIXEL_565
244 pixel_type = MWPF_TRUECOLOR565 ;
245 SDL_Visual.red_mask = 0xF800 ;
246 SDL_Visual.green_mask = 0x07E0 ;
247 SDL_Visual.blue_mask = 0x001F ;
248 #endif
249 #ifdef NANOX_PIXEL_555
250 pixel_type = MWPF_TRUECOLOR555 ;
251 SDL_Visual.red_mask = 0x7C00 ;
252 SDL_Visual.green_mask = 0x03E0 ;
253 SDL_Visual.blue_mask = 0x001F ;
254 #endif
255 #ifdef NANOX_PIXEL_332
256 pixel_type = MWPF_TRUECOLOR332 ;
257 #endif
258 #ifdef NANOX_PIXEL_PAL
259 pixel_type = MWPF_PALETTE ;
260 #endif
261 230
262 vformat -> BitsPerPixel = SDL_Visual.bpp ; 231 vformat -> BitsPerPixel = SDL_Visual.bpp ;
263 if (vformat -> BitsPerPixel > 8) { 232 if (vformat -> BitsPerPixel > 8) {
264 vformat -> Rmask = SDL_Visual.red_mask ; 233 vformat -> Rmask = SDL_Visual.red_mask ;
265 vformat -> Gmask = SDL_Visual.green_mask ; 234 vformat -> Gmask = SDL_Visual.green_mask ;
288 } 257 }
289 NX_FreeVideoModes (this) ; 258 NX_FreeVideoModes (this) ;
290 free (GammaRamp_R) ; 259 free (GammaRamp_R) ;
291 free (GammaRamp_G) ; 260 free (GammaRamp_G) ;
292 free (GammaRamp_B) ; 261 free (GammaRamp_B) ;
262
263 #ifdef ENABLE_NANOX_DIRECT_FB
264 if (Clientfb)
265 GrCloseClientFramebuffer();
266 #endif
293 GrClose () ; 267 GrClose () ;
294 268
295 Dprintf ("leave NX_VideoQuit\n") ; 269 Dprintf ("leave NX_VideoQuit\n") ;
296 } 270 }
297 271
370 NX_EnterFullScreen (this) ; 344 NX_EnterFullScreen (this) ;
371 } else { 345 } else {
372 screen -> flags &= ~ SDL_FULLSCREEN ; 346 screen -> flags &= ~ SDL_FULLSCREEN ;
373 } 347 }
374 } 348 }
349
350 #ifdef ENABLE_NANOX_DIRECT_FB
351 /* attempt allocating the client side framebuffer */
352 Clientfb = GrOpenClientFramebuffer();
353 /* NULL return will default to using GrArea()*/
354 #endif
375 355
376 Dprintf ("leave NX_CreateWindow\n") ; 356 Dprintf ("leave NX_CreateWindow\n") ;
377 return 0 ; 357 return 0 ;
378 } 358 }
379 359