#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifndef aTHX_
#define aTHX_
#endif
#ifdef USE_THREADS
#define HAVE_TLS_CONTEXT
#endif
/* 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
#include <SDL.h>
SV* cb;
STATIC void perl_call ( pTHX_ Uint32 interval, void* param)
{
dSP;
PUSHMARK(SP);
call_sv( (SV*)cb, G_DISCARD);
}
Uint32 add_timer_cb (Uint32 interval, void* param )
{
// ENTER_TLS_CONTEXT
dTHX;
perl_call(aTHX_ interval, param);
// LEAVE_TLS_CONTEXT
return interval;
}
MODULE = SDL::Time PACKAGE = SDL::Time PREFIX = time_
SDL_TimerID
time_add_timer ( interval, cmd )
Uint32 interval
SV *cmd
CODE:
cb = newSVsv(cmd);
RETVAL = SDL_AddTimer(interval,add_timer_cb,(void *)cmd);
fprintf( stderr, "Timer %d \n Return = %x \n error = %s \n ", interval, (int)RETVAL, SDL_GetError() );
OUTPUT:
RETVAL