konq processes never terminate (kde#167826, rh#457526)

This commit is contained in:
Rex Dieter 2008-08-01 13:04:04 +00:00
parent 92d98f58e2
commit b959d4a014
2 changed files with 59 additions and 2 deletions

View File

@ -0,0 +1,51 @@
--- branches/KDE/4.1/kdelibs/kdecore/kernel/kglobal.cpp 2008/08/01 00:12:03 840376
+++ branches/KDE/4.1/kdelibs/kdecore/kernel/kglobal.cpp 2008/08/01 00:14:54 840377
@@ -251,11 +251,14 @@
/**
* This counter indicates when to quit the application.
- * It starts at 1, is decremented in KMainWindow when the last window is closed, but
- * is incremented by operations that should outlive the last window closed
- * (e.g. a file copy for a file manager, or 'compacting folders on exit' for a mail client).
+ * It starts at 0, is incremented by KMainWindow, systray icons, running jobs, etc.
+ * and decremented again when those things are destroyed.
+ * This mechanism allows dialogs and jobs to outlive the last window closed
+ * e.g. a file copy for a file manager, or 'compacting folders on exit' for a mail client,
+ * the job progress widget with "keep open" checked, etc.
*/
-static int s_refCount = 1;
+static int s_refCount = 0;
+static bool s_allowQuit = false;
void KGlobal::ref()
{
@@ -267,9 +270,14 @@
{
--s_refCount;
//kDebug() << "KGlobal::deref() : refCount = " << s_refCount;
- if (s_refCount <= 0) {
+ if (s_refCount <= 0 && s_allowQuit) {
QCoreApplication::instance()->quit();
}
}
+void KGlobal::setAllowQuit(bool allowQuit)
+{
+ s_allowQuit = allowQuit;
+}
+
#undef PRIVATE_DATA
--- branches/KDE/4.1/kdelibs/kdeui/widgets/kmainwindow.cpp 2008/08/01 00:12:03 840376
+++ branches/KDE/4.1/kdelibs/kdeui/widgets/kmainwindow.cpp 2008/08/01 00:14:54 840377
@@ -226,6 +226,11 @@
{
KGlobal::ref();
+ // We set allow quit to true, so when the refcounting reaches 0 the application instance will
+ // be exited. This has a similar purpose than setQuitOnLastWindowClosed (from
+ // QApplication), but it honors (de)refing from KGlobal.
+ KGlobal::setAllowQuit(true);
+
q = _q;
q->setAnimated(KGlobalSettings::graphicEffectsLevel() & KGlobalSettings::SimpleAnimationEffects);

View File

@ -81,7 +81,10 @@ Patch18: kdelibs-4.0.99-kstandarddirs.patch
# (and its followup) (#455130)
Patch19: kdelibs-4.0.98-revert-kinit-regression.patch
# upstream patches
## upstream patches
# konq processes never terminate,
# http://bugs.kde.org/167825 , http://bugzilla.redhat.com/457526
Patch100: kdelibs-4.1.0-kde#167826.patch
BuildRequires: qt4-devel >= 4.4.0
Requires: qt4 >= %{_qt4_version}
@ -206,7 +209,9 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
%patch18 -p1 -b .kstandarddirs
%patch19 -p0 -b .kinit-regression
# upstream patches
## upstream patches
%patch100 -p4 -b .kde#167826
%build
@ -369,6 +374,7 @@ rm -rf %{buildroot}
%changelog
* Fri Aug 01 2008 Rex Dieter <rdieter@fedoraproject.org> 4.1.0-4
- -devel: Requires: phonon-devel >= 4.2 (helps multilib upgrades)
- konq processes never terminate (kde#167826, rh#457526)
* Wed Jul 30 2008 Rex Dieter <rdieter@fedoraproject.org> 4.1.0-3
- (Build)Requires: soprano(-devel) >= 2.1 (#456827)