/* -*- 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,
#include <gr_runtime.h>
#include <gr_runtime_impl.h>
-#include <gr_local_sighandler.h>
#include <iostream>
-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();
}
+