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

XDM... source level



>   It required exactly, three lines of code to fix the problem and only
> one source file, 'dm.c' (The main display manager).
I'm building an xdm with this fix right now to test it out.

If this works as advertised, is there a way to tell when the display is 
removed?  The ability to trap that and start some recovery procedure (such 
as starting a VGA16 server [if it works] and a program to fix the X config) 
is almost a requirement.  Could a fork()/exec() be put in here to kick off 
a separate program?  Or can we tell externally?

This is the kind of fix we need.  Gets at the root of the problem and fixes 
it elegantly, utilizing all the existing code.

> This is what the relevant code looks like...
> 
>             case waitCompose (SIGTERM,0,0):
>                 d->startTries = 0
>                 if (d->displayType.origin == FromXDMCP || d->status == zombie)
>                     StopDisplay(d);
>                 else 
>                     RestartDisplay (d, TRUE); 
>                 break;
> 
> And the change is simple...
> 
>             case waitCompose (SIGTERM,0,0):
>                 if (d->displayType.origin == FromXDMCP || d->status == zombie)
>                     StopDisplay(d);
>                 else {
>                   if (++d->startTries >= d->startAttempts) {
>                     StopDisplay(d);
>                     RemoveDisplay(d);
>                   } else
>                     RestartDisplay (d, TRUE); 
>                 }
>                 break;


     Erik Walthinsen <omega@seul.org> - SEUL Project system architect
        __
       /  \                SEUL: Simple End-User Linux -
      |    | M E G A            Creating a Linux distribution
      _\  /_                         for the home or office user