From 3038503f6ffc2d58b00650d5feae23cc8e842bcb Mon Sep 17 00:00:00 2001 From: zecke Date: Wed, 03 Sep 2003 18:58:20 +0000 Subject: Failure free restart of the launcher and a comment why we do that --- (limited to 'core/launcher/serverapp.cpp') 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 @@ -723,9 +723,28 @@ void ServerApplication::shutdown( ShutdownImpl::Type t ) void ServerApplication::restart() { if ( allowRestart ) { + + /* + * Applets and restart is a problem. Some applets delete + * their widgets even if ownership gets transfered to the + * parent (Systray ) but deleting the applet may be unsafe + * as well ( double deletion ). Some have topLevel widgets + * and when we dlclose and then delete the widget we will + * crash and an crash during restart is not nice + */ +#ifdef ALL_APPLETS_ON_THIS_WORLD_ARE_FIXED + /* same as above */ + emit aboutToQuit(); prepareForTermination(TRUE); doRestart = TRUE; quit(); +#else + prepareForTermination( true ); + for ( int fd = 3; fd < 100; fd++ ) + close( fd ); + execl( ( qpeDir() + "/bin/qpe" ).latin1(), "qpe", 0 ); + exit( 1 ); +#endif } } -- cgit v0.9.0.2