summaryrefslogtreecommitdiffstats
path: root/kwin/workspace.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-08-09 09:11:52 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-08-09 09:11:52 +0000
commit341ad02235b9c85cd31782225181ed475b74eaa3 (patch)
tree8f80dae0b9a45cac3102294d3a91c6eb186be502 /kwin/workspace.cpp
parentbd777c107eb5098446497e57bfb6170cbf5cf242 (diff)
downloadtdebase-341ad02235b9c85cd31782225181ed475b74eaa3.tar.gz
tdebase-341ad02235b9c85cd31782225181ed475b74eaa3.zip
Fix spurious kompmgr crash dialogs
Disable irritating and obsolete warning dialog when kompmgr is enabled git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1245889 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kwin/workspace.cpp')
-rw-r--r--kwin/workspace.cpp82
1 files changed, 42 insertions, 40 deletions
diff --git a/kwin/workspace.cpp b/kwin/workspace.cpp
index 078d4d51b..6cf48258c 100644
--- a/kwin/workspace.cpp
+++ b/kwin/workspace.cpp
@@ -2563,10 +2563,10 @@ void Workspace::startKompmgr()
kompmgr_selection = new KSelectionOwner( selection_name );
connect( kompmgr_selection, TQT_SIGNAL( lostOwnership()), TQT_SLOT( stopKompmgr()));
kompmgr_selection->claim( true );
- connect(kompmgr, TQT_SIGNAL(processExited(KProcess*)), TQT_SLOT(restartKompmgr()));
+ connect(kompmgr, TQT_SIGNAL(processExited(KProcess*)), TQT_SLOT(restartKompmgr(KProcess*)));
options->useTranslucency = TRUE;
- allowKompmgrRestart = FALSE;
- TQTimer::singleShot( 60000, this, TQT_SLOT(unblockKompmgrRestart()) );
+ //allowKompmgrRestart = FALSE;
+ //TQTimer::singleShot( 60000, this, TQT_SLOT(unblockKompmgrRestart()) );
TQByteArray ba;
TQDataStream arg(ba, IO_WriteOnly);
arg << "";
@@ -2601,47 +2601,49 @@ void Workspace::unblockKompmgrRestart()
allowKompmgrRestart = TRUE;
}
-void Workspace::restartKompmgr()
+void Workspace::restartKompmgr( KProcess *proc )
// this is for inernal purpose (crashhandling) only, usually you want to use workspace->stopKompmgr(); TQTimer::singleShot(200, workspace, TQT_SLOT(startKompmgr()));
{
- if (!allowKompmgrRestart) // uh-ohh
- {
- delete kompmgr_selection;
- kompmgr_selection = NULL;
- options->useTranslucency = FALSE;
- KProcess proc;
- proc << "kdialog" << "--error"
- << i18n( "The Composite Manager crashed twice within a minute and is therefore disabled for this session.")
- << "--title" << i18n("Composite Manager Failure");
- proc.start(KProcess::DontCare);
- return;
- }
- if (!kompmgr)
- return;
+ if (proc->signalled()) { // looks like kompmgr crashed
+ if (!allowKompmgrRestart) // uh oh, it crashed recently already
+ {
+ delete kompmgr_selection;
+ kompmgr_selection = NULL;
+ options->useTranslucency = FALSE;
+ KProcess proc;
+ proc << "kdialog" << "--error"
+ << i18n( "The Composite Manager crashed twice within a minute and is therefore disabled for this session.")
+ << "--title" << i18n("Composite Manager Failure");
+ proc.start(KProcess::DontCare);
+ return;
+ }
+ if (!kompmgr)
+ return;
// this should be useless, i keep it for maybe future need
-// if (!kcompmgr)
-// {
-// kompmgr = new KProcess;
-// kompmgr->clearArguments();
-// *kompmgr << "kompmgr";
-// }
+// if (!kcompmgr)
+// {
+// kompmgr = new KProcess;
+// kompmgr->clearArguments();
+// *kompmgr << "kompmgr";
+// }
// -------------------
- if (!kompmgr->start(KProcess::NotifyOnExit, KProcess::Stderr))
- {
- delete kompmgr_selection;
- kompmgr_selection = NULL;
- options->useTranslucency = FALSE;
- KProcess proc;
- proc << "kdialog" << "--error"
- << i18n("The Composite Manager could not be started.\\nMake sure you have \"kompmgr\" in a $PATH directory.")
- << "--title" << i18n("Composite Manager Failure");
- proc.start(KProcess::DontCare);
- }
- else
- {
- allowKompmgrRestart = FALSE;
- TQTimer::singleShot( 60000, this, TQT_SLOT(unblockKompmgrRestart()) );
- }
+ if (!kompmgr->start(KProcess::NotifyOnExit, KProcess::Stderr))
+ {
+ delete kompmgr_selection;
+ kompmgr_selection = NULL;
+ options->useTranslucency = FALSE;
+ KProcess proc;
+ proc << "kdialog" << "--error"
+ << i18n("The Composite Manager could not be started.\\nMake sure you have \"kompmgr\" in a $PATH directory.")
+ << "--title" << i18n("Composite Manager Failure");
+ proc.start(KProcess::DontCare);
+ }
+ else
+ {
+ allowKompmgrRestart = FALSE;
+ TQTimer::singleShot( 60000, this, TQT_SLOT(unblockKompmgrRestart()) );
+ }
+ }
}
void Workspace::handleKompmgrOutput( KProcess* , char *buffer, int buflen)