Esempio n. 1
0
void
pcl::ihs::InHandScanner::startGrabberImpl ()
{
  std::unique_lock<std::mutex> lock (mutex_);
  starting_grabber_ = true;
  lock.unlock ();

  try
  {
    grabber_ = GrabberPtr (new Grabber ());
  }
  catch (const pcl::PCLException& e)
  {
    std::cerr << "ERROR in in_hand_scanner.cpp: " << e.what () << std::endl;
    exit (EXIT_FAILURE);
  }

  lock.lock ();
  if (destructor_called_) return;

  boost::function <void (const CloudXYZRGBAConstPtr&)> new_data_cb = boost::bind (&pcl::ihs::InHandScanner::newDataCallback, this, _1);
  new_data_connection_ = grabber_->registerCallback (new_data_cb);
  grabber_->start ();

  starting_grabber_ = false;
}
		//---------
		bool DiskStreamer::getHasGrabber() const {
			return this->grabber != GrabberPtr();
		}
		//---------
		void DiskStreamer::clearGrabber() {
			if (this->getHasGrabber()) {
				this->grabber->onNewFrameReceived.removeListeners(this);
				this->grabber = GrabberPtr();
			}
		}