… | |
… | |
500 | |
500 | |
501 | rv = 0; |
501 | rv = 0; |
502 | } |
502 | } |
503 | else if (event_code == EVENT_CLOCK) |
503 | else if (event_code == EVENT_CLOCK) |
504 | { |
504 | { |
505 | dSP; |
|
|
506 | int i, count; |
|
|
507 | |
|
|
508 | clean_obj_cache (); |
505 | clean_obj_cache (); |
509 | |
|
|
510 | ENTER; |
|
|
511 | SAVETMPS; |
|
|
512 | |
|
|
513 | // service up to 8 events per tick better would be |
|
|
514 | // to check for elapsed time and stop processing after |
|
|
515 | // 0.25 * server_tick or so |
|
|
516 | for (i = 9; --i; ) |
|
|
517 | { |
|
|
518 | PUSHMARK (SP); |
|
|
519 | XPUSHs (sv_2mortal (newSViv (0))); |
|
|
520 | PUTBACK; |
|
|
521 | count = call_pv ("Event::one_event", G_SCALAR | G_EVAL); |
|
|
522 | SPAGAIN; |
|
|
523 | |
|
|
524 | if (!count || !POPi) |
|
|
525 | break; |
|
|
526 | } |
|
|
527 | |
|
|
528 | FREETMPS; |
|
|
529 | LEAVE; |
|
|
530 | } |
506 | } |
531 | else |
507 | else |
532 | { |
508 | { |
533 | dSP; |
509 | dSP; |
534 | |
510 | |
… | |
… | |
734 | perl_free (perl); |
710 | perl_free (perl); |
735 | perl = 0; |
711 | perl = 0; |
736 | } |
712 | } |
737 | |
713 | |
738 | return 0; |
714 | return 0; |
|
|
715 | } |
|
|
716 | |
|
|
717 | void cfperl_sleep (double delta) |
|
|
718 | { |
|
|
719 | dSP; |
|
|
720 | ENTER; |
|
|
721 | SAVETMPS; |
|
|
722 | |
|
|
723 | PUSHMARK (SP); |
|
|
724 | XPUSHs (sv_2mortal (newSVnv (delta))); |
|
|
725 | PUTBACK; |
|
|
726 | call_pv ("cf::sleep_delta", G_DISCARD | G_VOID | G_EVAL); |
|
|
727 | SPAGAIN; |
|
|
728 | |
|
|
729 | FREETMPS; |
|
|
730 | LEAVE; |
739 | } |
731 | } |
740 | |
732 | |
741 | MODULE = cf PACKAGE = cf PREFIX = cf_ |
733 | MODULE = cf PACKAGE = cf PREFIX = cf_ |
742 | |
734 | |
743 | BOOT: |
735 | BOOT: |