Move update_rects out of Surface.xs and make SDL::UpdateRects work
Leon Brocard [Fri, 16 Oct 2009 14:39:21 +0000 (15:39 +0100)]
src/Core/objects/Surface.xs
src/SDL.xs
t/core_surface.t

index 33c95e5..574731c 100644 (file)
@@ -54,26 +54,6 @@ surface_format ( surface )
        OUTPUT:
                RETVAL
 
-void
-surface_update_rects ( surface, ... )
-       SDL_Surface *surface
-       CODE:
-               SDL_Rect *rects, *temp;
-               int num_rects,i;
-               if ( items < 2 ) return;
-               num_rects = items - 1;
-                       
-               rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
-               for(i=0;i<num_rects;i++) {
-                       temp = (SDL_Rect *)SvIV(ST(i+1));
-                       rects[i].x = temp->x;
-                       rects[i].y = temp->y;
-                       rects[i].w = temp->w;
-                       rects[i].h = temp->h;
-               } 
-               SDL_UpdateRects(surface,num_rects,rects);
-               safefree(rects);
-
 Uint16
 surface_pitch( surface )
        SDL_Surface *surface
index 7994608..aa949e0 100644 (file)
@@ -1312,6 +1312,21 @@ DisplayFormatAlpha ( surface )
        OUTPUT:
                RETVAL
 
+void
+UpdateRects ( surface, ... )
+       SDL_Surface *surface
+       CODE:
+               SDL_Rect *rects;
+               int num_rects,i;
+               if ( items < 2 ) return;
+               num_rects = items - 1;
+               rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
+               for(i=0;i<num_rects;i++) {
+                       rects[i] = *(SDL_Rect *)SvIV((SV*)SvRV( ST(i + 1) ));
+               }
+               SDL_UpdateRects(surface,num_rects,rects);
+               safefree(rects);
+
 =for comment
 
 Comment out for now as it does not compile
@@ -1354,26 +1369,6 @@ SetVideoMode ( width, height, bpp, flags )
        OUTPUT:
                RETVAL
 
-void
-UpdateRects ( surface, ... )
-       SDL_Surface *surface
-       CODE:
-               SDL_Rect *rects, *temp;
-               int num_rects,i;
-               if ( items < 2 ) return;
-               num_rects = items - 1;
-               SDL_UpdateRects(surface,num_rects,rects);                       
-               rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
-               for(i=0;i<num_rects;i++) {
-                       temp = (SDL_Rect *)SvIV(ST(i+1));
-                       rects[i].x = temp->x;
-                       rects[i].y = temp->y;
-                       rects[i].w = temp->w;
-                       rects[i].h = temp->h;
-               } 
-               SDL_UpdateRects(surface,num_rects,rects);
-               safefree(rects);
-
 int
 Flip ( surface )
        SDL_Surface *surface
index d81eaf0..9e715e9 100644 (file)
@@ -92,6 +92,7 @@ my $rect = SDL::Rect->new( 0, 0, $app->w, $app->h );
 my $blue_pixel = SDL::MapRGB( $app_pixel_format, 0x00, 0x00, 0xff );
 SDL::FillRect( $app, $rect, $blue_pixel );
 SDL::UpdateRect( $app, 0, 0, 0, 0 );
+SDL::UpdateRects( $app, $small_rect );
 
 diag( 'This is in surface : ' . SDL::Surface::get_pixels($app) );