summaryrefslogtreecommitdiff
path: root/core/launcher/serverapp.cpp
authorzecke <zecke>2003-09-03 18:58:20 (UTC)
committer zecke <zecke>2003-09-03 18:58:20 (UTC)
commit3038503f6ffc2d58b00650d5feae23cc8e842bcb (patch) (unidiff)
tree33b2b319307b9a5abda47b51c31329131295d703 /core/launcher/serverapp.cpp
parent577cdc4f2ce81eaceb132af08d8ab6fe12b4eadc (diff)
downloadopie-3038503f6ffc2d58b00650d5feae23cc8e842bcb.zip
opie-3038503f6ffc2d58b00650d5feae23cc8e842bcb.tar.gz
opie-3038503f6ffc2d58b00650d5feae23cc8e842bcb.tar.bz2
Failure free restart of the launcher and a comment
why we do that
Diffstat (limited to 'core/launcher/serverapp.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/serverapp.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/launcher/serverapp.cpp b/core/launcher/serverapp.cpp
index 522ef07..28316a4 100644
--- a/core/launcher/serverapp.cpp
+++ b/core/launcher/serverapp.cpp
@@ -724,7 +724,26 @@ void ServerApplication::restart()
724{ 724{
725 if ( allowRestart ) { 725 if ( allowRestart ) {
726
727 /*
728 * Applets and restart is a problem. Some applets delete
729 * their widgets even if ownership gets transfered to the
730 * parent (Systray ) but deleting the applet may be unsafe
731 * as well ( double deletion ). Some have topLevel widgets
732 * and when we dlclose and then delete the widget we will
733 * crash and an crash during restart is not nice
734 */
735#ifdef ALL_APPLETS_ON_THIS_WORLD_ARE_FIXED
736 /* same as above */
737 emit aboutToQuit();
726 prepareForTermination(TRUE); 738 prepareForTermination(TRUE);
727 doRestart = TRUE; 739 doRestart = TRUE;
728 quit(); 740 quit();
741#else
742 prepareForTermination( true );
743 for ( int fd = 3; fd < 100; fd++ )
744 close( fd );
745 execl( ( qpeDir() + "/bin/qpe" ).latin1(), "qpe", 0 );
746 exit( 1 );
747#endif
729 } 748 }
730} 749}