Session restoration and autostart

David Jarvie lists at astrojar.org.uk
Tue Sep 6 01:58:13 BST 2005


On Monday 05 Sep 2005 11:29, Christian Esken wrote:
> Am Montag, 5. September 2005 01:19 schrieb David Jarvie:
> > On Friday 02 Sep 2005 12:09, Waldo Bastian wrote:
> > > On Tuesday 30 August 2005 23:34, David Jarvie wrote:
> > > > Currently, session restoration and autostart are not compatible for a
> > > > KUniqueApplication, since there is no guarantee that the application
> will
> > > > be activated by session restoration before it is autostarted. If it
> > > > is activated by session restoration after it has been autostarted, it
> > > > cannot detect that it is supposed to restore the session.
> > > >
> > > > 1) Provide a means to guarantee that autostart will only occur once
> > > > the application has been restored (if it actually is scheduled to be
> > > > restored).
> > > >
> > > > This would allow the application to be configured to use both methods
> > > > without having to take any special precautions.
> > >
> > > That's what we have the different autostart phases for already.
> >
> > Yes, I know - I was involved in implementing them. But unfortunately they
> > don't (any longer) work. I use autostart phase 2 for kalarm, but it is
> > often autostarted before session restoration. It happens to me on KDE
> > 3.4.1/2, and others have reported it on KDE 3.4.0. My assumption in
> > writing my last email was that the actual order in which program
> > activations occur is not entirely predictable - that it can differ from
> > the order in which the activations were
> > initiated. If that assumption is wrong, then it may only be a bug which
> > has been introduced in ksmserver for after KDE 3.3, rather than a design
> > problem.
>
> That is an interesting observation. Thanks for digging this up. This could
> also be the reason for KMix showing up on the desktop of some users on
> *every* Login. The bug https://bugs.kde.org/show_bug.cgi?id=58901 would
> then be triggered like this:
>
> - KMix Autostart : does not show KMix main window
> - KMix Restore : The KUniqueApplication KMix sees, that an instance is
> already running and explicitely calls show() to show its Main Window => Bug
> triggered .

It seems very likely that this is the cause.

> Possibly I could add an extra isRestored() check:
> - if ( m_kmix )    /*there-is-an-instance-running*/
> + if ( m_kmix && !isRestored() ) /*there-is-an-instance-running */
> {
>     m_kmix.show()
> }
>
> But I don't know wheteher this will work.

Unfortunately, this will not work, because if an application is initially 
started by autostart, isRestored() always returns false, even during the 
activation by the session manager.

> I also believe this is only a 
> workaround, and that there is something low-level broken, because I got
> very strange comments on workaround for the noted bug, e.g.: "I noticed
> that it docks well when no netwrok connection is active"

I have found that the behaviour is not consistent. Sometimes the fault occurs, 
other times it doesn't. I suspect that it may have something to do with 
system load at login (including the number of applications to be restored), 
but I'm not sure.

Cheers,
-- 
David Jarvie.
KAlarm author and maintainer.
http://www.astrojar.org.uk/linux/kalarm.html




More information about the kde-core-devel mailing list