From 26a0c05ef0960da43545d63383585429ab66039f Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 17 Sep 2008 09:45:29 +0000 Subject: [PATCH] #461725, revert the patch to fix the regression --- kdelibs-4.1.1-bz#461725-regression.patch | 189 +++++++++++++++++++++++ kdelibs.spec | 7 +- 2 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 kdelibs-4.1.1-bz#461725-regression.patch diff --git a/kdelibs-4.1.1-bz#461725-regression.patch b/kdelibs-4.1.1-bz#461725-regression.patch new file mode 100644 index 0000000..f4515e4 --- /dev/null +++ b/kdelibs-4.1.1-bz#461725-regression.patch @@ -0,0 +1,189 @@ +Index: khtml/khtml_part.cpp +=================================================================== +--- khtml/khtml_part.cpp (Revision 852920) ++++ khtml/khtml_part.cpp (Revision 852919) +@@ -1080,7 +1080,8 @@ + if ( !d->m_frame->m_jscript ) + if (!createJScript(d->m_frame)) + return 0; +- d->m_frame->m_jscript->setDebugEnabled(d->m_bJScriptDebugEnabled); ++ if (d->m_bJScriptDebugEnabled) ++ d->m_frame->m_jscript->setDebugEnabled(true); + + return d->m_frame->m_jscript; + } +Index: khtml/ecma/debugger/debugwindow.cpp +=================================================================== +--- khtml/ecma/debugger/debugwindow.cpp (Revision 852920) ++++ khtml/ecma/debugger/debugwindow.cpp (Revision 852919) +@@ -91,12 +91,23 @@ + using namespace KJSDebugger; + + DebugWindow* DebugWindow::s_debugger = 0; ++DebugWindow *DebugWindow::createInstance() ++{ ++ Q_ASSERT(!s_debugger); ++ s_debugger = new DebugWindow(); ++ return s_debugger; ++} + ++void DebugWindow::destroyInstance() ++{ ++ Q_ASSERT(s_debugger); ++ Q_ASSERT(s_debugger->m_activeSessionCtxs.isEmpty()); ++ s_debugger->hide(); ++ delete s_debugger; ++} ++ + DebugWindow * DebugWindow::window() + { +- if (!s_debugger) +- s_debugger = new DebugWindow(); +- + return s_debugger; + } + +@@ -365,8 +376,6 @@ + assert(m_docsForIntrp.isEmpty()); + assert(m_docForSid.isEmpty()); + assert(m_docForIUKey.isEmpty()); +- assert(m_activeSessionCtxs.isEmpty()); +- s_debugger = 0; + } + + void DebugWindow::closeEvent(QCloseEvent* event) +Index: khtml/ecma/debugger/debugwindow.h +=================================================================== +--- khtml/ecma/debugger/debugwindow.h (Revision 852920) ++++ khtml/ecma/debugger/debugwindow.h (Revision 852919) +@@ -39,7 +39,6 @@ + #include "khtml_pagecache.h" + #include "khtml_part.h" + #include "dom/dom_misc.h" +-#include "misc/shared.h" + + #include + #include +@@ -72,8 +71,7 @@ + * + * There is only one debug window per program. This can be obtained by calling #instance + */ +-class DebugWindow : public KXmlGuiWindow, public KJS::Debugger, public KComponentData, +- public khtml::Shared ++class DebugWindow : public KXmlGuiWindow, public KJS::Debugger, public KComponentData + { + Q_OBJECT + +@@ -81,6 +79,8 @@ + DebugWindow(QWidget *parent = 0); + virtual ~DebugWindow(); + ++ static DebugWindow *createInstance(); ++ static void destroyInstance(); + static DebugWindow *window(); + + // Returns true if the debugger is active, and has blocked the execution +Index: khtml/ecma/kjs_proxy.cpp +=================================================================== +--- khtml/ecma/kjs_proxy.cpp (Revision 852920) ++++ khtml/ecma/kjs_proxy.cpp (Revision 852919) +@@ -66,9 +66,9 @@ + + void initScript(); + void applyUserAgent(); ++ + private: + KJS::ScriptInterpreter* m_script; +- WTF::RefPtr m_debugWindow; + bool m_debugEnabled; + #ifndef NDEBUG + static int s_count; +@@ -141,8 +141,8 @@ + #ifdef KJS_DEBUGGER + if (inlineCode) + filename = "(unknown file)"; +- if (m_debugWindow) +- m_debugWindow->attach(m_script); ++ if (DebugWindow::window()) ++ DebugWindow::window()->attach(m_script); + #else + Q_UNUSED(baseLine); + #endif +@@ -202,8 +202,9 @@ + // (we used to delete and re-create it, previously) + if (m_script) { + #ifdef KJS_DEBUGGER +- if (m_debugWindow) +- m_debugWindow->clearInterpreter(m_script); ++ DebugWindow *debugWin = DebugWindow::window(); ++ if (debugWin) ++ debugWin->clearInterpreter(m_script); + #endif + m_script->clear(); + +@@ -224,14 +225,6 @@ + ; + JSLock::unlock(); + } +- +-#ifdef KJS_DEBUGGER +- // Detach from debugging entirely if it's been turned off. +- if (m_debugWindow && !m_debugEnabled) { +- m_debugWindow->detach(m_script); +- m_debugWindow = 0; +- } +-#endif + } + + DOM::EventListener *KJSProxyImpl::createHTMLEventHandler(QString sourceUrl, QString name, QString code, DOM::NodeImpl *node) +@@ -239,8 +232,8 @@ + initScript(); + + #ifdef KJS_DEBUGGER +- if (m_debugWindow) +- m_debugWindow->attach(m_script); ++ if (DebugWindow::window()) ++ DebugWindow::window()->attach(m_script); + #else + Q_UNUSED(sourceUrl); + #endif +@@ -269,21 +262,30 @@ + { + #ifdef KJS_DEBUGGER + m_debugEnabled = enabled; +- +- // Note that we attach to the debugger only before +- // running a script. Detaches/disabling are done between +- // documents, at clear. Both are done so the debugger +- // see the entire session +- if (enabled) +- m_debugWindow = DebugWindow::window(); ++ //if (m_script) ++ // m_script->setDebuggingEnabled(enabled); ++ // NOTE: this is consistent across all KJSProxyImpl instances, as we only ++ // ever have 1 debug window ++ if (!enabled && DebugWindow::window()) ++ { ++ DebugWindow::destroyInstance(); ++ } ++ else if (enabled && !DebugWindow::window()) ++ { ++ DebugWindow::createInstance(); ++ initScript(); ++ DebugWindow::window()->attach(m_script); ++ } ++#else ++ Q_UNUSED(enabled); + #endif + } + + void KJSProxyImpl::showDebugWindow(bool /*show*/) + { + #ifdef KJS_DEBUGGER +- if (m_debugWindow) +- m_debugWindow->show(); ++ if (DebugWindow::window()) ++ DebugWindow::window()->show(); + #else + //Q_UNUSED(show); + #endif diff --git a/kdelibs.spec b/kdelibs.spec index b4ee0ec..cdc2489 100644 --- a/kdelibs.spec +++ b/kdelibs.spec @@ -2,7 +2,7 @@ Summary: K Desktop Environment 4 - Libraries Version: 4.1.1 -Release: 8%{?dist} +Release: 9%{?dist} %if 0%{?fedora} > 8 Name: kdelibs @@ -78,6 +78,7 @@ Patch18: kdelibs-4.1.0-kstandarddirs.patch # fix running commands in kglobalconfig before KComponentData init (#455130) Patch19: kdelibs-4.1.0-#455130.patch Patch20: kdelibs-4.1.1-cmake.patch +Patch21: kdelibs-4.1.1-bz#461725-regression.patch ## upstream patches Patch100: kdelibs-4.1.1-kde#169447-khtml-regression.patch @@ -209,6 +210,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage %patch18 -p1 -b .kstandarddirs %patch19 -p1 -b .#455130 %patch20 -p1 -b .cmake +%patch21 -p0 -b .bz#461725-regression ## upstream patches %patch100 -p0 -b .kde#169447-khtml-regression @@ -376,6 +378,9 @@ rm -rf %{buildroot} %changelog +* Wed Sep 17 2008 Than Ngo 4.1.1-9 +- #461725, revert the patch to fix the regression + * Sat Sep 13 2008 Than Ngo 4.1.1-8 - fix kdelibs-4.1.1-kdeui-widgets-fixes.patch