added TODO to updategeom in order to implement a decent version of it soon
authorAnselm R Garbe <anselm@garbe.us>
Sat, 19 Sep 2009 10:52:16 +0000 (11:52 +0100)
committerAnselm R Garbe <anselm@garbe.us>
Sat, 19 Sep 2009 10:52:16 +0000 (11:52 +0100)
dwm.c

diff --git a/dwm.c b/dwm.c
index 2b4d6b0..7363396 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -1699,6 +1699,40 @@ updategeom(void) {
        Client *c;
        Monitor *newmons = NULL, *m = NULL, *tm;
 
+       /* TODO:
+        * This function needs to be seriously re-designed:
+        *
+        * #ifdef XINERAMA
+        * 1. Determine number of already existing monitors n
+        * 2. Determine number of monitors Xinerama reports nn
+        * 3. if(n <= nn) {
+        *       if(n < nn) {
+        *          append nn-n monitors to current struct
+        *          flag dirty
+        *       }
+        *       for(i = 0; i < nn; i++) {
+        *           if(oldgeom != newgeom) {
+        *               apply newgeom;
+        *               flag dirty;
+        *           }
+        *       }
+        *    }
+        *    else {
+        *       detach all clients
+        *       destroy current monitor struct
+        *       create new monitor struct 
+        *       attach all clients to first monitor
+        *       flag dirty;
+        *    }
+        *    return dirty flag to caller
+        *        if dirty is seen by caller:
+        *           re-arrange bars/pixmaps
+        *           arrange()
+        * #else
+        *    don't share between XINERAMA and non-XINERAMA handling if it gets
+        *    too ugly
+        * #endif
+        */
 #ifdef XINERAMA
        XineramaScreenInfo *info = NULL;
        Bool *flags = NULL;