From kde-core-devel Mon Aug 17 18:22:48 2009 From: David Faure Date: Mon, 17 Aug 2009 18:22:48 +0000 To: kde-core-devel Subject: KDE/kdelibs/kdecore Message-Id: <1250533368.959513.25131.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=125053338726394 SVN commit 1012502 by dfaure: Add a "bool enable" to registerArea so that verbose debug areas can be disabled by default This BIC, but the method is new in trunk, so no big deal, just more recompilation. CCMAIL: kde-core-devel@kde.org M +5 -5 io/kdebug.cpp M +3 -1 io/kdebug.h M +10 -0 tests/kdebug_unittest.cpp M +1 -0 tests/kdebug_unittest.h --- trunk/KDE/kdelibs/kdecore/io/kdebug.cpp #1012501:1012502 @@ -401,7 +401,7 @@ static bool s_firstDebugFromApplication = true; if (s_firstDebugFromApplication) { s_firstDebugFromApplication = false; - writeGroupForNamedArea(it->name); + writeGroupForNamedArea(it->name, true); } } @@ -614,7 +614,7 @@ return printHeader(s, areaName, debugFile, line, funcinfo, type, colored); } - void writeGroupForNamedArea(const QByteArray& areaName) + void writeGroupForNamedArea(const QByteArray& areaName, bool enabled) { // Ensure that this area name appears in kdebugrc, so that users (via kdebugdialog) // can turn it off. @@ -623,7 +623,7 @@ KConfigGroup cg(cfgObj, QString::fromUtf8(areaName)); const QString key = QString::fromLatin1("InfoOutput"); if (!cg.hasKey(key)) { - cg.writeEntry(key, int(KDebugPrivate::QtOutput)); + cg.writeEntry(key, int(enabled ? KDebugPrivate::QtOutput : KDebugPrivate::NoOutput)); } } } @@ -770,7 +770,7 @@ return KDebug::hasNullOutput(type, area); } -int KDebug::registerArea(const QByteArray& areaName) +int KDebug::registerArea(const QByteArray& areaName, bool enabled) { // TODO for optimization: static int s_lastAreaNumber = 1; KDebugPrivate* d = kDebug_data; @@ -782,7 +782,7 @@ KDebugPrivate::Area areaData; areaData.name = areaName; d->cache.insert(areaNumber, areaData); - d->writeGroupForNamedArea(areaName); + d->writeGroupForNamedArea(areaName, enabled); return areaNumber; } --- trunk/KDE/kdelibs/kdecore/io/kdebug.h #1012501:1012502 @@ -254,6 +254,8 @@ * @since 4.4 * Register a debug area dynamically. * @param areaName the name of the area + * @param enabled whether debug output should be enabled by default + * (users can override this in kdebugdialog or with DisableAll=true in kdebugrc) * @return the area code that was allocated for this area * * Typical usage: @@ -270,7 +272,7 @@ * declare it in one file without static, and use "extern int debugArea();" * in other files (with a better name for the function of course). */ - static KDECORE_EXPORT int registerArea(const QByteArray& areaName); + static KDECORE_EXPORT int registerArea(const QByteArray& areaName, bool enabled = true); }; --- trunk/KDE/kdelibs/kdecore/tests/kdebug_unittest.cpp #1012501:1012502 @@ -160,6 +160,16 @@ compareLines(expected, "myarea.dbg"); } +void KDebugTest::testDisabledDynamicArea() +{ + const int verboseArea = KDebug::registerArea("verbosearea", false); + QVERIFY(verboseArea > 0); + kClearDebugConfig(); // force a sync() of KDebug's own kdebugrc so that it gets written out + KConfig config("kdebugrc"); + QVERIFY(config.hasGroup("verbosearea")); + kDebug(verboseArea) << "TEST DEBUG using verboseArea" << verboseArea; +} + #include #include --- trunk/KDE/kdelibs/kdecore/tests/kdebug_unittest.h #1012501:1012502 @@ -34,6 +34,7 @@ void testDebugToFile(); void testDisableArea(); void testDynamicArea(); + void testDisabledDynamicArea(); void testMultipleThreads(); private: