#define HAVE_TLS_CONTEXT
#endif
-#include "src/defines.h"
+/* For windows */
+#ifndef SDL_PERL_DEFINES_H
+#define SDL_PERL_DEFINES_H
+
+#ifdef HAVE_TLS_CONTEXT
+PerlInterpreter *parent_perl = NULL;
+extern PerlInterpreter *parent_perl;
+#define GET_TLS_CONTEXT parent_perl = PERL_GET_CONTEXT;
+#define ENTER_TLS_CONTEXT \
+ PerlInterpreter *current_perl = PERL_GET_CONTEXT; \
+ PERL_SET_CONTEXT(parent_perl); { \
+ PerlInterpreter *my_perl = parent_perl;
+#define LEAVE_TLS_CONTEXT \
+ } PERL_SET_CONTEXT(current_perl);
+#else
+#define GET_TLS_CONTEXT /* TLS context not enabled */
+#define ENTER_TLS_CONTEXT /* TLS context not enabled */
+#define LEAVE_TLS_CONTEXT /* TLS context not enabled */
+#endif
+
+#endif
Uint32
sdl_perl_timer_callback ( Uint32 interval, void* param )
OUTPUT:
RETVAL
-SDL_Rect *
-NewRect ( x, y, w, h )
- Sint16 x
- Sint16 y
- Uint16 w
- Uint16 h
- CODE:
- RETVAL = (SDL_Rect *) safemalloc (sizeof(SDL_Rect));
- RETVAL->x = x;
- RETVAL->y = y;
- RETVAL->w = w;
- RETVAL->h = h;
- OUTPUT:
- RETVAL
-
-void
-FreeRect ( rect )
- SDL_Rect *rect
- CODE:
- safefree(rect);
-
-Sint16
-RectX ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->x = SvIV(ST(1));
- RETVAL = rect->x;
- OUTPUT:
- RETVAL
-
-Sint16
-RectY ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->y = SvIV(ST(1));
- RETVAL = rect->y;
- OUTPUT:
- RETVAL
-
-Uint16
-RectW ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->w = SvIV(ST(1));
- RETVAL = rect->w;
- OUTPUT:
- RETVAL
-
-Uint16
-RectH ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->h = SvIV(ST(1));
- RETVAL = rect->h;
- OUTPUT:
- RETVAL
-
AV*
ListModes ( format, flags )
Uint32 flags
OUTPUT:
RETVAL
+
+void
+ColorRGB ( color, ... )
+ SDL_Color *color
+ PPCODE:
+ if (items > 1 ) {
+ color->r = SvIV(ST(1));
+ color->g = SvIV(ST(2));
+ color->b = SvIV(ST(3));
+ }
+ mXPUSHi( color->r );
+ mXPUSHi( color->g );
+ mXPUSHi( color->b );
+ XSRETURN(3);
+
void
FreeColor ( color )
SDL_Color *color
UpdateRects ( surface, ... )
SDL_Surface *surface
CODE:
- SDL_Rect *rects, *temp;
+ SDL_Rect *rects, *oldrects, *temp;
int num_rects,i;
if ( items < 2 ) return;
- num_rects = items - 1;
+ num_rects = items - 1;
+ oldrects = rects;
rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
for(i=0;i<num_rects;i++) {
temp = (SDL_Rect *)SvIV(ST(i+1));
}
SDL_UpdateRects(surface,num_rects,rects);
safefree(rects);
+ safefree(oldrects);
int
Flip ( surface )
CODE:
SDL_SetClipRect(surface,rect);
-SDL_Rect*
-GetClipRect ( surface )
+void
+GetClipRect ( surface, rect )
SDL_Surface *surface
+ SDL_Rect *rect;
CODE:
- RETVAL = (SDL_Rect*) safemalloc(sizeof(SDL_Rect));
- SDL_GetClipRect(surface,RETVAL);
- OUTPUT:
- RETVAL
+ SDL_GetClipRect(surface, rect);
#ifdef HAVE_SDL_NET
CODE:
int w,h;
RETVAL = newAV();
- TTF_SizeText(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
+ if(TTF_SizeText(font,text,&w,&h))
+ {
+ av_push(RETVAL,newSViv(w));
+ av_push(RETVAL,newSViv(h));
+ sv_2mortal((SV*)RETVAL);
+ }
+ else
+ {
+ printf("TTF error at TTFSizeText: %s \n", TTF_GetError());
+ Perl_croak (aTHX_ "TTF error \n");
+
+ }
+
+
OUTPUT:
RETVAL
CODE:
int w,h;
RETVAL = newAV();
- TTF_SizeUTF8(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
+ if(TTF_SizeUTF8(font,text,&w,&h))
+ {
+ av_push(RETVAL,newSViv(w));
+ av_push(RETVAL,newSViv(h));
+ sv_2mortal((SV*)RETVAL);
+
+ }
+ else
+ {
+ printf("TTF error at TTFSizeUTF8 with : %s \n", TTF_GetError());
+ Perl_croak (aTHX_ "TTF error \n");
+ }
+
OUTPUT:
RETVAL
CODE:
int w,h;
RETVAL = newAV();
- TTF_SizeUNICODE(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
+ if(TTF_SizeUNICODE(font,text,&w,&h))
+ {
+ av_push(RETVAL,newSViv(w));
+ av_push(RETVAL,newSViv(h));
+ sv_2mortal((SV*)RETVAL);
+
+ }
+ else
+ {
+ printf("TTF error at TTFSizeUNICODE : %s \n", TTF_GetError());
+ Perl_croak (aTHX_ "TTF error \n");
+ }
+
OUTPUT:
RETVAL