Version: 2.6.1 (using KDE 3.5.7, Debian Package 4:3.5.7.dfsg.1-7 (lenny/sid))
Compiler: Target: i486-linux-gnu
OS: Linux (i686) release 2.6.22rs
I use kmilo and I know it sends dcop commands to kmix in order to increase, decrease or mute the master channel volume once the corresponding multimedia keyboard XF86Audio key is pressed.
I usually use master (builtin laptop speakers) or headphones channel as master. When using laptop speaker master channel kmilo raises the volume dialog to show the volume change and changes it as expected, but when I choose headphones as master channel using right click on the kmix systray icon and the "Select master channel.." then kmilo rises the dialog as usual but changes the "Master" volume channel, this is the builtin laptop speaker which are disabled once the headphones are plugged.
I tried setting the global keyboard shortcuts and not use kmilo to test this, but kmix didn't respond to any shortcut I used. I try methods explained at bug #146867 for which this is possibly a dupe. I wasn't sure so feel free to mark this as such.
I remember quite well this was working some time ago, don't remember which KDE version exactly, but maybe 3.5.5.
I plugged gdb to a running kmix and got the following conclusions:
Correct me if I'm wrong but I think kmilo calls increasevolume and decreasevolume dcop methods to do rise and low the volume. The dcop method in turn call the Mixer::increaseVolume and Mixer::decreaseVolume methods that does the actual work. I'll stick to decreaseVolume.
Once the Mixer::decreaseVolume function is called, this calls the Mixer_ALSA::writeVolumeToHW audio backend since it's the alsa backend which is used in my case. In this latter function I can't see any reference to the selected master card channel, neither I could see this in the call flow.
I have tested this using a pure dcop call, since I don't the reason, using the regular kmilo procedure didn't stop the application.
I've been unable to find any development doc for kmix so I don't understand very well it's design and concepts, I'll keep investigating it.
I've also reviewed svn commits to see anything related to this, but the only candidate I saw was 615802 which changes the Mixer_Alsa::getMixerElem but after a debugging session I discarded this. After some morre looking myabe it's about 498015, but haven't check much yet.
I'm available to do further tests and get further conclusions, also for some explanations as how master and channel selection works. What is a PK (_masterDevicePK), BTW? :)
thanks for your report. As fas as I see KMilo calls setAbsoluteVolume() for "normal" Computers. And this is very wrong, as it operates on a fixed control (actually the first control in the list), instead of the Master.
Looking at the history, I see that this bug was introduced in Revision 624936 on Thu Jan 18 13:23:08 2007 UTC by SVN account mueller. It fixes rounding issues as described in https://bugzilla.novell.com/show_bug.cgi?id=234196 , but I still think the KMilo change should be reverted.
I'll move this bug to the product KMilo.
*** Bug 146074 has been marked as a duplicate of this bug. ***
*** Bug 146867 has been marked as a duplicate of this bug. ***
*** This bug has been marked as a duplicate of 134820 ***