X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Flib%2Fruntime%2Fgr_runtime.cc;h=6b1419e205d5a31b31ccb77f272eb8a07195fad6;hb=06945c04b4af8af035aeee2e28d5e5626888f5ee;hp=93f78fea8567d0edae7cf3c806e2ddbe9da77921;hpb=95144e53f0285d9e5ea897348030a33c18773b60;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/lib/runtime/gr_runtime.cc b/gnuradio-core/src/lib/runtime/gr_runtime.cc index 93f78fea..6b1419e2 100644 --- a/gnuradio-core/src/lib/runtime/gr_runtime.cc +++ b/gnuradio-core/src/lib/runtime/gr_runtime.cc @@ -1,12 +1,12 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2007 Free Software Foundation, Inc. * * This file is part of GNU Radio * * GNU Radio is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) + * the Free Software Foundation; either version 3, or (at your option) * any later version. * * GNU Radio is distributed in the hope that it will be useful, @@ -26,65 +26,64 @@ #include #include -#include #include -static gr_runtime *s_runtime = 0; - gr_runtime_sptr gr_make_runtime(gr_hier_block2_sptr top_block) { - return gr_runtime_sptr(new gr_runtime(top_block)); + return gr_runtime_sptr(new gr_runtime(top_block)); } gr_runtime::gr_runtime(gr_hier_block2_sptr top_block) { - d_impl = new gr_runtime_impl(top_block); - s_runtime = this; + d_impl = new gr_runtime_impl(top_block, this); } gr_runtime::~gr_runtime() { - s_runtime = 0; // we don't own this - delete d_impl; -} - -// HACK: This prevents using more than one gr_runtime instance -static void -runtime_sigint_handler(int signum) -{ - - if (s_runtime) - s_runtime->stop(); + delete d_impl; } void gr_runtime::start() { - gr_local_sighandler sigint(SIGINT, runtime_sigint_handler); - - d_impl->start(); + d_impl->start(); } void gr_runtime::stop() { - d_impl->stop(); + d_impl->stop(); } void gr_runtime::wait() { - gr_local_sighandler sigint(SIGINT, runtime_sigint_handler); - - d_impl->wait(); + d_impl->wait(); } void gr_runtime::run() { - gr_local_sighandler sigint(SIGINT, runtime_sigint_handler); + start(); + wait(); +} + +void +gr_runtime::restart() +{ + d_impl->restart(); +} + +void +gr_runtime::lock() +{ + d_impl->lock(); +} - d_impl->start(); - d_impl->wait(); +void +gr_runtime::unlock() +{ + d_impl->unlock(); } +