X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fvideo%2Fomapdss%2Fsdlif.c;h=2b7664129d5df05204c60e53f67a2629d682a0b8;hb=37299201ea61744044352c1b70c9e68faa206c3e;hp=b33aa0fc9aa2b284df4112c3e234641aeb831b14;hpb=17e19802bcb08b2a79e39f84e93750f912f56609;p=sdl_omap.git diff --git a/src/video/omapdss/sdlif.c b/src/video/omapdss/sdlif.c index b33aa0f..2b76641 100644 --- a/src/video/omapdss/sdlif.c +++ b/src/video/omapdss/sdlif.c @@ -10,16 +10,9 @@ #include "../SDL_sysvideo.h" #include "../SDL_pixels_c.h" #include "../../events/SDL_events_c.h" -#include "linux/fbdev.h" -#include "linux/oshide.h" #include "omapsdl.h" -struct SDL_PrivateVideoData { - struct vout_fbdev *fbdev; -// void *fbmem; -}; - static int omap_available(void) { trace(); @@ -49,12 +42,7 @@ static void omap_VideoQuit(SDL_VideoDevice *this) { trace(); - if (this->hidden->fbdev != NULL) { - vout_fbdev_finish(this->hidden->fbdev); - this->hidden->fbdev = NULL; - - oshide_finish(); - } + osdl_video_finish(this->hidden); this->screen->pixels = NULL; omapsdl_input_finish(); } @@ -64,13 +52,22 @@ static SDL_Rect **omap_ListModes(SDL_VideoDevice *this, SDL_PixelFormat *format, static SDL_Rect omap_mode_list[] = { // XXX: we are not really restricted to fixed modes // FIXME: should really check the display for max supported - { 0, 0, 800, 480 }, - { 0, 0, 720, 480 }, - { 0, 0, 640, 480 }, - { 0, 0, 640, 400 }, - { 0, 0, 512, 384 }, - { 0, 0, 320, 240 }, - { 0, 0, 320, 200 }, + { 0, 0, 1600, 1200 }, + { 0, 0, 1408, 1056 }, + { 0, 0, 1280, 1024 }, + { 0, 0, 1152, 864 }, + { 0, 0, 1024, 768 }, + { 0, 0, 960, 720 }, + { 0, 0, 800, 600 }, + { 0, 0, 768, 576 }, + { 0, 0, 720, 576 }, + { 0, 0, 800, 480 }, + { 0, 0, 720, 480 }, + { 0, 0, 640, 480 }, + { 0, 0, 640, 400 }, + { 0, 0, 512, 384 }, + { 0, 0, 320, 240 }, + { 0, 0, 320, 200 }, }; // broken API needs this static SDL_Rect *omap_modes[] = { @@ -98,17 +95,8 @@ static SDL_Surface *omap_SetVideoMode(SDL_VideoDevice *this, SDL_Surface *curren { trace("%d, %d, %d, %08x", width, height, bpp, flags); - if (this->hidden->fbdev == NULL) { - this->hidden->fbdev = vout_fbdev_init("/dev/fb0", &width, &height, 0); - if (this->hidden->fbdev == NULL) - return NULL; - - oshide_init(); - } - else { - if (vout_fbdev_resize(this->hidden->fbdev, width, height, 0, 0, 0, 0, 0) < 0) - return NULL; - } + if (osdl_video_set_mode(this->hidden, width, height, bpp) < 0) + return NULL; if (!SDL_ReallocFormat(current, 16, 0xf800, 0x07e0, 0x001f, 0)) return NULL; @@ -118,19 +106,11 @@ static SDL_Surface *omap_SetVideoMode(SDL_VideoDevice *this, SDL_Surface *curren current->h = height; current->pitch = SDL_CalculatePitch(current); - current->pixels = vout_fbdev_flip(this->hidden->fbdev); + current->pixels = osdl_video_flip(this->hidden); return current; } -static void *flip_it(struct vout_fbdev *fbdev) -{ - if (gcfg_force_vsync) - vout_fbdev_wait_vsync(fbdev); - - return vout_fbdev_flip(fbdev); -} - static int omap_LockHWSurface(SDL_VideoDevice *this, SDL_Surface *surface) { trace("%p", surface); @@ -147,11 +127,23 @@ static int omap_FlipHWSurface(SDL_VideoDevice *this, SDL_Surface *surface) { trace("%p", surface); - surface->pixels = flip_it(this->hidden->fbdev); + surface->pixels = osdl_video_flip(this->hidden); return 0; } +/* we can't do hw surfaces (besides screen one) yet */ +static int omap_AllocHWSurface(SDL_VideoDevice *this, SDL_Surface *surface) +{ + trace("%p", surface); + return -1; +} + +static void omap_FreeHWSurface(SDL_VideoDevice *this, SDL_Surface *surface) +{ + trace("%p", surface); +} + static int omap_SetColors(SDL_VideoDevice *this, int firstcolor, int ncolors, SDL_Color *colors) { trace("%d, %d, %p", firstcolor, ncolors, colors); @@ -171,8 +163,7 @@ static void omap_UpdateRects(SDL_VideoDevice *this, int nrects, SDL_Rect *rects) } } - if (this->hidden->fbdev) - this->screen->pixels = flip_it(this->hidden->fbdev); + this->screen->pixels = osdl_video_flip(this->hidden); } static void omap_InitOSKeymap(SDL_VideoDevice *this) @@ -224,6 +215,8 @@ static SDL_VideoDevice *omap_create(int devindex) this->LockHWSurface = omap_LockHWSurface; this->UnlockHWSurface = omap_UnlockHWSurface; this->FlipHWSurface = omap_FlipHWSurface; + this->AllocHWSurface = omap_AllocHWSurface; + this->FreeHWSurface = omap_FreeHWSurface; this->SetColors = omap_SetColors; this->UpdateRects = omap_UpdateRects; this->VideoQuit = omap_VideoQuit;