On Sun, Aug 29, 2010 at 01:10:42PM +0200, Michael Großer wrote:
> Thomas Adam wrote:
> > On Fri, Aug 13, 2010 at 12:51:44AM +0200, michael.gros...@gmx.de wrote:
> >> > On Thu, Aug 12, 2010 at 04:21:53PM +0200, michael.gros...@gmx.de wrote:
> >> > > Hi!
> >> > > 
> >> > > I think that I found the first bug.
> >> > > I made a combination of pagers for me as shown in the attachment.
> >> > > 
> >> > > Straight in the bottom left corner, I made an FvwmPager that I
> >> > > called "minipager".
> >> > > 
> >> > > I gave it these "Geometry" attributes:
> >> > > *minipager: Geometry 110x44+2+978
> >> > > 
> >> > > I deliberately chose the 44 to hide the viewports (pages).
> >> > > I only want to see the desks and nothing else (see the
> >> > > PNG attachment).
> >> > > 
> >> > > But, this size specification 44 triggers the bug.
> >> > > 
> >> > > The problem is, as soon as I hold down the Shift+Win+Right
> >> > > key binding (or any other binding - see my attached binding
> >> > > config file) to quickly scroll through all 12 desks or
> >> > > to scroll through all 12 viewports for 20 seconds, the
> >> > > "minipager" disappears. I think that it simply crashes.
> >> > 
> >> > Try not to "think" -- it's either crashing or it isn't -- and as I
> >> > suspected, I am unable to reproduce this.   Note that I am using 2.5.31
> >> > though -- a version you should be using, and one I seem to recall asking
> >> > you
> >> > to use before.
> >> > 
> >> > So I am afraid unless you can ascertain a corefile for me to analyse, or
> >> > provide additional instructions using FVWM 2.5.31 which *still* exhibit
> >> > this
> >> > problem, I am unable to help you.
> >> 
> >> I just now reproduced this bug in Debian Squeeze with FVWM 2.5.30.
> >> 
> >> Core dump and/or FVWM 2.5.31 is more complex, so I will try these options
> >> later.
> > 
> > Has there been any progress on this?
> > 
> 
> Unfortunately no. I have to work to make my customers happy
> and earn money :-(
> 
> Latest news was: It crashes in "2.5.26", "2.5.30" and "2.5.31".

I don't think it's crashing at all.  In fact, I think FvwmPager is as stable
as it's ever been.

Without your entire config present, I can't offer an explanation as to why
you get the results you do -- it might very well be that the pager is
closing, but that's different from crashing.

Let's see what I notice first of all:

# start several pagers
AddToFunc StartFunction
 + I GotoDesk 0 0
 + I FvwmPager minipager 0 11
 + I Wait minipager

 + I GotoDesk 0 0
 + I FvwmPager 0 3
 + I Wait FvwmPager

 + I GotoDesk 0 1
 + I FvwmPager 0 3
 + I Wait FvwmPager

... etc., etc.  You seem to have not heeded my very original advise to you
regarding *why* the above is problematic.  It doesn't have anything to do
with your problem, BTW, it's just mildly frustrating that you're asking for
help and not doing anything with the advise you're given.

It also makes me dubious about how much else you're selectively ignoring,
but it's a Bank Holiday for me, so you get the benefit of my doubt.  :)
(And who says I don't live up to my namesake?)

So by this point, for each of your defined desks, we have a separate pager
per *page*.  Meanwhile, there's only one instance of your minipager running,
it's just sticky.  Fine.  But if it closes, then it closes completely and
you'll never see it again.  If it crashed you would get a corefile -- I
promise you that.  So I suspect something is closing it.  I don't know what,
I *might* be able to tell from looking at the rest of your configs, and even
an ~/.xsession-error log, if FVWM ever printed anything there.  But I really
don't think there's anything untoward happening here.  There's no link
necessarily between continually bombarding FVWM with module commands to
switch desks, and a pager closing/crashing.  Heck, I made myself dizzy
switching pages and desks earlier, following your instructions, and still
couldn't get it to crash.

But the minipager there is a gratuitous "hack" for what is simply a desk
chooser -- something you can use FvwmButtons for -- and this is ultimately
what you *should* be doing.  Here:

DestroyModuleConfig foo:*
*foo: Columns x
*foo: Rows y
*foo: (1x1, Title z, Action (Mouse 1) GotoDesk z)

... where:  x, y and z, are calculated from $[pages.nx] $[pages.ny], etc.
That's an exercise best left to you to work out -- hint:  PipeRead is your
friend here and a simple for(( .....)) loop in sh.

Now -- the part that makes this more interesting is making your requirement
of seeing only four desks per desk for which you're currently on.  Well,
here's one way of doing it using FvwmEvent:

DestroyModuleConfig foo2:*
*foo2: new_desk SomeFunc

AddToFunc StartFunction I Module FvwmEvent foo2

DestroyFunc SomeFunc
AddToFunc   SomeFunc
+ I KillModule FvwmPager some_alias
+ I PipeRead `[[ $[desk.n] -le 3 ]] && echo \
    "Module FvwmPager some_alias 0 3" ||
    [[ $[desk.n] -gt 3 ]] && [[ $[desk.n] -le 7 ]] && \
    echo "Module FvwmPager some_alias 4 7"`

... etc., etc.  Note that I'd use a simple modulo calculation to make this
easier here.

Now -- the interesting part here is that if you made this pager sticky --
you could then also selectively work out within a given range of a desk you
were on, whether you needed to kill the pager or not -- reducing the need to
start it up again each time.  But that's just showing off... :)

Welcome to FVWM.

-- Thomas Adam

-- 
"Deep in my heart I wish I was wrong.  But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)

Reply via email to