stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [STUMP] add-head crashes


From: David Bjergaard
Subject: Re: [STUMP] add-head crashes
Date: Sun, 23 Feb 2014 23:26:26 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Hi Eric,

Can you try the attached patch and let me know if it fixes it? 

Cheers,

    Dave
    
    
diff --git a/head.lisp b/head.lisp
index 01b2dc4..c9fd50a 100644
--- a/head.lisp
+++ b/head.lisp
@@ -115,9 +115,7 @@
 (defun add-head (screen head)
   (dformat 1 "Adding head #~D~%" (head-number head))
   (setf (screen-heads screen) (sort (push head (screen-heads screen)) #'<
-                                    :key (lambda (head)
-                                           (+ (* (head-x head) (screen-height 
(current-screen)))
-                                              (head-y head)))))
+                                    :key 'head-number))
   (dolist (group (screen-groups screen))
     (group-add-head group head)))
 
@@ -142,6 +140,14 @@
 (defun scale-screen (screen heads)
   "Scale all frames of all groups of SCREEN to match the dimensions of HEADS."
   (let ((oheads (screen-heads screen)))
+    (when (< (length heads) (length oheads))
+      ;; Some heads were removed (or cloned), try to guess which.
+      (dolist (oh oheads)
+        (dolist (nh heads)
+          (when (and (= (head-x nh) (head-x oh))
+                     (= (head-y nh) (head-y oh)))
+          ;; Same screen position; probably the same head.
+            (setf (head-number nh) (head-number oh))))))
     (dolist (h (set-difference oheads heads :test '= :key 'head-number))
       (remove-head screen h))
     (dolist (h (set-difference heads oheads :test '= :key 'head-number))

Eric Abrahamsen <address@hidden> writes:

> David Bjergaard <address@hidden> writes:
>
>> I've had unexpected problems with stumpwm handling extra screens too, I
>> just assumed it was happening elsewhere. I'll look into this.  In the
>> mean time, (if you have time) you could try reverting that code to what
>> it was before the pull request and report your results (just to make
>> sure it was introduced by that pull request).
>
> Yup, I reverted head.lisp to the commit just prior to that merge (it
> didn't look like that file has really been touched since the merge), and
> recompiled, and it worked fine. Switched back to HEAD, and breakage --
> repeatable breakage, too. So long as there is more than one frame in the
> other group, it borks.
>
>>
>> Eric Abrahamsen <address@hidden> writes:
>>
>>> Since the changes in f168e3b7116c106ded81343f07ebd29bc784f2a0 (I can
>>> only assume that's it), stump crashes when I add an extra screen. I'm
>>> using stump on X with no DE, and adding the screen with this script,
>>> bound to a keypress:
>>>
>>> #!/bin/sh
>>> xrandr --output LVDS1 --mode 1280x800 --pos 1440x100 --rotate normal 
>>> --output DP1 --off --output VGA1 --mode 1440x900 --pos 0x0 --rotate normal
>>>
>>> This used to work all right, but now crashes stumpwm. I can't copy the
>>> actual backtrace, since copy-unhandled-error doesn't seem to actually
>>> copy it in this case, but here's the top few lines. At the time of the
>>> crash, I had two groups, one with a single frame, and the other with two
>>> frames (one of the frames empty, the other with Pidgin's "Buddy List" in
>>> it).
>>>
>>> The value
>>>   (#S(frame 0 #S(TILE-WINDOW "Buddy List" #x1200056) 0 0 640 800)
>>>    #S(frame 1 nil 640 800))
>>> is not of type
>>>   STUMPWM::FRAME.
>>>
>>> Backtrace for: etc
>>> 0: ((:METHOD GROUP-ADD-HEAD (TILE-GROUP t)) #<TILE-GROUP {etc}> #S(frame 1 
>>> NIL 0 0 1440 900)) [fast-method]
>>> 1: (ADD-HEAD #S<screen #<XLIB:SCREEN :0.0 1280x800x24 TRUE-COLOR>> #S(frame 
>>> 1 nil 0 0 1440 900))
>>> 2: (SCALE-SCREEN #S<screen #<XLIB:SCREEN :0.0 1280x800x24 TRUE-COLOR>> 
>>> (#S(frame 0 NIL 1440 800) #S(frame 1 NIL 0 0 1440 900)))
>>>
>>> So, whatever's going on, stump isn't expecting two frames in the group
>>> being added, but I really don't know how this is meant to work. Hope
>>> this is useful...
>>>
>>> Eric
>>>
>>>
>>> _______________________________________________
>>> Stumpwm-devel mailing list
>>> address@hidden
>>> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel
>
>
> _______________________________________________
> Stumpwm-devel mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]