[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kmix] /: Add a Lock to avoid duplicate initializiation, which may help with some
From:       Christian Esken <esken () kde ! org>
Date:       2015-01-06 22:29:34
Message-ID: E1Y8cd4-0001xH-UW () scm ! kde ! org
[Download RAW message or body]

Git commit 91284ff2561ba9627dfe47d21593f472df9ffa8e by Christian Esken.
Committed on 06/01/2015 at 22:29.
Pushed by esken into branch 'master'.

Add a Lock to avoid duplicate initializiation, which may help with some
startup issues (delays, lockups). Not likely a solutin for all, but
please test. Also some ceanups, less logging and fixing a small memleak.

CCBUGS: 318986
CCBUGS: 339272
CCBUGS: 339525
CCBUGS: 317926

M  +1    -0    CMakeLists.txt
M  +122  -59   apps/KMixApp.cpp
M  +7    -10   apps/KMixApp.h
M  +2    -7    apps/kmix.cpp
M  +1    -0    apps/main.cpp
M  +1    -1    backends/mixer_mpris2.cpp
M  +4    -4    backends/mixer_pulse.cpp
M  +4    -2    core/GlobalConfig.cpp
M  +13   -0    core/GlobalConfig.h
M  +2    -1    core/mixdevice.cpp
M  +2    -2    core/mixer.cpp
M  +14   -7    gui/kmixprefdlg.cpp
M  +2    -2    gui/viewbase.cpp

http://commits.kde.org/kmix/91284ff2561ba9627dfe47d21593f472df9ffa8e

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4a8c4f0..df3ba9b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,6 +26,7 @@ if(POLICY CMP0046)
   cmake_policy (SET CMP0046 NEW)
 endif()
 
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
 
 if (KMIX_KF5_BUILD)
 	find_package(ECM 0.0.11 REQUIRED NO_MODULE)
diff --git a/apps/KMixApp.cpp b/apps/KMixApp.cpp
index 24a9225..87d9983 100644
--- a/apps/KMixApp.cpp
+++ b/apps/KMixApp.cpp
@@ -28,9 +28,10 @@
 #include "core/ControlManager.h"
 #include "core/GlobalConfig.h"
 
+bool KMixApp::firstCaller = true;
 
 KMixApp::KMixApp() :
-		KUniqueApplication(), m_kmix(0)
+		KUniqueApplication(), m_kmix(0), creationLock(QMutex::Recursive)
 {
 	GlobalConfig::init();
 
@@ -45,108 +46,170 @@ KMixApp::KMixApp() :
 
 KMixApp::~KMixApp()
 {
+	kDebug() << "Deleting KMixApp";
 	ControlManager::instance().shutdownNow();
 	delete m_kmix;
+	m_kmix = 0;
+	GlobalConfig::shutdown();
 }
 
-bool KMixApp::restoreSessionIfApplicable()
+void KMixApp::createWindowOnce(bool hasArgKeepvisibility, bool reset)
 {
-	bool restore = isSessionRestored() && KMainWindow::canBeRestored(0);
+	// Create window, if it was not yet created (e.g. via autostart or manually)
+	if (m_kmix == 0)
+	{
+		kDebug() << "Creating new KMix window";
+		m_kmix = new KMixWindow(hasArgKeepvisibility, reset);
+	}
+}
+
+bool KMixApp::restoreSessionIfApplicable(bool hasArgKeepvisibility, bool reset)
+{
+	/**
+	 * We should lock session creation. Rationale:
+	 * KMix can be started multiple times during session start. By "autostart" and \
"session restore". The order is +	 * undetermined, as KMix will initialize in the \
background of KDE session startup (Hint: As a +	 * KUniqueApplication it decouples \
from the startkde process!). +	 *
+	 * Now we must make sure that window creation is definitely done, before the \
"other" process comes, as it might +	 * want to restore the session. Working on a \
half-created window would not be smart! Why can this happen? It +	 * depends on \
implementation details insinde Qt, which COULD potentially lead to the following \
scenarios: +	 * 1) "Autostart" and "session restore" run concurrenty in 2 differnent \
Threads. +	 * 2) The current "main/gui" thread "pops up" a "session restore" message \
from the Qt event dispatcher. +	 *    This means that  "Autostart" and "session \
restore" run interleaved in a single Thread. +	 */
+	creationLock.lock();
+
+	bool restore = isSessionRestored(); // && KMainWindow::canBeRestored(0);
+	kDebug() << "Starting KMix using kepvisibility=" << hasArgKeepvisibility << ", \
failsafe=" << reset << ", sessionRestore=" << restore; +	int createCount = 0;
 	if (restore)
 	{
-		m_kmix->restore(0, false);
+		if (reset)
+		{
+			kWarning() << "Reset cannot be performed while KMix is running. Please quit KMix \
and retry then."; +		}
+		int n = 1;
+		while (KMainWindow::canBeRestored(n))
+		{
+			kDebug() << "Restoring window " << n;
+			if (n > 1)
+			{
+				// This code path is "impossible". It is here only for analyzing possible issues \
with session resoring. +				// KMix is a single-instance app. If more than one \
instance is craeated we have a bug. +				kWarning() << "KDE session management wants \
to restore multiple instances of KMix. Please report this as a bug."; +				break;
+			}
+			else
+			{
+				// Create window, if it was not yet created (e.g. via autostart or manually)
+				createWindowOnce(hasArgKeepvisibility, reset);
+				// #restore() is called with the parameter of "show == false", as KMixWindow \
iteself decides on it. +				m_kmix->restore(n, false);
+				createCount++;
+			}
+		}
 	}
 
+	if (createCount == 0)
+	{
+		// Normal start, or if nothing could be restored
+		createWindowOnce(hasArgKeepvisibility, reset);
+	}
+
+	creationLock.unlock();
 	return restore;
 }
 
 int KMixApp::newInstance()
 {
-	// There are 3 cases for a new instance
+	KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+	bool hasArgKeepvisibility = args->isSet("keepvisibility");
+	bool reset = args->isSet("failsafe");
+
+	/**
+	 * There are 3 cases when starting KMix:
+	 * Autostart            : Cases 1) or 3) below
+	 * Session restore      : Cases 1) or 2a) below
+	 * Manual start by user : Cases 1) or 2b) below
+	 *
+	 * Each may be the creator a new instance, but only if the instance did not exist \
yet. +	 */
+
 
 	//kDebug(67100) <<  "KMixApp::newInstance() isRestored()=" << isRestored() << \
                "_keepVisibility=" << _keepVisibility;
-	static bool first = true;
-	if (!first)
+	/**
+	 * 		NB See https://qa.mandriva.com/show_bug.cgi?id=56893#c3
+	 *
+	 * 		It is important to track this via a separate variable and not
+	 * 		based on m_kmix to handle this race condition.
+	 * 		Specific protection for the activation-prior-to-full-construction
+	 * 		case exists above in the 'already running case'
+	 */
+	creationLock.lock(); // Guard a complete construction
+	bool first = firstCaller;
+	firstCaller = false;
+
+	if (first)
 	{
-		// There already exists an instance/window
-		kDebug(67100)
-		<< "KMixApp::newInstance() Instance exists";
-
-		KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-		bool hasArgKeepvisibility = args->isSet("keepvisibility");
-		bool reset = args->isSet("failsafe");
-		if (reset)
-		{
-			kWarning() << "Reset cannot be performed while KMix is running. Please quit KMix \
                and retry then.";
-		}
+		/** CASE 1 *******************************************************
+		 *
+		 * Typical case: Normal start. KMix was not running yet => create a new KMixWindow
+		 */
+		GlobalConfig::init();
+		restoreSessionIfApplicable(hasArgKeepvisibility, reset);
 
+	}
+	else
+	{
 		if (!hasArgKeepvisibility)
 		{
-			// *** CASE 1 ******************************************************
-			/*
-			 * KMix is running, AND the *USER* starts it again (w/o --keepvisibilty), the \
KMix main window will be shown. +			/** CASE 2 \
****************************************************** +			 *
+			 * KMix is running, AND the *USER* starts it again (w/o --keepvisibilty)
+			 * 2a) Restored the KMix main window will be shown.
+			 * 2b) Not restored
 			 */
-			kDebug(67100)
-			<< "KMixApp::newInstance() SHOW WINDOW (_keepVisibility="
-					<< hasArgKeepvisibility << ", isSessionRestored="
-					<< isSessionRestored();
 
 			/*
 			 * Restore Session. This may look strange to you, as the instance already exists. \
                But the following
 			 * sequence might happen:
-			 * 1) Autostart (no restore) => create m_kmix instance (via CASE 3)
-			 * 2) Session restore => we are here at this line of code (CASE 1). m_kmix \
exists, but still must be restored +			 * 1) Autostart (no restore) => create m_kmix \
instance (via CASE 1) +			 * 2) Session restore => we are here at this line of code \
                (CASE 2). m_kmix exists, but still must be restored
 			 *
 			 */
-			bool wasRestored = restoreSessionIfApplicable();
+			bool wasRestored = restoreSessionIfApplicable(hasArgKeepvisibility, reset);
 
-			// Use standard newInstances(), which shows and activates the main window. But \
                skip it for the
-			// special "restored" case, as we should not override the session rules.
 			if (!wasRestored)
 			{
+				//
+				// Use standard newInstances(), which shows and activates the main window. But \
skip it for the +				// special "restored" case, as we should not override the \
session rules.  KUniqueApplication::newInstance();
 			}
+			// else: Do nothing, as session restore has done it.
 		}
 		else
 		{
-			// *** CASE 2 ******************************************************
-			/*
-			 * If KMix is running, AND launched again with --keepvisibilty
+			/** CASE 3 ******************************************************
 			 *
-			 * =>  We don't want to change the visibiliy, thus we don't call show() here.
+			 * KMix is running, AND launched again with --keepvisibilty
+			 *
+			 * Typical use case: Autostart
 			 *
-			 * Hint: --keepVisibility is a special (legacy) option for applications that want \
                to start
-			 *       a mixer service, but don't need to show the KMix GUI (like KMilo , \
                KAlarm, ...).
-			 *       See Bug 58901.
+			 * =>  We don't want to change the visibiliy, thus we don't call show() here.
 			 *
-			 *       Nowadays this switch can be considered legacy, as applications should \
use KMixD instead. +			 * Hint: --keepVisibility is used in kmix_autostart.desktop. \
It was used in history by KMilo +			 *       (see BKO 58901), but nowadays Mixer \
Applets nmight want to use it, though they should +			 *       use KMixD instead.
 			 */
-			kDebug(67100)
+			kDebug()
 			<< "KMixApp::newInstance() REGULAR_START _keepVisibility="
 					<< hasArgKeepvisibility;
 		}
 	}
-	else
-	{
-		// *** CASE 3 ******************************************************
-		/*
-		 * Regular case: KMix was not running yet => create a new KMixWindow
-		 */
-		first = false;// NB See https://qa.mandriva.com/show_bug.cgi?id=56893#c3
-		// It is important to track this via a separate variable and not
-		// based on m_kmix to handle this race condition.
-		// Specific protection for the activation-prior-to-full-construction
-		// case exists above in the 'already running case'
-		GlobalConfig::init();
-
-		KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
-		bool hasArgKeepvisibility = args->isSet("keepvisibility");
-		bool reset = args->isSet("failsafe");
 
-		m_kmix = new KMixWindow(hasArgKeepvisibility, reset);
-
-		restoreSessionIfApplicable();
-	}
+	creationLock.unlock();
 
 	return 0;
 }
diff --git a/apps/KMixApp.h b/apps/KMixApp.h
index e46930b..b7cd628 100644
--- a/apps/KMixApp.h
+++ b/apps/KMixApp.h
@@ -21,6 +21,7 @@
 #ifndef KMixApp_h
 #define KMixApp_h
 
+#include <QMutex>
 #include <kuniqueapplication.h>
 
 class KMixWindow;
@@ -28,23 +29,19 @@ class KMixWindow;
 class KMixApp : public KUniqueApplication
 {
 Q_OBJECT
-	bool restoreSessionIfApplicable();
+	bool restoreSessionIfApplicable(bool hasArgKeepvisibility, bool reset);
+	void createWindowOnce(bool hasArgKeepvisibility, bool reset);
 
  public:
     KMixApp();
     ~KMixApp();
-    int newInstance ();
+    int newInstance() override;
 
-    public slots:
-    //void quitExtended();  // For a hack on visibility()
-//    static void keepVisibility(bool);
-/*
- signals:
-    void stopUpdatesOnVisibility();
-*/
  private:
     KMixWindow *m_kmix;
-//    static bool _keepVisibility;
+    QMutex creationLock;
+	static bool firstCaller;
+
 };
 
 #endif
diff --git a/apps/kmix.cpp b/apps/kmix.cpp
index 8ed7355..a6b8187 100644
--- a/apps/kmix.cpp
+++ b/apps/kmix.cpp
@@ -566,6 +566,7 @@ void KMixWindow::loadBaseConfig()
 
 	// --- Advanced options, without GUI: END -------------------------------------
 
+	// The following log is very helpful in bug reports. Please keep it.
 	m_backendFilter = config.readEntry<>("Backends", QList<QString>());
 	kDebug()
 	<< "Backends: " << m_backendFilter;
@@ -686,17 +687,11 @@ void KMixWindow::recreateGUI(bool saveConfig, const QString& \
mixerId, bool force  
 		{
 			GUIProfile* guiprof = 0;
-//			if (mixer->isDynamic())
-//			{
-//				// Dynamic will ALWAYS get the fallbackProfile. Actually user can not disable \
                it
-//				guiprof = GUIProfile::fallbackProfile(mixer);
-//			}
-//			else
 			if (reset)
 			{
 				guiprof = GUIProfile::find(mixer, QString("default"), false, true); // ### Card \
unspecific profile ###  }
-//			else
+
 			if ( guiprof != 0 )
 			{
 				guiprof->setDirty();  // All fallback => dirty
diff --git a/apps/main.cpp b/apps/main.cpp
index 6850c29..68235ff 100644
--- a/apps/main.cpp
+++ b/apps/main.cpp
@@ -90,5 +90,6 @@ kdemain(int argc, char *argv[])
    KMixApp *app = new KMixApp();
    int ret = app->exec();
    delete app;
+   kDebug() << "KMix is now exiting, status=" << ret;
    return ret;
 }
diff --git a/backends/mixer_mpris2.cpp b/backends/mixer_mpris2.cpp
index 5ce28a0..bffc714 100644
--- a/backends/mixer_mpris2.cpp
+++ b/backends/mixer_mpris2.cpp
@@ -620,7 +620,7 @@ void MPrisControl::trackChangedIncoming(QVariantMap /*msg*/)
 
 MediaController::PlayState Mixer_MPRIS2::mprisPlayStateString2PlayState(const \
QString& playbackStatus)  {
-	MediaController::PlayState playState;
+	MediaController::PlayState playState = MediaController::PlayStopped; // presume \
Stopped for unknown state  if (playbackStatus == "Playing")
 	{
 		playState = MediaController::PlayPlaying;
diff --git a/backends/mixer_pulse.cpp b/backends/mixer_pulse.cpp
index 88d4591..bdcc797 100644
--- a/backends/mixer_pulse.cpp
+++ b/backends/mixer_pulse.cpp
@@ -260,7 +260,7 @@ static void source_cb(pa_context *c, const pa_source_info *i, int \
eol, void *) {  // Do something....
     if (PA_INVALID_INDEX != i->monitor_of_sink)
     {
-        kDebug(67100) << "Ignoring Monitor Source: " << i->description;
+//        kDebug(67100) << "Ignoring Monitor Source: " << i->description;
         return;
     }
 
@@ -929,9 +929,9 @@ bool Mixer_PULSE::addDevice(devinfo& dev, bool isAppStream)
         if (isAppStream)
             md->setApplicationStream(true);
 
-        kDebug(67100) << "Adding Pulse volume " << dev.name << ", isCapture= "
-                      << (m_devnum == KMIXPA_CAPTURE || m_devnum == \
                KMIXPA_APP_CAPTURE)
-                      << ", isAppStream= " << isAppStream << "=" << \
md->isApplicationStream() << ", devnum=" << m_devnum; +//        kDebug(67100) << \
"Adding Pulse volume " << dev.name << ", isCapture= " +//                      << \
(m_devnum == KMIXPA_CAPTURE || m_devnum == KMIXPA_APP_CAPTURE) +//                    \
<< ", isAppStream= " << isAppStream << "=" << md->isApplicationStream() << ", \
devnum=" << m_devnum;  md->addPlaybackVolume(v);
         md->setMuted(dev.mute);
         m_mixDevices.append(md->addToPool());
diff --git a/core/GlobalConfig.cpp b/core/GlobalConfig.cpp
index 11bd839..60225fb 100644
--- a/core/GlobalConfig.cpp
+++ b/core/GlobalConfig.cpp
@@ -31,8 +31,9 @@ GlobalConfig::GlobalConfig() :
 	addItemBool("Labels", data.showLabels, true);
 	addItemBool("VolumeOverdrive", data.volumeOverdrive, false);
 	addItemBool("VolumeFeedback", data.beepOnVolumeChange, true);
-	ItemString* is = addItemString("Orientation", data.orientationMainGUIString, \
                "Vertical");
-	kDebug() << is->name() << is->value();
+//	ItemString* is =
+	addItemString("Orientation", data.orientationMainGUIString, "Vertical");
+//	kDebug() << is->name() << is->value();
 	addItemString("Orientation.TrayPopup", data.orientationTrayPopupString, \
QLatin1String("Vertical"));  
 	// Sound Menu
@@ -50,6 +51,7 @@ GlobalConfig::GlobalConfig() :
 	addItemBool("Debug.ControlManager", data.debugControlManager, false);
 	addItemBool("Debug.GUI", data.debugGUI, false);
 	addItemBool("Debug.Volume", data.debugVolume, false);
+	addItemBool("Debug.Config", data.debugConfig, false);
 
 	readConfig();
 }
diff --git a/core/GlobalConfig.h b/core/GlobalConfig.h
index c561f3e..f91a737 100644
--- a/core/GlobalConfig.h
+++ b/core/GlobalConfig.h
@@ -51,6 +51,7 @@ public:
 	bool debugControlManager;
 	bool debugGUI;
 	bool debugVolume;
+	bool debugConfig;
 
 	Qt::Orientation getToplevelOrientation();
 	Qt::Orientation getTraypopupOrientation();
@@ -95,6 +96,18 @@ public:
 	}
 	;
 
+	/**
+	 * Frees all data associated with the static instance.
+	 *
+	 */
+	static void shutdown()
+	{
+		delete instanceObj;
+		instanceObj = 0;
+	}
+	;
+
+
 	GlobalConfigData data;
 	void setMixersForSoundmenu(QSet<QString> mixersForSoundmenu)
 	{
diff --git a/core/mixdevice.cpp b/core/mixdevice.cpp
index 9938e4d..7fce6ee 100644
--- a/core/mixdevice.cpp
+++ b/core/mixdevice.cpp
@@ -288,6 +288,7 @@ MixDevice::~MixDevice()
 {
     _enumValues.clear(); // The QString's inside will be auto-deleted, as they get \
unref'ed  delete _dbusControlWrapper;
+    delete mediaController;
 }
 
 Volume& MixDevice::playbackVolume()
@@ -425,7 +426,7 @@ void MixDevice::readPlaybackOrCapture(const KConfigGroup& config, \
bool capture)  bool MixDevice::write( KConfig *config, const QString& grp )
 {
     if (_mixer->isDynamic() || isArtificial()) {
-        kDebug(67100) << "MixDevice::write(): This MixDevice does not permit volume \
saving (i.e. because it is handled lower down in the audio stack). Ignoring."; +//    \
kDebug(67100) << "MixDevice::write(): This MixDevice does not permit volume saving \
(i.e. because it is handled lower down in the audio stack). Ignoring.";  return \
false;  }
 
diff --git a/core/mixer.cpp b/core/mixer.cpp
index 438eb0b..504baf5 100644
--- a/core/mixer.cpp
+++ b/core/mixer.cpp
@@ -509,7 +509,7 @@ MasterControl& Mixer::getGlobalMasterPreferred(bool \
fallbackAllowed)  static MasterControl result;
 
     if ( !fallbackAllowed || _globalMasterPreferred.isValid() ) {
-        kDebug() << "Returning preferred master";
+//        kDebug() << "Returning preferred master";
         return _globalMasterPreferred;
     }
 
@@ -517,7 +517,7 @@ MasterControl& Mixer::getGlobalMasterPreferred(bool \
fallbackAllowed)  if (mm) {
         result.set(_globalMasterPreferred.getCard(), mm->getRecommendedDeviceId());
         if (!result.getControl().isEmpty())
-            kDebug() << "Returning extended preferred master";
+//            kDebug() << "Returning extended preferred master";
             return result;
     }
 
diff --git a/gui/kmixprefdlg.cpp b/gui/kmixprefdlg.cpp
index 37faf1f..bde7b15 100644
--- a/gui/kmixprefdlg.cpp
+++ b/gui/kmixprefdlg.cpp
@@ -302,7 +302,8 @@ void KMixPrefDlg::addWidgetToLayout(QWidget* widget, QBoxLayout* \
                layout, int spa
  */
 void KMixPrefDlg::updateWidgets()
 {
-	kDebug() << "";
+	if (dialogConfig.data.debugConfig)
+		kDebug() << "";
 	bool toplevelHorizontal = dialogConfig.data.getToplevelOrientation() == \
Qt::Horizontal;  _rbHorizontal->setChecked(toplevelHorizontal);
 	_rbVertical->setChecked(!toplevelHorizontal);
@@ -320,11 +321,13 @@ void KMixPrefDlg::updateWidgets()
 void KMixPrefDlg::updateSettings()
 {
 	Qt::Orientation toplevelOrientation = _rbHorizontal->isChecked() ? Qt::Horizontal : \
                Qt::Vertical;
-	kDebug() << "toplevelOrientation" << toplevelOrientation << ", \
_rbHorizontal->isChecked()" << _rbHorizontal->isChecked(); +	if \
(dialogConfig.data.debugConfig) +		kDebug() << "toplevelOrientation" << \
toplevelOrientation << ", _rbHorizontal->isChecked()" << _rbHorizontal->isChecked();  \
dialogConfig.data.setToplevelOrientation(toplevelOrientation);  
 	Qt::Orientation trayOrientation = _rbTraypopupHorizontal->isChecked() ? \
                Qt::Horizontal : Qt::Vertical;
-	kDebug() << "trayOrientation" << trayOrientation << ", \
_rbTraypopupHorizontal->isChecked()" << _rbTraypopupHorizontal->isChecked(); +	if \
(dialogConfig.data.debugConfig) +		kDebug() << "trayOrientation" << trayOrientation \
<< ", _rbTraypopupHorizontal->isChecked()" << _rbTraypopupHorizontal->isChecked();  \
dialogConfig.data.setTraypopupOrientation(trayOrientation);  
     // Announcing MasterChanged, as the sound menu (aka ViewDockAreaPopup) primarily \
shows master volume(s). @@ -355,14 +358,16 @@ bool KMixPrefDlg::hasChanged()
 {
 	bool orientationFromConfigIsHor = dialogConfig.data.getToplevelOrientation() == \
Qt::Horizontal;  bool orientationFromWidgetIsHor = _rbHorizontal->isChecked();
-	kDebug() << "Orientation MAIN fromConfig=" << (orientationFromConfigIsHor ? "Hor" : \
"Vert") << ", fromWidget=" << (orientationFromWidgetIsHor ? "Hor" : "Vert"); +	if \
(dialogConfig.data.debugConfig) +		kDebug() << "Orientation MAIN fromConfig=" << \
(orientationFromConfigIsHor ? "Hor" : "Vert") << ", fromWidget=" << \
(orientationFromWidgetIsHor ? "Hor" : "Vert");  
 	bool changed = orientationFromConfigIsHor ^ orientationFromWidgetIsHor;
 	if (!changed)
 	{
 		bool orientationFromConfigIsHor = dialogConfig.data.getTraypopupOrientation() == \
Qt::Horizontal;  orientationFromWidgetIsHor = _rbTraypopupHorizontal->isChecked();
-		kDebug() << "Orientation TRAY fromConfig=" << (orientationFromConfigIsHor ? "Hor" \
: "Vert") << ", fromWidget=" << (orientationFromWidgetIsHor ? "Hor" : "Vert"); +		if \
(dialogConfig.data.debugConfig) +			kDebug() << "Orientation TRAY fromConfig=" << \
(orientationFromConfigIsHor ? "Hor" : "Vert") << ", fromWidget=" << \
(orientationFromWidgetIsHor ? "Hor" : "Vert");  
 		changed = orientationFromConfigIsHor ^ orientationFromWidgetIsHor;
 	}
@@ -371,7 +376,8 @@ bool KMixPrefDlg::hasChanged()
 		changed = dvc->getModifyFlag();
 	}
 
-	kDebug() << "hasChanged=" << changed;
+	if (dialogConfig.data.debugConfig)
+		kDebug() << "hasChanged=" << changed;
 
 	return changed;
 }
@@ -405,7 +411,8 @@ void KMixPrefDlg::showEvent(QShowEvent * event)
                                           "autostart",
                                       #endif
                                           QString("kmix_autostart.desktop"));
-    kDebug() << "autostartConfigFilename = " << autostartConfigFilename;
+	if (dialogConfig.data.debugConfig)
+	    kDebug() << "autostartConfigFilename = " << autostartConfigFilename;
 	bool autostartFileExists = !autostartConfigFilename.isNull();
 
 	//allowAutostartWarning->setEnabled(autostartFileExists);
diff --git a/gui/viewbase.cpp b/gui/viewbase.cpp
index db12917..d7ce3e9 100644
--- a/gui/viewbase.cpp
+++ b/gui/viewbase.cpp
@@ -406,12 +406,12 @@ ProfControl* ViewBase::findMdw(const QString& mdwId, \
GuiVisibility visibility)  {
 			if (pControl->getVisibility().satisfiesVisibility(visibility))
 			{
-				kDebug() << "  MATCH " << (*pControl).id << " for " << mdwId << " with \
visibility " << pControl->getVisibility().getId() << " to " << visibility.getId(); \
+//				kDebug() << "  MATCH " << (*pControl).id << " for " << mdwId << " with \
visibility " << pControl->getVisibility().getId() << " to " << visibility.getId();  \
return pControl;  }
 			else
 			{
-				kDebug() << "NOMATCH " << (*pControl).id << " for " << mdwId << " with \
visibility " << pControl->getVisibility().getId() << " to " << visibility.getId(); \
+//				kDebug() << "NOMATCH " << (*pControl).id << " for " << mdwId << " with \
visibility " << pControl->getVisibility().getId() << " to " << visibility.getId();  }
 		}
 	} // iterate over all ProfControl entries


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic