X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fvideo%2Fomapdss%2Fsdlif.c;h=93d18f7e05404654195777caee924ad392cadfab;hb=7b66578c38502c173e310eb68f0cddc2e7b5031e;hp=dc97a0a533d06932d79072d130292af47d0d5fff;hpb=9a8e84f82ce2d22a033605d293eb8ba3a4936398;p=sdl_omap.git diff --git a/src/video/omapdss/sdlif.c b/src/video/omapdss/sdlif.c index dc97a0a..93d18f7 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,13 +42,9 @@ 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(); } static SDL_Rect **omap_ListModes(SDL_VideoDevice *this, SDL_PixelFormat *format, Uint32 flags) @@ -97,17 +86,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; @@ -117,19 +97,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); @@ -146,7 +118,7 @@ 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; } @@ -170,8 +142,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) @@ -179,7 +150,7 @@ static void omap_InitOSKeymap(SDL_VideoDevice *this) trace(); } -static int event_cb(void *cb_arg, int sdl_kc, int is_pressed) +static int key_event_cb(void *cb_arg, int sdl_kc, int is_pressed) { SDL_keysym keysym = { 0, }; @@ -187,11 +158,24 @@ static int event_cb(void *cb_arg, int sdl_kc, int is_pressed) SDL_PrivateKeyboard(is_pressed, &keysym); } +static int ts_event_cb(void *cb_arg, int x, int y, unsigned int pressure) +{ + static int was_pressed; + + SDL_PrivateMouseMotion(0, 0, x, y); + + pressure = !!pressure; + if (pressure != was_pressed) { + SDL_PrivateMouseButton(pressure ? SDL_PRESSED : SDL_RELEASED, 1, 0, 0); + was_pressed = pressure; + } +} + static void omap_PumpEvents(SDL_VideoDevice *this) { trace(); - omapsdl_input_get_events(0, event_cb, NULL); + omapsdl_input_get_events(0, key_event_cb, ts_event_cb, NULL); } static SDL_VideoDevice *omap_create(int devindex)