Esempio n. 1
0
	// read interface
	virtual UINT32 read_data(void *_dest, UINT64 offset, UINT32 length)
	{
		assert(offset % m_source.hunk_bytes() == 0);
		assert(length % m_source.hunk_bytes() == 0);

		UINT32 startfield = offset / m_source.hunk_bytes();
		UINT32 endfield = startfield + length / m_source.hunk_bytes();
		UINT8 *dest = reinterpret_cast<UINT8 *>(_dest);

		for (UINT32 fieldnum = startfield; fieldnum < endfield; fieldnum++)
		{
			generate_one_frame(dest, m_source.hunk_bytes(), fieldnum);
			dest += m_source.hunk_bytes();
		}
		return length;
	}
Esempio n. 2
0
static void RGB3Source_tick(Instance *pi)
{
  RGB3Source_private *priv = (RGB3Source_private *)pi;
  Handler_message *hm;
  int wait_flag = (priv->enable ? 0 : 1);

  hm = GetData(pi, wait_flag);
  if (hm) {
    hm->handler(pi, hm->data);
    ReleaseMessage(&hm,pi);
  }

  if (!priv->enable) {
    return;
  }

  generate_one_frame(pi);

  int sec = priv->period_ms/1000;
  long nsec = (priv->period_ms % 1000) * 1000000;
  nanosleep(&(struct timespec) { .tv_sec = sec, .tv_nsec = nsec}, NULL);