Mercurial > sdl-ios-xcode
diff src/video/dummy/SDL_nullvideo.c @ 1895:c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 10 Jul 2006 21:04:37 +0000 |
parents | c439dad53df8 |
children | 7577fd11cee4 |
line wrap: on
line diff
--- a/src/video/dummy/SDL_nullvideo.c Thu Jul 06 18:01:37 2006 +0000 +++ b/src/video/dummy/SDL_nullvideo.c Mon Jul 10 21:04:37 2006 +0000 @@ -44,196 +44,90 @@ #include "SDL_nullvideo.h" #include "SDL_nullevents_c.h" -#include "SDL_nullmouse_c.h" +#include "SDL_nullrender_c.h" #define DUMMYVID_DRIVER_NAME "dummy" /* Initialization/Query functions */ -static int DUMMY_VideoInit(_THIS, SDL_PixelFormat *vformat); -static SDL_Rect **DUMMY_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags); -static SDL_Surface *DUMMY_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags); -static int DUMMY_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors); +static int DUMMY_VideoInit(_THIS); +static int DUMMY_SetDisplayMode(_THIS, SDL_DisplayMode * mode); static void DUMMY_VideoQuit(_THIS); -/* Hardware surface functions */ -static int DUMMY_AllocHWSurface(_THIS, SDL_Surface *surface); -static int DUMMY_LockHWSurface(_THIS, SDL_Surface *surface); -static void DUMMY_UnlockHWSurface(_THIS, SDL_Surface *surface); -static void DUMMY_FreeHWSurface(_THIS, SDL_Surface *surface); - -/* etc. */ -static void DUMMY_UpdateRects(_THIS, int numrects, SDL_Rect *rects); - /* DUMMY driver bootstrap functions */ -static int DUMMY_Available(void) +static int +DUMMY_Available(void) { - const char *envr = SDL_getenv("SDL_VIDEODRIVER"); - if ((envr) && (SDL_strcmp(envr, DUMMYVID_DRIVER_NAME) == 0)) { - return(1); - } + const char *envr = SDL_getenv("SDL_VIDEODRIVER"); + if ((envr) && (SDL_strcmp(envr, DUMMYVID_DRIVER_NAME) == 0)) { + return (1); + } - return(0); + return (0); } -static void DUMMY_DeleteDevice(SDL_VideoDevice *device) +static void +DUMMY_DeleteDevice(SDL_VideoDevice * device) { - SDL_free(device->hidden); - SDL_free(device); + SDL_free(device); } -static SDL_VideoDevice *DUMMY_CreateDevice(int devindex) +static SDL_VideoDevice * +DUMMY_CreateDevice(int devindex) { - SDL_VideoDevice *device; - - /* Initialize all variables that we clean on shutdown */ - device = (SDL_VideoDevice *)SDL_malloc(sizeof(SDL_VideoDevice)); - if ( device ) { - SDL_memset(device, 0, (sizeof *device)); - device->hidden = (struct SDL_PrivateVideoData *) - SDL_malloc((sizeof *device->hidden)); - } - if ( (device == NULL) || (device->hidden == NULL) ) { - SDL_OutOfMemory(); - if ( device ) { - SDL_free(device); - } - return(0); - } - SDL_memset(device->hidden, 0, (sizeof *device->hidden)); + SDL_VideoDevice *device; - /* Set the function pointers */ - device->VideoInit = DUMMY_VideoInit; - device->ListModes = DUMMY_ListModes; - device->SetVideoMode = DUMMY_SetVideoMode; - device->CreateYUVOverlay = NULL; - device->SetColors = DUMMY_SetColors; - device->UpdateRects = DUMMY_UpdateRects; - device->VideoQuit = DUMMY_VideoQuit; - device->AllocHWSurface = DUMMY_AllocHWSurface; - device->CheckHWBlit = NULL; - device->FillHWRect = NULL; - device->SetHWColorKey = NULL; - device->SetHWAlpha = NULL; - device->LockHWSurface = DUMMY_LockHWSurface; - device->UnlockHWSurface = DUMMY_UnlockHWSurface; - device->FlipHWSurface = NULL; - device->FreeHWSurface = DUMMY_FreeHWSurface; - device->SetCaption = NULL; - device->SetIcon = NULL; - device->IconifyWindow = NULL; - device->GrabInput = NULL; - device->GetWMInfo = NULL; - device->InitOSKeymap = DUMMY_InitOSKeymap; - device->PumpEvents = DUMMY_PumpEvents; + /* Initialize all variables that we clean on shutdown */ + device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice)); + if (!device) { + SDL_OutOfMemory(); + if (device) { + SDL_free(device); + } + return (0); + } - device->free = DUMMY_DeleteDevice; + /* Set the function pointers */ + device->VideoInit = DUMMY_VideoInit; + device->SetDisplayMode = DUMMY_SetDisplayMode; + device->VideoQuit = DUMMY_VideoQuit; + device->PumpEvents = DUMMY_PumpEvents; - return device; + device->free = DUMMY_DeleteDevice; + + return device; } VideoBootStrap DUMMY_bootstrap = { - DUMMYVID_DRIVER_NAME, "SDL dummy video driver", - DUMMY_Available, DUMMY_CreateDevice + DUMMYVID_DRIVER_NAME, "SDL dummy video driver", + DUMMY_Available, DUMMY_CreateDevice }; -int DUMMY_VideoInit(_THIS, SDL_PixelFormat *vformat) +int +DUMMY_VideoInit(_THIS) { - /* - fprintf(stderr, "WARNING: You are using the SDL dummy video driver!\n"); - */ + SDL_DisplayMode mode; - /* Determine the screen depth (use default 8-bit depth) */ - /* we change this during the SDL_SetVideoMode implementation... */ - vformat->BitsPerPixel = 8; - vformat->BytesPerPixel = 1; + SDL_AddBasicVideoDisplay(NULL); + SDL_AddRenderDriver(0, &SDL_DUMMY_RenderDriver); - /* We're done! */ - return(0); -} + SDL_zero(mode); + SDL_AddDisplayMode(0, &mode); -SDL_Rect **DUMMY_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags) -{ - return (SDL_Rect **) -1; + /* We're done! */ + return 0; } -SDL_Surface *DUMMY_SetVideoMode(_THIS, SDL_Surface *current, - int width, int height, int bpp, Uint32 flags) +static int +DUMMY_SetDisplayMode(_THIS, SDL_DisplayMode * mode) { - if ( this->hidden->buffer ) { - SDL_free( this->hidden->buffer ); - } - - this->hidden->buffer = SDL_malloc(width * height * (bpp / 8)); - if ( ! this->hidden->buffer ) { - SDL_SetError("Couldn't allocate buffer for requested mode"); - return(NULL); - } - -/* printf("Setting mode %dx%d\n", width, height); */ - - SDL_memset(this->hidden->buffer, 0, width * height * (bpp / 8)); - - /* Allocate the new pixel format for the screen */ - if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { - SDL_free(this->hidden->buffer); - this->hidden->buffer = NULL; - SDL_SetError("Couldn't allocate new pixel format for requested mode"); - return(NULL); - } - - /* Set up the new mode framebuffer */ - current->flags = flags & SDL_FULLSCREEN; - this->hidden->w = current->w = width; - this->hidden->h = current->h = height; - current->pitch = current->w * (bpp / 8); - current->pixels = this->hidden->buffer; - - /* We're done */ - return(current); + return 0; } -/* We don't actually allow hardware surfaces other than the main one */ -static int DUMMY_AllocHWSurface(_THIS, SDL_Surface *surface) -{ - return(-1); -} -static void DUMMY_FreeHWSurface(_THIS, SDL_Surface *surface) +void +DUMMY_VideoQuit(_THIS) { - return; -} - -/* We need to wait for vertical retrace on page flipped displays */ -static int DUMMY_LockHWSurface(_THIS, SDL_Surface *surface) -{ - return(0); -} - -static void DUMMY_UnlockHWSurface(_THIS, SDL_Surface *surface) -{ - return; } -static void DUMMY_UpdateRects(_THIS, int numrects, SDL_Rect *rects) -{ - /* do nothing. */ -} - -int DUMMY_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) -{ - /* do nothing of note. */ - return(1); -} - -/* Note: If we are terminated, this could be called in the middle of - another SDL video routine -- notably UpdateRects. -*/ -void DUMMY_VideoQuit(_THIS) -{ - if (this->screen->pixels != NULL) - { - SDL_free(this->screen->pixels); - this->screen->pixels = NULL; - } -} +/* vi: set ts=4 sw=4 expandtab: */