e powerszve - fix sleep timeout for select to be correct
bad inverse fmod and using int not double first before converting to microseconds...
This commit is contained in:
parent
73855900ed
commit
9eebe065c2
|
@ -164,6 +164,7 @@ e_powersave_sleeper_free(E_Powersave_Sleeper *sleeper)
|
||||||
E_API void
|
E_API void
|
||||||
e_powersave_sleeper_sleep(E_Powersave_Sleeper *sleeper, int poll_interval)
|
e_powersave_sleeper_sleep(E_Powersave_Sleeper *sleeper, int poll_interval)
|
||||||
{
|
{
|
||||||
|
double timf;
|
||||||
unsigned int tim;
|
unsigned int tim;
|
||||||
fd_set rfds, wfds, exfds;
|
fd_set rfds, wfds, exfds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
@ -171,14 +172,14 @@ e_powersave_sleeper_sleep(E_Powersave_Sleeper *sleeper, int poll_interval)
|
||||||
char buf[1] = { 1 };
|
char buf[1] = { 1 };
|
||||||
|
|
||||||
if (!sleeper) return;
|
if (!sleeper) return;
|
||||||
if (e_powersave_mode_get() == E_POWERSAVE_MODE_FREEZE) tim = 3600;
|
if (e_powersave_mode_get() == E_POWERSAVE_MODE_FREEZE) timf = 3600;
|
||||||
else tim = (double)poll_interval / 8.0;
|
else timf = (double)poll_interval / 8.0;
|
||||||
FD_ZERO(&rfds);
|
FD_ZERO(&rfds);
|
||||||
FD_ZERO(&wfds);
|
FD_ZERO(&wfds);
|
||||||
FD_ZERO(&exfds);
|
FD_ZERO(&exfds);
|
||||||
FD_SET(sleeper->fd, &rfds);
|
FD_SET(sleeper->fd, &rfds);
|
||||||
|
|
||||||
tim = (fmod(ecore_time_get(), tim) * 1000000.0);
|
tim = ((timf - fmod(ecore_time_get(), timf)) * 1000000.0);
|
||||||
tv.tv_sec = tim / 1000000;
|
tv.tv_sec = tim / 1000000;
|
||||||
tv.tv_usec = tim % 1000000;
|
tv.tv_usec = tim % 1000000;
|
||||||
for (;;)
|
for (;;)
|
||||||
|
|
Loading…
Reference in New Issue