[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#464070: kmilo use old dcop calls



Package: kmilo
Version: 4:3.5.8-1
Severity: normal
Tags: patch

kmilo fails to work properly on some case because it uses old dcop calls to
control the master volume.

The funny thing is that the bug seems to be present only in the code of the
generic case, and not present int the code for specific case like dell,
vaio or thinkpad laptops.

Here is a patch to fix this behaviour, it works perfectly on my laptop.

Cheers,

--
Emmanuel Bouthenot

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.23-1-686 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages kmilo depends on:
ii  kdelibs4c2a            4:3.5.8.dfsg.1-7  core libraries and binaries for al
ii  libc6                  2.7-6             GNU C Library: Shared libraries
ii  libgcc1                1:4.3-20080127-1  GCC support library
ii  libice6                2:1.0.4-1         X11 Inter-Client Exchange library
ii  libpng12-0             1.2.15~beta5-3    PNG library - runtime
ii  libqt3-mt              3:3.3.7-9         Qt GUI Library (Threaded runtime v
ii  libsm6                 2:1.0.3-1+b1      X11 Session Management library
ii  libstdc++6             4.3-20080127-1    The GNU Standard C++ Library v3
ii  libx11-6               2:1.0.3-7         X11 client-side library
ii  libxext6               1:1.0.3-2         X11 miscellaneous extension librar
ii  libxtst6               2:1.0.3-1         X11 Testing -- Resource extension 
ii  zlib1g                 1:1.2.3.3.dfsg-11 compression library - runtime

kmilo recommends no packages.

-- no debconf information
diff -Naur kdeutils-3.5.8/kmilo/generic/generic_monitor.cpp kdeutils-3.5.8-new/kmilo/generic/generic_monitor.cpp
--- kdeutils-3.5.8/kmilo/generic/generic_monitor.cpp	2007-05-14 07:40:46.000000000 +0000
+++ kdeutils-3.5.8-new/kmilo/generic/generic_monitor.cpp	2008-02-04 22:15:04.651307492 +0000
@@ -47,8 +47,6 @@
 
 	m_mute = false;
 	m_progress = 0;
-	m_minVolume = 0;
-	m_maxVolume = 100;
 	m_volume = 50;
 }
 
@@ -92,7 +90,7 @@
 {
 	bool kmix_error = false;
 
-	DCOPReply reply = kmixClient->call("absoluteVolume", 0);
+	DCOPReply reply = kmixClient->call("masterVolume");
 	if (reply.isValid())
 		m_volume = reply;
 	else
@@ -104,7 +102,7 @@
 		if (kapp->startServiceByDesktopName("kmix")==0) // trying to start kmix
 		{
 			// trying again
-			reply = kmixClient->call("absoluteVolume", 0);
+			reply = kmixClient->call("masterVolume");
 			if (reply.isValid()) 
 			{
 				m_volume = reply;
@@ -122,10 +120,6 @@
 		
 		return false;
 	} else {
-		reply = kmixClient->call("absoluteVolumeMax", 0);
-		m_maxVolume = reply;
-		reply = kmixClient->call("absoluteVolumeMin", 0);
-		m_minVolume = reply;
 		return true;
 	}
 }
@@ -134,11 +128,11 @@
 {	
 	if (!retrieveVolume())
 		return;
-
-	m_volume += (int)((m_maxVolume - m_minVolume) * step /100) +1;
-	if (m_volume > m_maxVolume)
-		m_volume = m_maxVolume;
-
+	
+	m_volume += step;
+	if (m_volume > 100)
+		m_volume = 100;
+	
 	displayVolume();
 }
 
@@ -147,10 +141,10 @@
 	if (!retrieveVolume())
 		return;
 
-	m_volume -= (int)((m_maxVolume - m_minVolume) * step /100) +1;
-	if (m_volume < m_minVolume)
-		m_volume = m_minVolume;
-							 
+	m_volume -= step;
+	if (m_volume < 0)
+		m_volume = 0;
+	
 	displayVolume();
 }
 
@@ -161,12 +155,11 @@
 
 void GenericMonitor::displayVolume()
 {
-	_interface->displayProgress(i18n("Volume"), (int)(m_volume * 100 / (m_maxVolume - m_minVolume)));
-
+	_interface->displayProgress(i18n("Volume"), m_volume);
 	// If we got this far, the DCOP communication with kmix works,
 	// so we don't have to test the result.
-	kmixClient->send("setAbsoluteVolume", 0, m_volume);
-
+	kmixClient->send("setMasterVolume", m_volume);
+	
 	// if mute then unmute
 	if (m_mute)
 	{
diff -Naur kdeutils-3.5.8/kmilo/generic/generic_monitor.h kdeutils-3.5.8-new/kmilo/generic/generic_monitor.h
--- kdeutils-3.5.8/kmilo/generic/generic_monitor.h	2007-05-14 07:40:46.000000000 +0000
+++ kdeutils-3.5.8-new/kmilo/generic/generic_monitor.h	2008-02-04 22:14:33.151808870 +0000
@@ -75,11 +75,9 @@
 	DCOPRef *kmixClient, *kmixWindow;
 
 	int m_progress;
-	long m_volume, m_oldVolume;
+	int m_volume, m_oldVolume;
 	bool m_mute;
-
-	long m_maxVolume, m_minVolume;
-
+	
 	Monitor::DisplayType m_displayType;
 };
 

Reply to: