stumpwm-devel
[Top][All Lists]
Advanced

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

Re: [STUMP] add-head crashes


From: Eric Abrahamsen
Subject: Re: [STUMP] add-head crashes
Date: Mon, 24 Feb 2014 13:11:15 +0800
User-agent: Gnus/5.13001 (Ma Gnus v0.10) Emacs/24.3 (gnu/linux)

David Bjergaard <address@hidden> writes:

> Hi Eric,
>
> Can you try the attached patch and let me know if it fixes it? 
>
> Cheers,
>
>     Dave

Yes, that does solve it (though obviously the frame on the new head goes
back to being mis-sized).

Do you still want a note on the wiki?

E

> 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
> _______________________________________________
> 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]