]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/x11/display.cpp
Track the currently focused window in Display
[libs/gui.git] / source / graphics / x11 / display.cpp
index 8f022f7957a8af1c5df81d5844fe7e7683d2a7d9..c23f46d26a21417cb14483c562401f3bbe7d9575 100644 (file)
@@ -1,4 +1,3 @@
-#include <iostream>
 #include <X11/Xlib.h>
 #ifdef WITH_XRANDR
 #include <X11/extensions/Xrandr.h>
@@ -85,7 +84,8 @@ namespace Graphics {
 
 Display::Display(const string &disp_name):
        primary_monitor(0),
-       priv(new Private)
+       priv(new Private),
+       focus_window(0)
 {
        if(disp_name.empty())
                priv->display = XOpenDisplay(0);
@@ -96,6 +96,8 @@ Display::Display(const string &disp_name):
 
        XSetErrorHandler(x_error_handler);
 
+       priv->root_window = DefaultRootWindow(priv->display);
+
        err_dialog = new ErrorDialog(this);
 
 #ifdef WITH_XRANDR
@@ -107,9 +109,8 @@ Display::Display(const string &disp_name):
                XRRQueryVersion(priv->display, &major, &minor);
                if(major>1 || (major==1 && minor>=2))
                {
-                       WindowHandle root = DefaultRootWindow(priv->display);
-                       XRRScreenResources *res = XRRGetScreenResources(priv->display, root);
-                       RROutput primary = XRRGetOutputPrimary(priv->display, root);
+                       XRRScreenResources *res = XRRGetScreenResources(priv->display, priv->root_window);
+                       RROutput primary = XRRGetOutputPrimary(priv->display, priv->root_window);
 
                        map<RRMode, XRRModeInfo *> modes_by_id;
                        for(int i=0; i<res->nmode; ++i)
@@ -219,8 +220,7 @@ void Display::set_mode(const VideoMode &requested_mode, bool exclusive)
        if(requested_rotation==ROTATE_ANY)
                requested_rotation = mode->monitor->desktop_rotation;
 
-       WindowHandle root = DefaultRootWindow(priv->display);
-       XRRScreenResources *res = XRRGetScreenResources(priv->display, root);
+       XRRScreenResources *res = XRRGetScreenResources(priv->display, priv->root_window);
        RROutput output = priv->monitors[mode->monitor->index];
        XRROutputInfo *output_info = XRRGetOutputInfo(priv->display, res, output);