X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnuradio-core%2Fsrc%2Flib%2Fruntime%2Fgr_single_threaded_scheduler.cc;h=7f1b40641ed7dc3b2bdea505bd1d80edfc467451;hb=ea29b08aeb54227e6628f655ccfdb96fe4d8c378;hp=6aaaf954bca9c74a8f699e612a0809b759ed6856;hpb=09a1e803a9e6587c78d20cdf16891e5295874668;p=debian%2Fgnuradio diff --git a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc index 6aaaf954..7f1b4064 100644 --- a/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc +++ b/gnuradio-core/src/lib/runtime/gr_single_threaded_scheduler.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -44,14 +45,6 @@ static int which_scheduler = 0; - -std::ostream& -operator << (std::ostream& os, const gr_block *m) -{ - os << "name() << " (" << m->unique_id() << ")>"; - return os; -} - gr_single_threaded_scheduler_sptr gr_make_single_threaded_scheduler (const std::vector &blocks) { @@ -82,10 +75,18 @@ gr_single_threaded_scheduler::~gr_single_threaded_scheduler () void gr_single_threaded_scheduler::run () { - d_enabled = true; + // d_enabled = true; // KLUDGE main_loop (); } +void +gr_single_threaded_scheduler::stop () +{ + if (0) + std::cout << "gr_singled_threaded_scheduler::stop() " + << this << std::endl; + d_enabled = false; +} inline static unsigned int round_up (unsigned int n, unsigned int multiple) @@ -154,6 +155,9 @@ gr_single_threaded_scheduler::main_loop () nalive = d_blocks.size (); while (d_enabled && nalive > 0){ + if (boost::this_thread::interruption_requested()) + break; + gr_block *m = d_blocks[bi].get (); gr_block_detail *d = m->detail().get ();