On 02/23/2012 13:23, Rainer Hurling wrote:
> On 23.02.2012 03:31 (UTC+1), Doug Barton wrote:
>> Rainer,
>>
>> I'm cc'ing the wmaker-dev list, please follow up there rather than
>> freebsd-ports till we get this resolved.
>
> Hi Doug,
>
> thanks for testing my simple patch.
>
>> On 02/22/2012 10:47, Rainer Hurling wrote:
>>> it seems I found a workaround for getting the session restored after
>>> restarting windowmaker.
>>
>> I took a look at this and got some very odd results.
>>
>> First, using stock windowmaker, I started, did a 'clear session', made
>> sure everything was closed, then exited with the save session box
>> checked. Then I started a few apps, exited with save session checked,
>> and when I restarted it brought the session back.
>>
>> Then I used the attached patch to see the values of those variables you
>> mentioned ... both were "(null)" as expected, and restoring the session
>> continued to work.
>>
>> At this point I got creative and started playing with various
>> combinations of 'clear session' and saving or not saving my session, and
>> managed to get windomaker into a state where it would fail when started
>> and bring up the dialog that gave the option to restart, start another
>> wm, or dump a core file. Still not sure what was happening there, and
>> the core wasn't particularly useful. Now that I think about it, I
>> suspect that if I had tried 'wmaker -norestore' it would have worked ...
>>
>> What I suggest you do is add the attached to windowmaker/files (rename
>> to patch-debug) and build it without your change. Then run startx and
>> check the terminal. Try doing what I did above (clear session, exit
>> w/save, startx, run some stuff, exit w/save, startx) and see if it
>> works. If it doesn't, check the values of those 2 knobs in the printout
>> on the terminal and let us know what's going on.
>
> Unfortunately your patch to get a wmessage does not work for me. With
> this patch windowmaker crashes and wants to restart in an endless loop.
Sorry to hear that. I suppose it's possible that this was the cause of
my crashes too, but it's not clear to me how printing something to
stderr should cause windowmaker to crash. Perhaps someone on the list
can suggest a safe way to view the contents of those 2 values at the
time the code is executed?
> Without your patch I tried the procedure you described on two boxes,
> both FreeBSD 10-CURRENT (amd64) with WindowMaker 95.2 from your port. On
> both boxes I backuped GNUstep and created a new configuration with
> wmaker.inst.
>
> I am much irritated since both systems behave in a different way. On one
> box I am able to reconstruct applications windows, but with every startx
> they appear on another place. Furthermore the dockapps placed on the
> right side of the screen are randomly doubled at the bottom.
>
> On the second box I am _not_ able to restore any kind of application
> window. The dockapps on the right side seem to restore normal.
Well my results present a 3rd category ... when restore worked, the
windows and dock/clip stuff all showed up in the same places they were
when I exited the session. So something is obviously very wacky here.
I did think of another possibility that I haven't had a chance to test
yet, but the patch is attached if you want to give it a try. I make no
representation that this will fix the problem, but looking at the code
and trying to figure out what was different, and given that when I was
able to printf those values wPreferences.flags.restarting was null, I
thought it was worth a try.
Sorry I can't test it right now, swamped with work stuff.
Doug
--
It's always a long day; 86400 doesn't fit into a short.
Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price. :) http://SupersetSolutions.com/
--- src/startup.c.orig 2012-02-14 11:36:01.000000000 -0800
+++ src/startup.c 2012-02-23 15:50:19.000000000 -0800
@@ -761,7 +761,7 @@
wMenuRestoreState(wScreen[j]);
/* If we're not restarting, restore session */
- if (wPreferences.flags.restarting == 0 &&
!wPreferences.flags.norestore)
+ if (!wPreferences.flags.restarting &&
!wPreferences.flags.norestore)
wSessionRestoreState(wScreen[j]);
if (!wPreferences.flags.noautolaunch) {