support for threaded perl. patch by mls@suse.de

git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2930 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
Timo Sirainen 2002-09-19 14:30:10 +00:00 committed by cras
parent fe73785c7a
commit f31b59b48b
3 changed files with 10 additions and 6 deletions

View File

@ -219,12 +219,12 @@ char *perl_get_use_list(void)
return ret; return ret;
} }
void irssi_callXS(void (*subaddr)(CV* cv), CV *cv, SV **mark) void irssi_callXS(void (*subaddr)(pTHX_ CV* cv), CV *cv, SV **mark)
{ {
dSP; dSP;
PUSHMARK(mark); PUSHMARK(mark);
(*subaddr)(cv); (*subaddr)(aTHX_ cv);
PUTBACK; PUTBACK;
} }

View File

@ -32,6 +32,10 @@ SV *perl_func_sv_inc(SV *func, const char *package);
extern STRLEN PL_na; extern STRLEN PL_na;
#endif #endif
#ifndef pTHX_
# define pTHX_
#endif
#define iobject_bless(object) \ #define iobject_bless(object) \
((object) == NULL ? &PL_sv_undef : \ ((object) == NULL ? &PL_sv_undef : \
irssi_bless_iobject((object)->type, (object)->chat_type, object)) irssi_bless_iobject((object)->type, (object)->chat_type, object))
@ -57,10 +61,10 @@ void irssi_add_plains(PLAIN_OBJECT_INIT_REC *objects);
char *perl_get_use_list(void); char *perl_get_use_list(void);
#define irssi_boot(x) { \ #define irssi_boot(x) { \
extern void boot_Irssi__##x(CV *cv); \ extern void boot_Irssi__##x(pTHX_ CV *cv); \
irssi_callXS(boot_Irssi__##x, cv, mark); \ irssi_callXS(boot_Irssi__##x, cv, mark); \
} }
void irssi_callXS(void (*subaddr)(CV* cv), CV *cv, SV **mark); void irssi_callXS(void (*subaddr)(pTHX_ CV* cv), CV *cv, SV **mark);
void perl_common_start(void); void perl_common_start(void);
void perl_common_stop(void); void perl_common_stop(void);

View File

@ -84,7 +84,7 @@ static void perl_script_destroy(PERL_SCRIPT_REC *script)
g_free(script); g_free(script);
} }
extern void boot_DynaLoader(CV* cv); extern void boot_DynaLoader(pTHX_ CV* cv);
#if PERL_STATIC_LIBS == 1 #if PERL_STATIC_LIBS == 1
extern void boot_Irssi(CV *cv); extern void boot_Irssi(CV *cv);
@ -101,7 +101,7 @@ XS(boot_Irssi_Core)
} }
#endif #endif
static void xs_init(void) static void xs_init(pTHX)
{ {
dXSUB_SYS; dXSUB_SYS;