… | |
… | |
258 | #include "ev_vars.h" |
258 | #include "ev_vars.h" |
259 | #undef VAR |
259 | #undef VAR |
260 | }; |
260 | }; |
261 | #include "ev_wrap.h" |
261 | #include "ev_wrap.h" |
262 | |
262 | |
263 | struct ev_loop default_loop_struct; |
263 | static struct ev_loop default_loop_struct; |
264 | static struct ev_loop *default_loop; |
264 | struct ev_loop *ev_default_loop_ptr; |
265 | |
265 | |
266 | #else |
266 | #else |
267 | |
267 | |
268 | ev_tstamp ev_rt_now; |
268 | ev_tstamp ev_rt_now; |
269 | #define VAR(name,decl) static decl; |
269 | #define VAR(name,decl) static decl; |
270 | #include "ev_vars.h" |
270 | #include "ev_vars.h" |
271 | #undef VAR |
271 | #undef VAR |
272 | |
272 | |
273 | static int default_loop; |
273 | static int ev_default_loop_ptr; |
274 | |
274 | |
275 | #endif |
275 | #endif |
276 | |
276 | |
277 | /*****************************************************************************/ |
277 | /*****************************************************************************/ |
278 | |
278 | |
… | |
… | |
614 | ev_feed_signal_event (EV_P_ int signum) |
614 | ev_feed_signal_event (EV_P_ int signum) |
615 | { |
615 | { |
616 | WL w; |
616 | WL w; |
617 | |
617 | |
618 | #if EV_MULTIPLICITY |
618 | #if EV_MULTIPLICITY |
619 | assert (("feeding signal events is only supported in the default loop", loop == default_loop)); |
619 | assert (("feeding signal events is only supported in the default loop", loop == ev_default_loop_ptr)); |
620 | #endif |
620 | #endif |
621 | |
621 | |
622 | --signum; |
622 | --signum; |
623 | |
623 | |
624 | if (signum < 0 || signum >= signalmax) |
624 | if (signum < 0 || signum >= signalmax) |
… | |
… | |
891 | |
891 | |
892 | #endif |
892 | #endif |
893 | |
893 | |
894 | #if EV_MULTIPLICITY |
894 | #if EV_MULTIPLICITY |
895 | struct ev_loop * |
895 | struct ev_loop * |
|
|
896 | ev_default_loop_ (unsigned int flags) |
896 | #else |
897 | #else |
897 | int |
898 | int |
898 | #endif |
|
|
899 | ev_default_loop (unsigned int flags) |
899 | ev_default_loop (unsigned int flags) |
|
|
900 | #endif |
900 | { |
901 | { |
901 | if (sigpipe [0] == sigpipe [1]) |
902 | if (sigpipe [0] == sigpipe [1]) |
902 | if (pipe (sigpipe)) |
903 | if (pipe (sigpipe)) |
903 | return 0; |
904 | return 0; |
904 | |
905 | |
905 | if (!default_loop) |
906 | if (!ev_default_loop_ptr) |
906 | { |
907 | { |
907 | #if EV_MULTIPLICITY |
908 | #if EV_MULTIPLICITY |
908 | struct ev_loop *loop = default_loop = &default_loop_struct; |
909 | struct ev_loop *loop = ev_default_loop_ptr = &default_loop_struct; |
909 | #else |
910 | #else |
910 | default_loop = 1; |
911 | ev_default_default_loop_ptr = 1; |
911 | #endif |
912 | #endif |
912 | |
913 | |
913 | loop_init (EV_A_ flags); |
914 | loop_init (EV_A_ flags); |
914 | |
915 | |
915 | if (ev_method (EV_A)) |
916 | if (ev_method (EV_A)) |
… | |
… | |
922 | ev_signal_start (EV_A_ &childev); |
923 | ev_signal_start (EV_A_ &childev); |
923 | ev_unref (EV_A); /* child watcher should not keep loop alive */ |
924 | ev_unref (EV_A); /* child watcher should not keep loop alive */ |
924 | #endif |
925 | #endif |
925 | } |
926 | } |
926 | else |
927 | else |
927 | default_loop = 0; |
928 | ev_default_loop_ptr = 0; |
928 | } |
929 | } |
929 | |
930 | |
930 | return default_loop; |
931 | return ev_default_loop_ptr; |
931 | } |
932 | } |
932 | |
933 | |
933 | void |
934 | void |
934 | ev_default_destroy (void) |
935 | ev_default_destroy (void) |
935 | { |
936 | { |
936 | #if EV_MULTIPLICITY |
937 | #if EV_MULTIPLICITY |
937 | struct ev_loop *loop = default_loop; |
938 | struct ev_loop *loop = ev_default_loop_ptr; |
938 | #endif |
939 | #endif |
939 | |
940 | |
940 | #ifndef _WIN32 |
941 | #ifndef _WIN32 |
941 | ev_ref (EV_A); /* child watcher */ |
942 | ev_ref (EV_A); /* child watcher */ |
942 | ev_signal_stop (EV_A_ &childev); |
943 | ev_signal_stop (EV_A_ &childev); |
… | |
… | |
953 | |
954 | |
954 | void |
955 | void |
955 | ev_default_fork (void) |
956 | ev_default_fork (void) |
956 | { |
957 | { |
957 | #if EV_MULTIPLICITY |
958 | #if EV_MULTIPLICITY |
958 | struct ev_loop *loop = default_loop; |
959 | struct ev_loop *loop = ev_default_loop_ptr; |
959 | #endif |
960 | #endif |
960 | |
961 | |
961 | if (method) |
962 | if (method) |
962 | postfork = 1; |
963 | postfork = 1; |
963 | } |
964 | } |
… | |
… | |
1516 | |
1517 | |
1517 | void |
1518 | void |
1518 | ev_signal_start (EV_P_ struct ev_signal *w) |
1519 | ev_signal_start (EV_P_ struct ev_signal *w) |
1519 | { |
1520 | { |
1520 | #if EV_MULTIPLICITY |
1521 | #if EV_MULTIPLICITY |
1521 | assert (("signal watchers are only supported in the default loop", loop == default_loop)); |
1522 | assert (("signal watchers are only supported in the default loop", loop == ev_default_loop_ptr)); |
1522 | #endif |
1523 | #endif |
1523 | if (ev_is_active (w)) |
1524 | if (ev_is_active (w)) |
1524 | return; |
1525 | return; |
1525 | |
1526 | |
1526 | assert (("ev_signal_start called with illegal signal number", w->signum > 0)); |
1527 | assert (("ev_signal_start called with illegal signal number", w->signum > 0)); |
… | |
… | |
1559 | |
1560 | |
1560 | void |
1561 | void |
1561 | ev_child_start (EV_P_ struct ev_child *w) |
1562 | ev_child_start (EV_P_ struct ev_child *w) |
1562 | { |
1563 | { |
1563 | #if EV_MULTIPLICITY |
1564 | #if EV_MULTIPLICITY |
1564 | assert (("child watchers are only supported in the default loop", loop == default_loop)); |
1565 | assert (("child watchers are only supported in the default loop", loop == ev_default_loop_ptr)); |
1565 | #endif |
1566 | #endif |
1566 | if (ev_is_active (w)) |
1567 | if (ev_is_active (w)) |
1567 | return; |
1568 | return; |
1568 | |
1569 | |
1569 | ev_start (EV_A_ (W)w, 1); |
1570 | ev_start (EV_A_ (W)w, 1); |