This patch adds the ability to interrpt or suspend a long running script. If suspended, the script can be resumed with standard API at a later point.
One can also do some application work (like driving a C++ GUI) inside the app QuerySuspend function.
Diff file (against Squirrel 2.5 work sources): QuerySuspend.p0
Source files: QuerySuspend.zip
How to use:
int SQMyQuerySuspend( SQVM *vm ){
if( /* too long time */ ){
return SQ_QUERY_BREAK;
// or return SQ_QUERY_SUSPEND;
}
/* Do some processing / nothing */
return SQ_QUERY_CONTINUE;
}
// In init section
SQVM *vm = /* from somewhere */;
vm->SetQuerySuspendFn( SQMyQuerySuspend );
// ... continue