Added update_rects
Kartik Thakore [Sun, 25 Oct 2009 01:26:41 +0000 (21:26 -0400)]
src/Core/Video.xs
t/core_video.t

index 0a4569d..a7a6b34 100644 (file)
@@ -87,4 +87,29 @@ video_video_mode_ok ( width, height, bpp, flags )
        OUTPUT:
                RETVAL
 
+void
+video_update_rect ( surface, x, y, w ,h )
+       SDL_Surface *surface
+       int x
+       int y
+       int w
+       int h
+       CODE:
+               SDL_UpdateRect(surface,x,y,w,h);
+
+void
+video_update_rects ( 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);
+
 
index 24db4de..94b6dce 100644 (file)
@@ -6,8 +6,9 @@ use SDL::Config;
 use Devel::Peek;
 use Data::Dumper;
 use Test::More;
+use SDL::Rect;
 
-plan ( tests => 7 );
+plan ( tests => 8 );
 
 use_ok( 'SDL::Video' ); 
   
@@ -17,6 +18,8 @@ can_ok ('SDL::Video', qw/
        video_driver_name
        list_modes
        video_mode_ok
+       update_rect
+       update_rects
        /);
 
 #testing get_video_surface
@@ -40,6 +43,10 @@ is( ref( SDL::Video::list_modes( $display->format , SDL_SWSURFACE )), 'ARRAY', '
 
 cmp_ok(SDL::Video::video_mode_ok( 100, 100, 16, SDL_SWSURFACE), '>=', 0, "[video_mode_ok] Checking if an integer was return");
 
+SDL::Video::update_rect($display, 0, 0, 0, 0);
+
+SDL::Video::update_rects($display, SDL::Rect->new(0, 10, 20, 20));
+
 pass "Are we still alive?";
 
 =skip