Version: (using KDE Devel) Installed from: Compiled sources Compiler: gcc IV OS: Linux The changes applied on 20-04-2005 are leading to KMix crashes during startup. I had to revert back to KMix from 19-04-2005 to have it operate normally. I have attached a backtrace and hope you might be able to solve it. Alsa version is ALSA 1.0.9rc2 release.
Created attachment 10745 [details] Illustration.
Thanks for your feedback. KMix is currently undergoing a big internal cleanup. I just commited a new version to CVS HEAD. I would be grateful if you could test that version and report back. Thanks, Christian
Still crashing. bash-3.00$ gdb kmix GNU gdb 6.3 Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". (gdb) set args --nofork (gdb) run Starting program: /opt/kde/bin/kmix --nofork [Thread debugging using libthread_db enabled] [New Thread 16384 (LWP 16707)] Qt: gdb: -nograb added to command-line options. Use the -dograb option to enforce grabbing. kmix: IN MixerToolBox::initMixer() kmix: IN Mixer_ALSA snd_mixer_open() kmix: OUT Mixer_ALSA snd_mixer_open() kmix: Trying ALSA Device 'hw:0': found kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA snd_mixer_open() kmix: OUT Mixer_ALSA snd_mixer_open() kmix: Trying ALSA Device 'hw:0': found kmix: Trying ALSA Device 'hw:1': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:2': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:3': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:4': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:5': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:6': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:7': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:8': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:9': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:10': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:11': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:12': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:13': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:14': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:15': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:16': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:17': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:18': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Trying ALSA Device 'hw:19': not found: snd_ctl_open err=No such file or directory kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: IN Mixer_ALSA::close() kmix: OUT Mixer_ALSA::close() kmix: Sound drivers supported: ALSA + OSS Sound drivers used: ALSA kmix: OUT MixerToolBox::initMixer() kmix: simple.c:1415: snd_mixer_selem_has_playback_volume: Assertion `elem->type == SND_MIXER_ELEM_SIMPLE' failed. Program received signal SIGABRT, Aborted. [Switching to Thread 16384 (LWP 16707)] 0xb7e02a91 in kill () from /lib/libc.so.6 (gdb) bt full #0 0xb7e02a91 in kill () from /lib/libc.so.6 No symbol table info available. #1 0xb6f33f31 in pthread_kill () from /lib/libpthread.so.0 No symbol table info available. #2 0xb6f342b6 in raise () from /lib/libpthread.so.0 No symbol table info available. #3 0xb7e027f8 in raise () from /lib/libc.so.6 No symbol table info available. #4 0xb7e03df0 in abort () from /lib/libc.so.6 No symbol table info available. #5 0xb7dfc076 in __assert_fail () from /lib/libc.so.6 No symbol table info available. #6 0xb6fb4357 in snd_mixer_selem_has_playback_volume () from /usr/lib/libasound.so.2 No symbol table info available. #7 0xb7f4198e in Mixer_ALSA::readVolumeFromHW (this=0x80df908, mixerIdx=38, volume=@0x80ed0c8) at mixer_alsa9.cpp:655 elem_sw = -1208808285 left = -1074336856 right = 135188640 elem = (snd_mixer_elem_t *) 0x8103b00 #8 0xb7f436b8 in Mixer::readSetFromHW (this=0x80df890) at mixer.cpp:263 vol = (Volume &) @0x80ed0c8: {static _channelMaskEnum = {1, 2, 4, 8, ---Type <return> to continue, or q <return> to quit--- 16, 32, 64, 128, 256, 512}, _muted = false, _chmask = 3, _volumes = { 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0}, _maxVolume = 65535, _minVolume = 0, _maxVolumeRec = 65535, _minVolumeRec = 0} updated = true md = (class MixDevice *) 0x80ed0a0 #9 0xb7f44639 in Mixer::qt_invoke (this=0x80df890, _id=2, _o=0xbff6ec70) at mixer.moc:136 No locals. #10 0xb732b44f in QObject::activate_signal (this=0x80df968, clist=0x80df830, o=0xbff6ec70) at kernel/qobject.cpp:2355 object = (class QObject *) 0x80df890 sol = (QSenderObjectList *) 0x80dfb38 oldSender = (class QObject *) 0x0 c = (QConnection *) 0x80dfb10 #11 0xb732b2f2 in QObject::activate_signal (this=0x80df968, signal=2) at kernel/qobject.cpp:2324 clist = (QConnectionList *) 0x80df830 o = {{type = 0xb77d76a0, payload = {b = false, c = 0 '\0', s = 19968, i = -1216590336, l = -1216590336, uc = 0 '\0', us = 19968, ui = 3078376960, ul = 3078376960, f = -1.50385313e-05, d = -1.4327475707440271, byte = "\000N|·\210ìö¿\002\033`·\200\000\000", bytearray = {data = 0xb77c4e00 "(\027y", size = 3220630664}, ptr = 0xb77c4e00, voidstar = {ptr = 0xb77c4e00, owner = 136}, ---Type <return> to continue, or q <return> to quit--- charstar = {ptr = 0xb77c4e00 "(\027y", owner = 136}, utf8 = { ptr = 0xb77c4e00 "(\027y", owner = 136}, local8bit = { ptr = 0xb77c4e00 "(\027y", owner = 136}, iface = 0xb77c4e00, idisp = 0xb77c4e00}}} #12 0xb768ba98 in QTimer::timeout (this=0x80df968) at .moc/debug-shared-mt/moc_qtimer.cpp:82 No locals. #13 0xb7350046 in QTimer::event (this=0x80df968, e=0xbff6ef00) at kernel/qtimer.cpp:219 No locals. #14 0xb72c87f1 in QApplication::internalNotify (this=0x8051630, receiver=0x80df968, e=0xbff6ef00) at kernel/qapplication.cpp:2635 consumed = false handled = false #15 0xb72c7d32 in QApplication::notify (this=0x8051630, receiver=0x80df968, e=0xbff6ef00) at kernel/qapplication.cpp:2358 res = false #16 0xb7942a33 in KApplication::notify (this=0x8051630, receiver=0x80df968, event=0xbff6ef00) at kapplication.cpp:549 t = Timer #17 0xb7f346f6 in QApplication::sendEvent (receiver=0x80df968, event=0xbff6ef00) at qapplication.h:491 No locals. ---Type <return> to continue, or q <return> to quit--- #18 0xb72b707a in QEventLoop::activateTimers (this=0x808da70) at kernel/qeventloop_unix.cpp:556 e = {<QEvent> = {<Qt> = {static color0 = @0xb77d5e00, static color1 = @0xb77d5e08, static black = @0xb77d5e10, static white = @0xb77d5e18, static darkGray = @0xb77d5e20, static gray = @0xb77d5e28, static lightGray = @0xb77d5e30, static red = @0xb77d5e38, static green = @0xb77d5e40, static blue = @0xb77d5e48, static cyan = @0xb77d5e50, static magenta = @0xb77d5e58, static yellow = @0xb77d5e60, static darkRed = @0xb77d5e68, static darkGreen = @0xb77d5e70, static darkBlue = @0xb77d5e78, static darkCyan = @0xb77d5e80, static darkMagenta = @0xb77d5e88, static darkYellow = @0xb77d5e90, static arrowCursor = @0xb77d44c0, static upArrowCursor = @0xb77d44c4, static crossCursor = @0xb77d44c8, static waitCursor = @0xb77d44cc, static ibeamCursor = @0xb77d44d0, static sizeVerCursor = @0xb77d44d4, static sizeHorCursor = @0xb77d44d8, static sizeBDiagCursor = @0xb77d44dc, static sizeFDiagCursor = @0xb77d44e0, static sizeAllCursor = @0xb77d44e4, static blankCursor = @0xb77d44e8, static splitVCursor = @0xb77d44ec, static splitHCursor = @0xb77d44f0, static pointingHandCursor = @0xb77d44f4, static forbiddenCursor = @0xb77d44f8, static whatsThisCursor = @0xb77d44fc, static busyCursor = @0xb77d4500}, ---Type <return> to continue, or q <return> to quit--- _vptr.QEvent = 0xb7792898, t = Timer, posted = 0, spont = 0}, id = 126} n_act = 1 begin = (TimerInfo *) 0x810b490 first = false currentTime = {tv_sec = 1115402566, tv_usec = 266442} maxCount = 0 t = (TimerInfo *) 0x810b490 #19 0xb726e762 in QEventLoop::processEvents (this=0x808da70, flags=4) at kernel/qeventloop_x11.cpp:389 nevents = 0 locker = {mtx = 0x8083728} canWait = true nsel = 0 event = {type = 28, xany = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73}, xkey = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, root = 346, subwindow = 59775621, time = 0, x = 576, y = 345, x_root = 0, y_root = 39846335, state = 0, keycode = 0, same_screen = 0}, xbutton = { type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, root = 346, subwindow = 59775621, time = 0, x = 576, y = 345, x_root = 0, y_root = 39846335, state = 0, button = 0, same_screen = 0}, xmotion = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, root = 346, subwindow = 59775621, time = 0, x = 576, y = 345, ---Type <return> to continue, or q <return> to quit--- x_root = 0, y_root = 39846335, state = 0, is_hint = 0 '\0', same_screen = 0}, xcrossing = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, root = 346, subwindow = 59775621, time = 0, x = 576, y = 345, x_root = 0, y_root = 39846335, mode = 0, detail = 0, same_screen = 0, focus = 0, state = 0}, xfocus = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, mode = 346, detail = 59775621}, xexpose = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, x = 346, y = 59775621, width = 0, height = 576, count = 345}, xgraphicsexpose = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, drawable = 73, x = 346, y = 59775621, width = 0, height = 576, count = 345, major_code = 0, minor_code = 39846335}, xnoexpose = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, drawable = 73, major_code = 346, minor_code = 59775621}, xvisibility = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, state = 346}, xcreatewindow = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, parent = 73, window = 346, x = 59775621, y = 0, width = 576, height = 345, border_width = 0, override_redirect = 39846335}, xdestroywindow = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346}, xunmap = { type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346, from_configure = 59775621}, xmap = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, ---Type <return> to continue, or q <return> to quit--- window = 346, override_redirect = 59775621}, xmaprequest = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, parent = 73, window = 346}, xreparent = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346, parent = 59775621, x = 0, y = 576, override_redirect = 345}, xconfigure = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346, x = 59775621, y = 0, width = 576, height = 345, border_width = 0, above = 39846335, override_redirect = 0}, xgravity = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346, x = 59775621, y = 0}, xresizerequest = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, width = 346, height = 59775621}, xconfigurerequest = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, parent = 73, window = 346, x = 59775621, y = 0, width = 576, height = 345, border_width = 0, above = 39846335, detail = 0, value_mask = 0}, xcirculate = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, event = 73, window = 346, place = 59775621}, xcirculaterequest = { type = 28, serial = 4107, send_event = 0, display = 0x8051718, parent = 73, window = 346, place = 59775621}, xproperty = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, atom = 346, time = 59775621, state = 0}, xselectionclear = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, selection = 346, time = 59775621}, xselectionrequest = {type = 28, ---Type <return> to continue, or q <return> to quit--- serial = 4107, send_event = 0, display = 0x8051718, owner = 73, requestor = 346, selection = 59775621, target = 0, property = 576, time = 345}, xselection = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, requestor = 73, selection = 346, target = 59775621, property = 0, time = 576}, xcolormap = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, colormap = 346, c_new = 59775621, state = 0}, xclient = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, message_type = 346, format = 59775621, data = { b = "\000\000\000\000@\002\000\000Y\001\000\000\000\000\000\000¿\001`\002", s = {0, 0, 576, 0, 345, 0, 0, 0, 447, 608}, l = {0, 576, 345, 0, 39846335}}}, xmapping = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, request = 346, first_keycode = 59775621, count = 0}, xerror = {type = 28, display = 0x100b, resourceid = 0, serial = 134551320, error_code = 73 'I', request_code = 0 '\0', minor_code = 0 '\0'}, xkeymap = {type = 28, serial = 4107, send_event = 0, display = 0x8051718, window = 73, key_vector = "Z\001\000\000\205\032\220\003\000\000\000\000@\002\000\000Y\001\000\000\000\000\000\000¿\001`\002\000\000\000"}, pad = {28, 4107, 0, 134551320, 73, 346, 59775621, 0, 576, 345, 0, 39846335, 0 <repeats 12 times>}} exclude_all = 10 zerotm = {tv_sec = 0, tv_usec = 0} ---Type <return> to continue, or q <return> to quit--- tm = (timeval *) 0xb77d5cd0 highest = 11 #20 0xb72dcca3 in QEventLoop::enterLoop (this=0x808da70) at kernel/qeventloop.cpp:198 old_exitloop = false #21 0xb72dcbbe in QEventLoop::exec (this=0x808da70) at kernel/qeventloop.cpp:145 No locals. #22 0xb72c895d in QApplication::exec (this=0x8051630) at kernel/qapplication.cpp:2758 No locals. #23 0xb7f2a3ef in kdemain (argc=2, argv=0xbff6f254) at main.cpp:66 aboutData = {mAppName = 0xb7f4fc19 "kmix", mProgramName = 0xb7f4fc14 "KMix", mVersion = 0xb7f4fc0e "2.4-1", mShortDescription = 0xb7f4fe80 "KMix - KDE's full featured mini mixer", mLicenseKey = 1, mCopyrightStatement = 0xb7f4fb54 "(c) 1996-2000 Christian Esken\n(c) 2000-2003 Christian Esken, Stefan Schimanski\n(c) 2002-2003 Christian Esken, Helio Chissini de Castro\n(c) 2004 Christian Esken, Helio Chissini de Castro", mOtherText = 0x0, mHomepageAddress = 0x0, mBugEmailAddress = 0xb7f4fb40 "submit@bugs.kde.org", mAuthorList = { sh = 0x804e608}, mCreditList = {sh = 0x804e638}, mLicenseText = 0x0, d = 0x804e668} ---Type <return> to continue, or q <return> to quit--- app = (class KMixApp *) 0x8051630 ret = -1074335296 #24 0x080484b2 in main (argc=2, argv=0xbff6f254) at kmix.la.cpp:2 No locals. (gdb)
SVN commit 410177 by esken: Revert the trivial getMixerElem() implementation. Bug 104376 indicates that there are problems with it, showing the ALSA assertion: simple.c:1415: snd_mixer_selem_has_playback_volume: Assertion `elem->type == SND_MIXER_ELEM_SIMPLE' failed. Most likely these problems are only with special contols, like the routing controls found on Audigy and other modern cards. CCBUGS:104376 M +4 -4 trunk/KDE/kdemultimedia/kmix/mixer_alsa.h M +14 -5 trunk/KDE/kdemultimedia/kmix/mixer_alsa9.cpp --- trunk/KDE/kdemultimedia/kmix/mixer_alsa.h #410176:410177 @@ -31,10 +31,10 @@ snd_mixer_elem_t* getMixerElem(int devnum); virtual QString errorText(int mixer_error); - //typedef QValueList<snd_mixer_selem_id_t *>AlsaMixerSidList; - //AlsaMixerSidList mixer_sid_list; - typedef QValueList<snd_mixer_elem_t *> AlsaMixerElemList; - AlsaMixerElemList mixer_elem_list; + typedef QValueList<snd_mixer_selem_id_t *>AlsaMixerSidList; + AlsaMixerSidList mixer_sid_list; + typedef QValueList<snd_mixer_elem_t *> AlsaMixerElemList; // !! remove + AlsaMixerElemList mixer_elem_list; // !! remove bool _initialUpdate; snd_mixer_t *_handle; --- trunk/KDE/kdemultimedia/kmix/mixer_alsa9.cpp #410176:410177 @@ -190,11 +190,12 @@ // ...but we still want to insert a null value into our mixer element // list so that the list indexes match up. mixer_elem_list.append( 0 ); + mixer_sid_list.append( 0 ); continue; } - //sid = (snd_mixer_selem_id_t*)malloc(snd_mixer_selem_id_sizeof()); // I believe *we* must malloc it for ourself + sid = (snd_mixer_selem_id_t*)malloc(snd_mixer_selem_id_sizeof()); // I believe *we* must malloc it for ourself snd_mixer_selem_get_id( elem, sid ); bool canRecord = false; @@ -226,7 +227,7 @@ cc = MixDevice::ENUM; vol = new Volume(); // Dummy, unused mixer_elem_list.append( elem ); - //mixer_sid_list.append( sid ); + mixer_sid_list.append( sid ); // --- get Enum names START --- int numEnumitems = snd_mixer_selem_get_enum_items(elem); @@ -273,7 +274,7 @@ * it will be created with maxVolume == 0 && minVolume == 0 */ vol = new Volume( chn, maxVolumePlay, minVolumePlay, maxVolumeRec, minVolumeRec ); mixer_elem_list.append( elem ); - //mixer_sid_list.append( sid ); + mixer_sid_list.append( sid ); if ( snd_mixer_selem_has_playback_switch ( elem ) ) { //kdDebug(67100) << "has_playback_switch()" << endl; @@ -381,6 +382,7 @@ } mixer_elem_list.clear(); + mixer_sid_list.clear(); m_mixDevices.clear(); kdDebug(67100) << "OUT Mixer_ALSA::close()" << endl; @@ -389,21 +391,28 @@ snd_mixer_elem_t* Mixer_ALSA::getMixerElem(int devnum) { -/* snd_mixer_elem_t* elem = 0; if ( int( mixer_sid_list.count() ) > devnum ) { snd_mixer_selem_id_t * sid = mixer_sid_list[ devnum ]; + // The next line (hopefully) only finds selem's, not elem's. elem = snd_mixer_find_selem(_handle, sid); if ( elem == 0 ) { + // !! Check, whether the warning should be omitted. Probably + // Route controls are non-simple elements. kdDebug(67100) << "Error finding mixer element " << devnum << endl; } } return elem; -*/ +/* + I would have liked to use the following trivial implementation instead of the + code above. But it will also return elem's. which are not selem's. As there is + no way to check an elem's type (e.g. elem->type == SND_MIXER_ELEM_SIMPLE), callers + of getMixerElem() cannot check the type. :-( snd_mixer_elem_t* elem = mixer_elem_list[ devnum ]; return elem; + */ } bool Mixer_ALSA::prepareUpdateFromHW() {
Ali, thanks for the detailed feedback. I have possibly identified and fixed the problem. You can either apply the patch as seen in comment 4, or you can update your checked out sources. Attention: The changes are NOT in CVS, but you would need to checkout from the new Subversion repository.
Yep, I am on SVN TRUNK already. Thanks this seem to work perfectly now. Btw: I have a SB Live 5.1
reopening to close with proper status
*** Bug has been marked as fixed ***.