Mercurial > sdl-ios-xcode
changeset 286:3ea69fd0b095
Updated for DirectFB 0.9.9
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 26 Feb 2002 14:38:53 +0000 |
parents | e5a489f0288c |
children | e4bd0cf95506 |
files | configure.in src/video/directfb/SDL_DirectFB_events.c src/video/directfb/SDL_DirectFB_video.c src/video/directfb/SDL_DirectFB_video.h |
diffstat | 4 files changed, 39 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/configure.in Fri Feb 22 17:39:11 2002 +0000 +++ b/configure.in Tue Feb 26 14:38:53 2002 +0000 @@ -748,7 +748,7 @@ AC_MSG_ERROR([*** pkg-config too old; version 0.5 or better required.]) fi - DIRECTFB_REQUIRED_VERSION=0.9.8 + DIRECTFB_REQUIRED_VERSION=0.9.9 if $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb ; then DIRECTFB_CFLAGS=`$PKG_CONFIG --cflags directfb`
--- a/src/video/directfb/SDL_DirectFB_events.c Fri Feb 22 17:39:11 2002 +0000 +++ b/src/video/directfb/SDL_DirectFB_events.c Tue Feb 26 14:38:53 2002 +0000 @@ -56,7 +56,8 @@ { DFBInputEvent evt; - while (HIDDEN->inputbuffer->GetEvent (HIDDEN->inputbuffer, &evt) == DFB_OK) + while (HIDDEN->eventbuffer->GetEvent (HIDDEN->eventbuffer, + DFB_EVENT (&evt)) == DFB_OK) { SDL_keysym keysym;
--- a/src/video/directfb/SDL_DirectFB_video.c Fri Feb 22 17:39:11 2002 +0000 +++ b/src/video/directfb/SDL_DirectFB_video.c Tue Feb 26 14:38:53 2002 +0000 @@ -304,7 +304,7 @@ DFBCardCapabilities caps; IDirectFBDisplayLayer *layer; DFBDisplayLayerConfig dlc; - IDirectFBInputBuffer *inputbuffer; + IDirectFBEventBuffer *eventbuffer; ret = DirectFBInit (NULL, NULL); @@ -329,11 +329,10 @@ return -1; } - ret = dfb->CreateInputBuffer (dfb, DICAPS_BUTTONS | DICAPS_AXIS | DICAPS_KEYS, - &inputbuffer); + ret = dfb->CreateEventBuffer (dfb, DICAPS_ALL, &eventbuffer); if (ret) { - SetDirectFBerror ("dfb->CreateInputBuffer", ret); + SetDirectFBerror ("dfb->CreateEventBuffer", ret); layer->Release (layer); dfb->Release (dfb); return -1; @@ -395,7 +394,7 @@ HIDDEN->initialized = 1; HIDDEN->dfb = dfb; HIDDEN->layer = layer; - HIDDEN->inputbuffer = inputbuffer; + HIDDEN->eventbuffer = eventbuffer; return 0; } @@ -691,34 +690,48 @@ static void DirectFB_WindowedUpdate(_THIS, int numrects, SDL_Rect *rects) { + DFBRegion region; + int i; + int region_valid = 0; IDirectFBSurface *surface = this->screen->hwdata->surface; - DFBRegion region = { rects->x, rects->y, - rects->x + rects->w - 1, - rects->y + rects->h - 1 }; - while (--numrects) + for (i=0; i<numrects; ++i) { int x2, y2; - rects++; + if ( ! rects[i].w ) /* Clipped? */ + continue; + + x2 = rects[i].x + rects[i].w - 1; + y2 = rects[i].y + rects[i].h - 1; - if (rects->x < region.x1) - region.x1 = rects->x; + if (region_valid) + { + if (rects[i].x < region.x1) + region.x1 = rects[i].x; - if (rects->y < region.y1) - region.y1 = rects->y; + if (rects[i].y < region.y1) + region.y1 = rects[i].y; - x2 = rects->x + rects->w - 1; - y2 = rects->y + rects->h - 1; + if (x2 > region.x2) + region.x2 = x2; - if (x2 > region.x2) - region.x2 = x2; + if (y2 > region.y2) + region.y2 = y2; + } + else + { + region.x1 = rects[i].x; + region.y1 = rects[i].y; + region.x2 = x2; + region.y2 = y2; - if (y2 > region.y2) - region.y2 = y2; + region_valid = 1; + } } - surface->Flip (surface, ®ion, DSFLIP_WAITFORSYNC); + if (region_valid) + surface->Flip (surface, ®ion, DSFLIP_WAITFORSYNC); } int DirectFB_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) @@ -731,7 +744,7 @@ { int i, j; - HIDDEN->inputbuffer->Release (HIDDEN->inputbuffer); + HIDDEN->eventbuffer->Release (HIDDEN->eventbuffer); HIDDEN->layer->Release (HIDDEN->layer); HIDDEN->dfb->Release (HIDDEN->dfb);
--- a/src/video/directfb/SDL_DirectFB_video.h Fri Feb 22 17:39:11 2002 +0000 +++ b/src/video/directfb/SDL_DirectFB_video.h Tue Feb 26 14:38:53 2002 +0000 @@ -43,7 +43,7 @@ IDirectFB *dfb; IDirectFBDisplayLayer *layer; - IDirectFBInputBuffer *inputbuffer; + IDirectFBEventBuffer *eventbuffer; #define NUM_MODELISTS 4 /* 8, 16, 24, and 32 bits-per-pixel */ int SDL_nummodes[NUM_MODELISTS];