From a7d57daad36a2ee325d2b377fe70cf8826d2b306 Mon Sep 17 00:00:00 2001 From: Alik Aslanyan Date: Wed, 31 Mar 2021 16:49:26 +0400 Subject: [PATCH] Implement pause-on-active for Linux and FreeBSD --- CMakeLists.txt | 22 ++++++++++++++-------- src/base/kernel/Platform_unix.cpp | 18 +++++++++++++++++- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1f403af..bcd83d13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -159,15 +159,21 @@ else() if (XMRIG_OS_ANDROID) set(EXTRA_LIBS pthread rt dl log) - elseif (XMRIG_OS_LINUX) - list(APPEND SOURCES_OS - src/crypto/common/LinuxMemory.h - src/crypto/common/LinuxMemory.cpp - ) + else() + if (XMRIG_OS_LINUX) + list(APPEND SOURCES_OS + src/crypto/common/LinuxMemory.h + src/crypto/common/LinuxMemory.cpp + ) - set(EXTRA_LIBS pthread rt dl) - elseif (XMRIG_OS_FREEBSD) - set(EXTRA_LIBS kvm pthread) + set(EXTRA_LIBS pthread rt dl) + elseif (XMRIG_OS_FREEBSD) + set(EXTRA_LIBS kvm pthread) + endif() + + find_package(X11 REQUIRED) + set(EXTRA_LIBS ${EXTRA_LIBS} Xss ${X11_LIBRARIES}) + include_directories(${X11_INCLUDE_DIR}) endif() endif() diff --git a/src/base/kernel/Platform_unix.cpp b/src/base/kernel/Platform_unix.cpp index f5bbc193..994c08e3 100644 --- a/src/base/kernel/Platform_unix.cpp +++ b/src/base/kernel/Platform_unix.cpp @@ -36,6 +36,8 @@ #include #include +#include + #include "base/kernel/Platform.h" #include "version.h" @@ -163,5 +165,19 @@ bool xmrig::Platform::isOnBatteryPower() uint64_t xmrig::Platform::idleTime() { - return std::numeric_limits::max(); + Display *dpy = XOpenDisplay(nullptr); + + if (!dpy) { + return std::numeric_limits::max(); + } + + XScreenSaverInfo *info = XScreenSaverAllocInfo(); + XScreenSaverQueryInfo(dpy, DefaultRootWindow(dpy), info); + + uint64_t idle = info->idle; + + XFree(info); + XCloseDisplay(dpy); + + return idle; }