summaryrefslogtreecommitdiff
path: root/chromium/ui/base/idle
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/ui/base/idle
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/ui/base/idle')
-rw-r--r--chromium/ui/base/idle/BUILD.gn1
-rw-r--r--chromium/ui/base/idle/idle_query_x11.cc41
-rw-r--r--chromium/ui/base/idle/idle_query_x11.h8
-rw-r--r--chromium/ui/base/idle/screensaver_window_finder_x11.cc34
-rw-r--r--chromium/ui/base/idle/screensaver_window_finder_x11.h4
5 files changed, 38 insertions, 50 deletions
diff --git a/chromium/ui/base/idle/BUILD.gn b/chromium/ui/base/idle/BUILD.gn
index 9120a2df91e..8e76844e5b6 100644
--- a/chromium/ui/base/idle/BUILD.gn
+++ b/chromium/ui/base/idle/BUILD.gn
@@ -61,7 +61,6 @@ component("idle") {
}
if (use_x11 && !is_chromeos) {
- configs += [ "//build/config/linux:xscrnsaver" ]
deps += [ "//ui/gfx/x" ]
sources += [
"idle_query_x11.cc",
diff --git a/chromium/ui/base/idle/idle_query_x11.cc b/chromium/ui/base/idle/idle_query_x11.cc
index ee676686f36..569c57a2d71 100644
--- a/chromium/ui/base/idle/idle_query_x11.cc
+++ b/chromium/ui/base/idle/idle_query_x11.cc
@@ -4,43 +4,28 @@
#include "ui/base/idle/idle_query_x11.h"
+#include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/screensaver.h"
#include "ui/gfx/x/x11.h"
#include "ui/gfx/x/x11_types.h"
namespace ui {
-class IdleData {
- public:
- IdleData() {
- int event_base;
- int error_base;
- if (XScreenSaverQueryExtension(gfx::GetXDisplay(), &event_base,
- &error_base)) {
- mit_info.reset(XScreenSaverAllocInfo());
- }
- }
-
- ~IdleData() {
- }
-
- gfx::XScopedPtr<XScreenSaverInfo> mit_info;
-};
-
-IdleQueryX11::IdleQueryX11() : idle_data_(new IdleData()) {}
+IdleQueryX11::IdleQueryX11() : connection_(x11::Connection::Get()) {
+ // Let the server know the client version before making any requests.
+ connection_->screensaver().QueryVersion(
+ {x11::ScreenSaver::major_version, x11::ScreenSaver::minor_version});
+}
-IdleQueryX11::~IdleQueryX11() {}
+IdleQueryX11::~IdleQueryX11() = default;
int IdleQueryX11::IdleTime() {
- if (!idle_data_->mit_info)
- return 0;
-
- if (XScreenSaverQueryInfo(gfx::GetXDisplay(),
- XRootWindow(gfx::GetXDisplay(), 0),
- idle_data_->mit_info.get())) {
- return (idle_data_->mit_info->idle) / 1000;
- } else {
- return 0;
+ if (auto reply = connection_->screensaver()
+ .QueryInfo({connection_->default_root()})
+ .Sync()) {
+ return reply->ms_since_user_input / 1000;
}
+ return 0;
}
} // namespace ui
diff --git a/chromium/ui/base/idle/idle_query_x11.h b/chromium/ui/base/idle/idle_query_x11.h
index 0857418897e..457aada6a1e 100644
--- a/chromium/ui/base/idle/idle_query_x11.h
+++ b/chromium/ui/base/idle/idle_query_x11.h
@@ -9,9 +9,11 @@
#include "base/macros.h"
-namespace ui {
+namespace x11 {
+class Connection;
+}
-class IdleData;
+namespace ui {
class IdleQueryX11 {
public:
@@ -21,7 +23,7 @@ class IdleQueryX11 {
int IdleTime();
private:
- std::unique_ptr<IdleData> idle_data_;
+ x11::Connection* connection_;
DISALLOW_COPY_AND_ASSIGN(IdleQueryX11);
};
diff --git a/chromium/ui/base/idle/screensaver_window_finder_x11.cc b/chromium/ui/base/idle/screensaver_window_finder_x11.cc
index 74f1a5f6fcd..45342ff5383 100644
--- a/chromium/ui/base/idle/screensaver_window_finder_x11.cc
+++ b/chromium/ui/base/idle/screensaver_window_finder_x11.cc
@@ -5,26 +5,27 @@
#include "ui/base/idle/screensaver_window_finder_x11.h"
#include "ui/base/x/x11_util.h"
+#include "ui/gfx/x/connection.h"
+#include "ui/gfx/x/screensaver.h"
#include "ui/gfx/x/x11.h"
#include "ui/gfx/x/x11_atom_cache.h"
#include "ui/gfx/x/x11_error_tracker.h"
namespace ui {
-ScreensaverWindowFinder::ScreensaverWindowFinder()
- : exists_(false) {
-}
+ScreensaverWindowFinder::ScreensaverWindowFinder() : exists_(false) {}
bool ScreensaverWindowFinder::ScreensaverWindowExists() {
- XScreenSaverInfo info;
- XDisplay* display = gfx::GetXDisplay();
- XID root = DefaultRootWindow(display);
- static int xss_event_base;
- static int xss_error_base;
- static bool have_xss =
- XScreenSaverQueryExtension(display, &xss_event_base, &xss_error_base);
- if (have_xss && XScreenSaverQueryInfo(display, root, &info) &&
- info.state == ScreenSaverOn) {
+ auto* connection = x11::Connection::Get();
+
+ // Let the server know the client version before making any requests.
+ connection->screensaver().QueryVersion(
+ {x11::ScreenSaver::major_version, x11::ScreenSaver::minor_version});
+
+ auto reply =
+ connection->screensaver().QueryInfo({connection->default_root()}).Sync();
+ if (reply && static_cast<x11::ScreenSaver::State>(reply->state) ==
+ x11::ScreenSaver::State::On) {
return true;
}
@@ -32,9 +33,10 @@ bool ScreensaverWindowFinder::ScreensaverWindowExists() {
// info.state == ScreenSaverOff or info.state == ScreenSaverDisabled does not
// necessarily mean that a screensaver is not active, so add a special check
// for xscreensaver.
- XAtom lock_atom = gfx::GetAtom("LOCK");
+ x11::Atom lock_atom = gfx::GetAtom("LOCK");
std::vector<int> atom_properties;
- if (GetIntArrayProperty(root, "_SCREENSAVER_STATUS", &atom_properties) &&
+ if (GetIntArrayProperty(GetX11RootWindow(), "_SCREENSAVER_STATUS",
+ &atom_properties) &&
atom_properties.size() > 0) {
if (atom_properties[0] == static_cast<int>(lock_atom)) {
return true;
@@ -48,14 +50,14 @@ bool ScreensaverWindowFinder::ScreensaverWindowExists() {
return finder.exists_ && !err_tracker.FoundNewError();
}
-bool ScreensaverWindowFinder::ShouldStopIterating(XID window) {
+bool ScreensaverWindowFinder::ShouldStopIterating(x11::Window window) {
if (!ui::IsWindowVisible(window) || !IsScreensaverWindow(window))
return false;
exists_ = true;
return true;
}
-bool ScreensaverWindowFinder::IsScreensaverWindow(XID window) const {
+bool ScreensaverWindowFinder::IsScreensaverWindow(x11::Window window) const {
// It should occupy the full screen.
if (!ui::IsX11WindowFullScreen(window))
return false;
diff --git a/chromium/ui/base/idle/screensaver_window_finder_x11.h b/chromium/ui/base/idle/screensaver_window_finder_x11.h
index dad3d209510..a502daa6fbe 100644
--- a/chromium/ui/base/idle/screensaver_window_finder_x11.h
+++ b/chromium/ui/base/idle/screensaver_window_finder_x11.h
@@ -16,12 +16,12 @@ class ScreensaverWindowFinder : public ui::EnumerateWindowsDelegate {
static bool ScreensaverWindowExists();
protected:
- bool ShouldStopIterating(XID window) override;
+ bool ShouldStopIterating(x11::Window window) override;
private:
ScreensaverWindowFinder();
- bool IsScreensaverWindow(XID window) const;
+ bool IsScreensaverWindow(x11::Window window) const;
bool exists_;