// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/sync/engine/idle_query_linux.h" #include <X11/extensions/scrnsaver.h> #include "ui/base/x/x11_util.h" namespace browser_sync { class IdleData { public: IdleData() { int event_base; int error_base; if (XScreenSaverQueryExtension(ui::GetXDisplay(), &event_base, &error_base)) { mit_info = XScreenSaverAllocInfo(); } else { mit_info = NULL; } } ~IdleData() { if (mit_info) XFree(mit_info); } XScreenSaverInfo *mit_info; }; IdleQueryLinux::IdleQueryLinux() : idle_data_(new IdleData()) {} IdleQueryLinux::~IdleQueryLinux() {} int IdleQueryLinux::IdleTime() { if (!idle_data_->mit_info) return 0; if (XScreenSaverQueryInfo(ui::GetXDisplay(), RootWindow(ui::GetXDisplay(), 0), idle_data_->mit_info)) { return (idle_data_->mit_info->idle) / 1000; } else { return 0; } } } // namespace browser_sync