diff --git a/modes/Spin.cc b/modes/Spin.cc index 5465352..2ba2485 100644 --- a/modes/Spin.cc +++ b/modes/Spin.cc @@ -46,7 +46,8 @@ bool Spin::expose (GnomeScreensaver & gs) glLoadMatrixf(&m_monitor_info[monitor_num].rotation[0]); - glRotatef((gs.getTicks() - m_last_ticks) / 1000.0 * 360.0 / 4.0, + glRotatef((gs.getTicks() - m_last_ticks) / 1000.0 + * m_monitor_info[monitor_num].speed, m_monitor_info[monitor_num].axis[0], m_monitor_info[monitor_num].axis[1], m_monitor_info[monitor_num].axis[2]); @@ -92,6 +93,7 @@ void Spin::initMonitorInfo() glGetFloatv(GL_MODELVIEW_MATRIX, &m_monitor_info[i].rotation[0]); m_monitor_info[i].switch_time = getRandomSwitchTime(); m_monitor_info[i].last_switch_ticks = 0; + m_monitor_info[i].speed = getRandomSpeed(); } } @@ -108,3 +110,8 @@ uint32_t Spin::getRandomSwitchTime() { return 2000u + (uint32_t) (rand() / (double)RAND_MAX * 3000.0); } + +float Spin::getRandomSpeed() +{ + return 40.0 + rand() / (double)RAND_MAX * 150.0; +} diff --git a/modes/Spin.h b/modes/Spin.h index 82ac1a1..b6869bf 100644 --- a/modes/Spin.h +++ b/modes/Spin.h @@ -20,6 +20,7 @@ class Spin : public Mode float rotation[16]; int switch_time; uint32_t last_switch_ticks; + float speed; } monitor_info_t; protected: LogoBox m_logobox; @@ -29,6 +30,7 @@ class Spin : public Mode void initMonitorInfo(); void getRandomAxis(float (*axis)[3]); uint32_t getRandomSwitchTime(); + float getRandomSpeed(); }; #endif /* SPIN_H */