diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-05-24 21:44:10 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-05-24 21:50:35 -0700 |
| commit | 444ff687a299721247ae008abdeca9b32fc958dd (patch) | |
| tree | 6072c614e37b3abf8916702e861c917c1fa44740 /src | |
| parent | 2a82a9907f88dae7f78e7e17f7d71a907f6683dd (diff) | |
std: Move loop creation into run_high_level_loop
Diffstat (limited to 'src')
| -rw-r--r-- | src/libstd/uv_global_loop.rs | 3 | ||||
| -rw-r--r-- | src/libstd/uv_hl.rs | 8 |
2 files changed, 3 insertions, 8 deletions
diff --git a/src/libstd/uv_global_loop.rs b/src/libstd/uv_global_loop.rs index 710e439c347..6f882052370 100644 --- a/src/libstd/uv_global_loop.rs +++ b/src/libstd/uv_global_loop.rs @@ -101,11 +101,9 @@ fn spawn_high_level_loop() -> hl::high_level_loop unsafe { #debug("entering global libuv task"); weaken_task() {|weak_exit_po| #debug("global libuv task is now weak %?", weak_exit_po); - let loop_ptr = ll::loop_new(); let loop_msg_po = port::<hl::high_level_msg>(); let loop_msg_ch = loop_msg_po.chan(); hl::run_high_level_loop( - loop_ptr, loop_msg_po, // before_run {|async_handle| @@ -128,7 +126,6 @@ fn spawn_high_level_loop() -> hl::high_level_loop unsafe { async_handle); } ); - ll::loop_delete(loop_ptr); #debug("global libuv task is leaving weakened state"); }; #debug("global libuv task exiting"); diff --git a/src/libstd/uv_hl.rs b/src/libstd/uv_hl.rs index 0b4e23674a6..5b734af4324 100644 --- a/src/libstd/uv_hl.rs +++ b/src/libstd/uv_hl.rs @@ -60,12 +60,12 @@ the loop's msg port * before_tear_down - called just before the loop invokes `uv_close()` on the provided `async_handle`. `uv_run` should return shortly after "] -unsafe fn run_high_level_loop(loop_ptr: *c_void, - msg_po: port<high_level_msg>, +unsafe fn run_high_level_loop(msg_po: port<high_level_msg>, before_run: fn~(*ll::uv_async_t), before_msg_process: fn~(*ll::uv_async_t, bool) -> bool, before_tear_down: fn~(*ll::uv_async_t)) { + let loop_ptr = ll::loop_new(); // set up the special async handle we'll use to allow multi-task // communication with this loop let async = ll::async_t(); @@ -90,6 +90,7 @@ unsafe fn run_high_level_loop(loop_ptr: *c_void, // enter the loop... this blocks until the loop is done.. ll::run(loop_ptr); log(debug, "high-level loop ended"); + ll::loop_delete(loop_ptr); } #[doc = " @@ -233,11 +234,9 @@ mod test { let hl_loop_port = comm::port::<high_level_loop>(); let hl_loop_ch = comm::chan(hl_loop_port); task::spawn_sched(task::manual_threads(1u)) {|| - let loop_ptr = ll::loop_new(); let msg_po = comm::port::<high_level_msg>(); let msg_ch = comm::chan(msg_po); run_high_level_loop( - loop_ptr, msg_po, // before_run {|async_handle| @@ -261,7 +260,6 @@ mod test { log(debug,#fmt("hl test_loop b4_tear_down: async %?", async_handle)); }); - ll::loop_delete(loop_ptr); comm::send(exit_ch, ()); }; ret comm::recv(hl_loop_port); |
