diff options
-rw-r--r-- | platform/default/run_loop.cpp | 1 | ||||
-rw-r--r-- | test/util/run_loop.cpp | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/platform/default/run_loop.cpp b/platform/default/run_loop.cpp index 76c01b80b7..6230e8f1ab 100644 --- a/platform/default/run_loop.cpp +++ b/platform/default/run_loop.cpp @@ -151,6 +151,7 @@ void RunLoop::push(std::shared_ptr<WorkTask> task) { void RunLoop::run() { MBGL_VERIFY_THREAD(tid); + uv_ref(impl->holderHandle()); uv_run(impl->loop, UV_RUN_DEFAULT); } diff --git a/test/util/run_loop.cpp b/test/util/run_loop.cpp index b6e5acca09..565ce2c066 100644 --- a/test/util/run_loop.cpp +++ b/test/util/run_loop.cpp @@ -29,3 +29,24 @@ TEST(RunLoop, MultipleStop) { loop.run(); } + +TEST(RunLoop, MultipleRun) { + RunLoop loop(RunLoop::Type::New); + + Timer timer; + timer.start(mbgl::Duration::zero(), mbgl::Duration::zero(), [&] { + loop.stop(); + }); + + loop.run(); + + bool secondTimeout = false; + timer.start(mbgl::Duration::zero(), mbgl::Duration::zero(), [&] { + secondTimeout = true; + loop.stop(); + }); + + loop.run(); + + EXPECT_TRUE(secondTimeout); +} |