diff --git a/src/gui/idletimer.cpp b/src/gui/idletimer.cpp index bb487e13..4fcbd8c8 100644 --- a/src/gui/idletimer.cpp +++ b/src/gui/idletimer.cpp @@ -3,18 +3,26 @@ #include #include #include +#include #ifdef USE_XCB_SCREENSAVER -#include #include +#include #include #include -int IdleTimer::getIdleTime(){ - xcb_connection_t* conn = QX11Info::connection(); - const int display = QX11Info::appScreen(); +#include "mainwindow.h" - xcb_screensaver_query_info_cookie_t replyCookie = xcb_screensaver_query_info(conn, QX11Info::appRootWindow(display)); +int IdleTimer::getIdleTime(){ + const MainWindow* const mw = MainWindow::mainWindow; + if(!mw || !mw->windowHandle()) + return 0; + xcb_connection_t* conn = QX11Info::connection(); + + xcb_get_geometry_cookie_t geomCookie = xcb_get_geometry(conn, mw->windowHandle()->winId()); + xcb_get_geometry_reply_t* geomReply = xcb_get_geometry_reply(conn, geomCookie, nullptr); + + xcb_screensaver_query_info_cookie_t replyCookie = xcb_screensaver_query_info(conn, geomReply->root); xcb_screensaver_query_info_reply_t* replyInfo = xcb_screensaver_query_info_reply(conn, replyCookie, nullptr); uint32_t userIdle = replyInfo->ms_since_user_input;