Example #1
0
void FPS::Update()
{
	Delta_Time = World_Time;                  // Pobieramy wczeœniejszy czas

	World_Time = glfwGetTime() * 1000;        // Uaktualnienie czasu

	updates++;                                // Naliczenie aktualizcji

	// Blokada klatek
	if(max > 0)
	{
	  if( World_Time - Start_Time < ( 1000.0f / max ) * updates )            // Jeœli dotychczasowy czas jest mniejszy ni¿ zak³adany 
	  {
		  SleepFor( ( (1000.0f / max) * updates ) - ( World_Time - Start_Time)  );     // Odczekuje ró¿nicê czasów
	  }
	}

	World_Time = glfwGetTime() * 1000;              // Uaktualnia czas po odczekiwaniu ró¿nicy

	Delta_Time = World_Time - Delta_Time;           // Oblicza delte

	if( updates == frames)                          // Sprawdza iloϾ klatek
	{
		rate = ( 1000 * frames ) / ( World_Time - Start_Time);      // Oblicza œredni wynik klatek na sekundê
		World_Time = glfwGetTime() * 1000;                          // Wszystko resetuje
        Start_Time = glfwGetTime() * 1000;
        updates=0;
	}
}
Example #2
0
void price::thread_work()
{
	show_instruments();
	while (true)
	{
		SleepFor(1000);
		_Get_Output_Mutex
		chg_price();
		_Release_Output_Mutex
	}
}
Example #3
0
SteadyClock::time_point SleepUntil(SteadyClock::time_point time) {
    // Early exit if we are already past the deadline
    auto now = SteadyClock::now();
    if (now >= time) {
        // We were already past our deadline, which means that the previous frame
        // ran for too long. Use the current time as the base for the next frame.
        return now;
    }

    // Perform the actual sleep
    SleepFor(time - now);

    // We may have overslept, so use the target time rather than the
    // current time as the base for the next frame. That way we ensure
    // that the frame rate remains consistent.
    return time;
}