Пример #1
0
void RW_IN_Move (usercmd_t *cmd)
{
	float mouse_x, mouse_y;

	if (!mouse_works) return;

	_fmutex_request(&sem, _FMR_IGNINT);
	mouse_x = xpos;
	mouse_y = ypos;
	xpos = 0;
	ypos = 0;
	_fmutex_release(&sem);
	//if (mouse_x || mouse_y) Con_Printf("%f %f %08x %08lx\n", mouse_x, mouse_y, (int)ev->fs, ev->time);

	/* and this is copied from vid_svgalib.c */
	mouse_x *= sensitivity->value * 1.95;
	mouse_y *= sensitivity->value * 1.95;

// add mouse X/Y movement to cmd
	if ( (*in_state->in_strafe_state & 1) || (lookstrafe->value && mlooking ))
		cmd->sidemove += m_side->value * mouse_x;
	else
		in_state->viewangles[YAW] -= m_yaw->value * mouse_x;
	
	if ( (mlooking || freelook->value) && 
		!(*in_state->in_strafe_state & 1))
	{
		in_state->viewangles[PITCH] += m_pitch->value * mouse_y;
	}
	else
	{
		cmd->forwardmove -= m_forward->value * mouse_y;
	}
}
Пример #2
0
static int
kai_stream_set_volume(cubeb_stream * stm, float volume)
{
  _fmutex_request(&stm->mutex, 0);
  stm->soft_volume = volume;
  _fmutex_release(&stm->mutex);

  return CUBEB_OK;
}
Пример #3
0
static int
kai_stream_get_position(cubeb_stream * stm, uint64_t * position)
{
  _fmutex_request(&stm->mutex, 0);
  *position = stm->total_frames;
  _fmutex_release(&stm->mutex);

  return CUBEB_OK;
}
Пример #4
0
/* releases the lock */
void
incdep_unlock(void)
{
#if defined (HAVE_PTHREAD) && !defined (CONFIG_WITHOUT_THREADS)
  pthread_mutex_unlock (&incdep_mtx);
#elif defined(WINDOWS32)
  LeaveCriticalSection (&incdep_mtx);
#elif defined(__OS2__)
  _fmutex_release (&incdep_mtx);
#endif
}
Пример #5
0
void RW_IN_Commands (void)
{
	if (!mouse_works) return;
	_fmutex_request(&sem, _FMR_IGNINT);
	if (buttons == -1) goto ret;
	if ((buttons & 1) && !(old_buttons & 1)) Key_Event_fp(K_MOUSE1, true);
	if (!(buttons & 1) && (old_buttons & 1)) Key_Event_fp(K_MOUSE1, false);
	if ((buttons & 2) && !(old_buttons & 2)) Key_Event_fp(K_MOUSE2, true);
	if (!(buttons & 2) && (old_buttons & 2)) Key_Event_fp(K_MOUSE2, false);
	if ((buttons & 4) && !(old_buttons & 4)) Key_Event_fp(K_MOUSE3, true);
	if (!(buttons & 4) && (old_buttons & 4)) Key_Event_fp(K_MOUSE3, false);
	old_buttons = buttons;
	ret:
	_fmutex_release(&sem);
}
Пример #6
0
void mouse_thread(void *p)
{
	HMOU h = mh;
	USHORT rd = MOU_WAIT;
	DosSetPriority(PRTYS_THREAD, PRTYC_TIMECRITICAL, 31, 0);
	while (1) {
	if (MouReadEventQue(ev, &rd, h)) return;
	if (!mouse_works) goto ret;
	_fmutex_request(&sem, _FMR_IGNINT);
	xpos += ev->col;
	ypos += ev->row;
	buttons =
	  ((ev->fs & (MOUSE_MOTION_WITH_BN1_DOWN|MOUSE_BN1_DOWN)) ? 1 : 0) +
	  ((ev->fs & (MOUSE_MOTION_WITH_BN2_DOWN|MOUSE_BN2_DOWN)) ? 2 : 0) +
	  ((ev->fs & (MOUSE_MOTION_WITH_BN3_DOWN|MOUSE_BN3_DOWN)) ? 4 : 0);
	_fmutex_release(&sem);
	}
	ret:
	MouClose(h);
}
Пример #7
0
static ULONG APIENTRY
kai_callback(PVOID cbdata, PVOID buffer, ULONG len)
{
  cubeb_stream * stm = cbdata;
  void *p;
  long wanted_frames;
  long frames;
  float soft_volume;
  int elements = len / sizeof(int16_t);

  p = stm->params.format == CUBEB_SAMPLE_FLOAT32NE
      ? stm->float_buffer : buffer;

  wanted_frames = bytes_to_frames(len, stm->params);
  frames = stm->data_callback(stm, stm->user_ptr, NULL, p, wanted_frames);

  _fmutex_request(&stm->mutex, 0);
  stm->total_frames += frames;
  soft_volume = stm->soft_volume;
  _fmutex_release(&stm->mutex);

  if (frames < wanted_frames)
    stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_DRAINED);

  if (stm->params.format == CUBEB_SAMPLE_FLOAT32NE)
    float_to_s16ne(buffer, p, elements);

  if (soft_volume != -1.0f) {
    int16_t *b = buffer;
    int i;

    for (i = 0; i < elements; i++)
      *b++ *= soft_volume;
  }

  return frames_to_bytes(frames, stm->params);
}