Пример #1
0
static bool al_get_buffer(al_t *al, ALuint *buffer)
{
   if (al->res_ptr == 0)
   {
#ifndef _WIN32
      struct timespec tv = {0};
      tv.tv_sec = 0;
      tv.tv_nsec = 1000000;
#endif

      for (;;)
      {
         if (al_unqueue_buffers(al))
            break;

         if (al->nonblock)
            return false;

#ifdef _WIN32
         Sleep(1);
#else
         nanosleep(&tv, NULL);
#endif
      }
   }

   *buffer = al->res_buf[--al->res_ptr];
   return true;
}
Пример #2
0
static bool al_get_buffer(al_t *al, ALuint *buffer)
{
   if (!al->res_ptr)
   {
      for (;;)
      {
         if (al_unqueue_buffers(al))
            break;

         if (al->nonblock)
            return false;

         // Must sleep as there is no proper blocking method. :(
         rarch_sleep(1);
      }
   }

   *buffer = al->res_buf[--al->res_ptr];
   return true;
}
Пример #3
0
static size_t al_write_avail(void *data)
{
   al_t *al = (al_t*)data;
   al_unqueue_buffers(al);
   return al->res_ptr * BUFSIZE + (BUFSIZE - al->tmpbuf_ptr);
}