about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-05-24 21:44:10 -0700
committerBrian Anderson <banderson@mozilla.com>2012-05-24 21:50:35 -0700
commit444ff687a299721247ae008abdeca9b32fc958dd (patch)
tree6072c614e37b3abf8916702e861c917c1fa44740 /src/libstd
parent2a82a9907f88dae7f78e7e17f7d71a907f6683dd (diff)
std: Move loop creation into run_high_level_loop
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/uv_global_loop.rs3
-rw-r--r--src/libstd/uv_hl.rs8
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);