if (idle_timeout >= 0)
{
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- int time_left = last_action - tmp.tv_sec + idle_timeout;
+ int time_left = last_action - monotonic_clock() + idle_timeout;
if (timeout > time_left * 1000 || timeout == -1)
timeout = time_left * 1000;
if (idle_timeout >= 0)
{
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- int time_left = last_action - tmp.tv_sec + idle_timeout;
+ int time_left = last_action - monotonic_clock() + idle_timeout;
if (time_left <= 0)
break;
void
MainLoop::reset_idle_count()
{
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- last_action = tmp.tv_sec;
+ last_action = monotonic_clock();
}
}
}
+
+ time_t
+ DBus::MainLoop::monotonic_clock()
+ {
+ struct timespec tmp;
+ clock_gettime(CLOCK_MONOTONIC, &tmp);
+ return tmp.tv_sec;
+ }
+
}
int idle_timeout;
time_t last_action;
+ static time_t monotonic_clock();
+
};
}
RefCounter::RefCounter()
- : counter(0)
+ : counter(0), last_used(monotonic_time())
{
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- last_used = tmp.tv_sec;
}
assert(counter > 0);
if (--counter == 0)
- {
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- last_used = tmp.tv_sec;
- }
+ last_used = monotonic_time();
return counter;
}
{
boost::lock_guard<boost::mutex> lock(mutex);
- struct timespec tmp;
- clock_gettime(CLOCK_MONOTONIC, &tmp);
- last_used = tmp.tv_sec;
+ last_used = monotonic_time();
}
}
+time_t
+RefCounter::monotonic_time()
+{
+ struct timespec tmp;
+ clock_gettime(CLOCK_MONOTONIC, &tmp);
+ return tmp.tv_sec;
+}
+
+
bool
get_user_uid(const char* username, uid_t& uid)
{
private:
+ static time_t monotonic_time();
+
mutable boost::mutex mutex;
int counter;