# # ChangeLog for /trunk # # Generated by Trac 0.10.4 # 03/28/24 09:58:08 # 02/11/18 01:43:53 jwoithe [2763] * trunk/libffado/support/tools/ffado-diag.in (modified) ffado-diag: correct regex used to find firewire controllers in lspci output. The previous re.findall() regex expected the PCI bus ID to be within literal parentheses, while the intent was probably to specify a subexpression (or "group" as python calls it). When a subexpression (group) is included in the regex passed to re.findall(), the values produced re.findall() are the contents of the subexpression. A call to the group() method is not required. These changes have been tested on python2. 02/11/18 01:17:48 jwoithe [2762] * trunk/libffado/SConstruct (modified) SConstruct: correct install rule for ffado-mixer.appdata.xml. The wrong source filename was inadvertently referenced in the install rule added in r2756. 02/09/18 19:38:53 jwoithe [2761] * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (modified) ffado-mixer.appdata.xml: fix a typo in the caption. Thanks to Jano Svitok for noticing it. 02/09/18 04:30:13 jwoithe [2760] * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (modified) ffado-mixer.appdata.xml: add "OR GPLv3" to project licence. Jano Svitok has determined that the project licence field of the appdata file can specify multiple licences separated with "OR". I haven't yet seen that in the appdata specification documentation but apparently it passes the validator. Since many files in FFADO are currently GPLv2 or GPLv3 (without the "or later" clause) it is fair to add "OR GPL-3.0" to the project licence field for the moment. Following the next release, the licence comments in some FFADO files should be cleaned up to ensure consistency across the project. Thanks to Jano for the patch (via ffado-devel). 02/09/18 04:24:12 jwoithe [2759] * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (modified) ffado-mixer.appdata.xml: Shorten screenshot caption. Jano Svitok informs us (via ffado-devel) that the screenshot captions in appdata files are apparently limited to 50 characters. This contradicts the advice given at https://www.freedesktop.org/software/appstream/docs/chap- Quickstart.html which states the limit is 180. Oh well, if the limit is 50 that's what we have to run with. Thanks to Jano for the information. 02/09/18 02:54:33 jwoithe [2758] * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (modified) ffado-mixer.appdata.xml: add a screenshot. According to the appdata specification at least one screenshot must be supplied. This patch adds a URL to such a screenshot. A single screenshot will do for now: since the appearance varies significantly depending on the audio interface in use there isn't a lot of point in providing too many detailed screenshots. 02/08/18 22:00:15 jwoithe [2757] * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (modified) ffado-mixer.appdata.xml: fix project licence identifier. While the table at http://spdx.org/licenses/ indicates that "GLP-2.0-only" is the appropriate tag for GPLv2 software, an alternative specification at https://spdx.org/spdx-specification-21-web-version#h.1jlao46 says otherwise. The "appstream-util validate" command on Fedora reports "GPL-2.0-only" as invalid, so we'll run with "GPL-2.0" instead. Thanks to Orcan Ogetbil for running the appstream-util on his system and pointing out the URL with the alternative SPDX licence identifier definitions. 02/08/18 03:29:13 jwoithe [2756] * trunk/libffado/SConstruct (modified) * trunk/libffado/support/xdg/ffado-mixer.appdata.xml (added) Add support for a ffado-mixer.appdata.xml file. Distributions are starting to rely on appdata files to present applications in package management systems. Add an appdata file for ffado-mixer since this is the only significant component of FFADO which counts as a user application. Thanks to Orcan Ogetbil for raising the issue on ffado- devel and providing an initial appdata file. For the moment this appdata file contains no screenshot, mostly because the screen content is dependent on the firewire interface in use at the time. We may revisit this in future if there's a call to do so. 02/06/18 22:02:50 jwoithe [2755] * trunk/libffado/version.h.in (modified) version.h: remove possible trailing dash from version number defines. Even after the changes in r2754, an unversioned source tree or a lack of svnversion on the build system will cause version.h to include entries like #define PACKAGE_VERSION "2.4.999-" This patch from Orcan Ogetbil gets rid of the trailing dash. The use of REVISIONSTRING rather than REVISION mirrors how ffado-diag obtains its revision number. 02/05/18 04:00:38 jwoithe [2754] * trunk/libffado/SConstruct (modified) SConstruct: allow for unversioned source directory. When FFADO is compiled from a distribution archive the source tree is not under version control. This results in strings like libffado 2.4.0-Unversioned directory appearing in the ffado-mixer "About" dialog box and ffado-diag. This problem was reported by Orcan Ogetbil on ffado-devel. Fix this by assuming that an unversioned directory is a release, thereby not requiring revision information in this case. An unversioned directory is detected by the appearance of "Unversioned" at the start of svnversion's output (as suggested by Orcan. Version information (which is determined separately) remains unchanged. A related corner case is when svnversion is not present on the build system. In this case the REVISION string will be empty (albeit with some pollution of stderr output to the terminal) so no additional action is required so long as an empty REVISION is considered acceptable. At this stage it seems fair: if svnversion (a component of subversion) is not present it's unlikely that the source tree has been checked out of svn. 02/05/18 03:31:26 jwoithe [2753] * trunk/libffado/SConstruct (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/SConscript (modified) static_info.txt: install under LIBDIR/libffado/ rather than PYTHONDIR/. PYTHONDIR is usually located in a share hierarchy which (according to the fhs) should contain architecture-independent data. To address this, introduce the LIBDATADIR directory (which defaults to LIBDIR/libffado/) and place static_info.txt there instead. Being under LIBDIR, architecture- dependent data can be placed there. Since information about libraries and paths is included in static_info.txt it clearly falls into the architecture-dependent category. Patch by Nicolas Boulenguez with minor changes by Jonathan Woithe. 02/05/18 02:25:05 jwoithe [2752] * trunk/libffado/support/tools/ffado-diag-static (deleted) * trunk/libffado/support/tools/ffado_diag_helpers.py (deleted) * trunk/libffado/support/tools/helpstrings.py (deleted) * trunk/libffado/support/tools/listirqinfo.py (deleted) Remove support files obsoleted by r2751. These files were inadvertently left in place when r2751 was committed. 02/03/18 00:30:56 jwoithe [2751] * trunk/libffado/support/tools/ffado-diag.1 (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/SConscript (modified) Simplify and optimize ffado-diag.in. Executing ffado-diag after preprocessing ensures that the shebang python version is used without keeping SConscript in sync with ffado- diag.in. Merging all *.py modules into a single script will help any contributor figuring the big picture, and spares the sys.path trick. The rewrite is more resilient to missing dependencies, and hopefully more readable. Patch contributed by Nicolas Boulenguez with minor adjustments by Jonathan Woithe. It has been tested under python3 and python2. 01/31/18 15:41:51 jwoithe [2750] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) Add comment explaining the "__future__" print_function imports. While Python 2.7 natively supports the print() function syntax of Python3, it is convenient to also make use of the "print(..., end='')" feature. This is not available under Python2 by default, but can be accessed in Python2 by way of the "from __future__ import print_function" statement. Include a brief comment to this effect in the relevant source files to make the purpose of the "__future__" import clear in future when the need for such lines might be deemed unnecessary. 01/31/18 02:47:36 jwoithe [2749] * trunk/libffado/support/tools/SConscript (modified) [PATCH 13/13] Run ffado-diag-static with PYTHON_INTERPRETER. From Nicolas Boulenguez. 01/31/18 02:45:59 jwoithe [2748] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) [PATCH 12/13] ffado-diag: tolerate python3 or missing external tools. From Nicolas Boulenguez. 01/31/18 02:21:58 jwoithe [2747] * trunk/libffado/SConstruct (modified) [PATCH 11/13] improve r2725 (allow BUILD_MIXER with qt5). From Nicolas Boulenguez. This version is both more efficient (which pyuic* is executed only once) and readable (there is a single alternative with two branches). 01/31/18 02:19:30 jwoithe [2746] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado-sandbox-install.py (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) [PATCH 10/13] tools: Fix python file indents in a separate commit. From Nicolas Boulenguez. 01/31/18 02:17:49 jwoithe [2745] * trunk/libffado/support/tools/ffado-sandbox-install.py (modified) [PATCH 09/13] tools: sandbox-install: use context managers for log files. From Nicolas Boulenguez. 01/31/18 02:16:45 jwoithe [2744] * trunk/libffado/support/tools/ffado-diag.in (modified) [PATCH 08/13] Let ffado-diag go on if static_info.txt is not installed. From Nicolas Boulenguez. The static_info.txt file contains locale- and architecture-dependent data. It prevents reproducible builds, and should probably move to /usr/lib/ARCH instead of /usr/share. Some distributors may want to remove it from their packages. 01/31/18 02:14:24 jwoithe [2743] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado-sandbox-install.py (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) [PATCH 07/13] Switch to recent python structures, attempting python2&3 compatibility. From Nicolas Boulenguez. * Use subprocess, context managers and file iterators when possible. * Python can open files, rename files, glob directories, remove directories, grep lines without subprocesses. * sandbox-install: - os.path is used, not only os. - trick to handle renaming of raw_input by python3 * Some changes require indentation changes. They are in next commit. * int ("1") is more readable, faster than eval ("1"). It also provides more accurate error messages. * documentation says that "a in b" should be preferred to "b.find (a) > -1". * For functions checking that each name of a list is available, we may conclude at first failure. * check_1394oldstack_devnode_permissions assumed that open() returns 0 on failure as in C, while it raises an exception. 01/31/18 00:41:31 jwoithe [2742] * trunk/libffado/support/tools/ffado-diag.in (modified) [PATCH 06/13] tools: use print in a way compatible with python3. From Nicolas Boulenguez. Somehow these print() calls were missed in the earlier patches which dealt with the issue in other locations throughout the code base. 01/31/18 00:39:32 jwoithe [2741] * trunk/libffado/support/tools/ffado-diag-static (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) [PATCH 05/13] tools: make helpers from shared parts of ffado-diag.in and -static.py. From Nicolas Boulenguez. 01/31/18 00:22:28 jwoithe [2740] * trunk/libffado/support/tools/listirqinfo.py (modified) [PATCH 04/13] tools: listirqinfo: avoid creating a temporary list. A function call can also be eliminated as a result. From Nicolas Boulenguez 01/31/18 00:19:47 jwoithe [2739] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) [PATCH 03/13] python tools: simplify listirqinfo. * A full import and calls with dot notation allows reference searchs. The previous import from listirqinfo in ffado-diag refers to 3 functions but only one is used. * __str__() and str() introduce unneeded complexity. * import os is not used. * subprocess module is available since python2.4. * Reading a file from python is easier and more readable than spawning a cat command. From Nicolas Boulenguez. 01/31/18 00:16:26 jwoithe [2738] * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/helpstrings.py (modified) [PATCH 02/13] python tools: simplify helpstrings. From Nicolas Boulenguez. 01/31/18 00:10:14 jwoithe [2737] * trunk/libffado/support/tools/ffado-diag-static (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) * trunk/libffado/support/tools/ffado-sandbox-install.py (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) * trunk/libffado/support/tools/helpstrings.py (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) [PATCH 01/13] python tools: delete trailing whitespaces. From Nicolas Boulenguez. 01/29/18 03:23:31 jwoithe [2736] * trunk/libffado/SConstruct (modified) * trunk/libffado/support/mixer-qt4/ffado-mixer.in (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) Allow python interpreter to be specified at build time. Patch from Nicolas Boulenguez (forwarded to ffado-devel by Benoit Delcour) which allows packagers to directly specify the python interpreter which should be used by FFADO components. This is useful for systems which do not have /usr/bin/python due to only python 3 being installed. 01/29/18 03:08:24 jwoithe [2735] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) Remove executable property and shebang line from ffadowindow.py. This python module is imported by ffado-mixer and as a result does not need to be executable. Similarly it does not require a shebang line. 01/29/18 03:01:46 jwoithe [2734] * trunk/libffado/support/tools/listirqinfo.py (modified) listirqinfo.py does not need to be executable. This python module is imported by ffado-diag but is never executed in its own right. It therefore does not require the execute property, nor does it require the shebang line at the top of the script. 01/29/18 02:32:13 jwoithe [2733] * trunk/libffado/doc/reference.doxygen.in (modified) * trunk/libffado/doc/SConscript (modified) * trunk/libffado/SConstruct (modified) Add build-time control over documentation generation. Up to this point, FFADO documentation has always been generated when doxygen is on the system. Furthermore, the documentation included internal API details which are not of any interest to users of FFADO. This patch from Orcan Ogetbil (via ffado-devel) adds the BUILD_DOC scons parameter which takes one of three values: "none" (don't build any documentation), "user" (build documentation of interest to users of FFADO) and "all" (build all documentation). The default is "none", mostly because Orcan's distribution (Fedora) has traditionally patched doc/reference.doxygen.in to exclude documentation. This is fine since the documentation is not of interest to a vast majority of people. 01/27/18 21:54:17 jwoithe [2732] * trunk/libffado/src/bebob/bebob_dl_mgr.cpp (modified) * trunk/libffado/src/ffadodevice.h (modified) * trunk/libffado/src/fireworks/fireworks_control.cpp (modified) * trunk/libffado/src/libavc/general/avc_unit.cpp (modified) * trunk/libffado/src/libstreaming/StreamProcessorManager.cpp (modified) * trunk/libffado/src/libutil/PosixThread.cpp (modified) * trunk/libffado/src/libutil/Watchdog.cpp (modified) * trunk/libffado/src/rme/rme_avdevice.cpp (modified) Fix typos throughout the source tree. Rectify some long-lived typos in strings throughout the source code. in the FFADO desktop file. This benefits Debian and possibly others. Patch by Nicolas Boulenguez for Debian and provided to FFADO by Benoit Delcour via the ffado-user mailing list. 01/27/18 21:35:50 jwoithe [2731] * trunk/libffado/support/xdg/ffado.org-ffadomixer.desktop (modified) Add "Keywords" entry to desktop file. Include the "Keywords" entry in the FFADO desktop file. This benefits Debian and possibly others. Patch by Nicolas Boulenguez for Debian and provided to FFADO by Benoit Delcour via the ffado-user mailing list. 01/11/18 17:59:30 jwoithe [2730] * trunk/libffado/src/rme/fireface_flash.cpp (modified) RME: fix output fader array overflow. Human readable output fader volumes are stored in the device setting's output_faders array. The RME hardware flash interface requires derived values, which are generated and stored in a separate buffer when needed. This buffer has 32 elements. The last two elements are not fader values, but a flag to indicate that MIDI is active (element 30) and a submix number (element 31). It is suspected that these are for the convience of computer software and are not used by the RME hardware. FFADO does not make use of either element. As a result, only 30 fader values were copied between the flash buffer and the output_faders array. However, this creates a buffer overflow in the output_faders array, since this is defined to have RME_FF800_MAX_CHANNELS elements, and RME_FF800_MAX_CHANNELS is 28. The fix is to use the local "nch" variable as the upper bound on the value conversion loop rather than a fixed value of 30. Unused flash buffer elements will be unread or unwritten, which is acceptable since the relevant flash buffer and fader arrays are always zeroed before use. This issue was flagged by a QA warning in Gentoo and reported to the ffado-devel mailing list by Hector Martin, along with the suggested fix. 01/11/18 17:19:17 jwoithe [2729] * trunk/libffado/support/mixer-qt4/ffado/mixer/audiofire.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/phase88control.py (modified) * trunk/libffado/support/tools/ffado-diag-static (modified) Python3 syntax fixes From Hector Martin via the FFADO-devel mailing list. Fix 3 syntax issues required by python 3: sloppy use of whitespace which python2 was evidently happy with, some missed print() conversions, and an unused import that no longer exists. Tested on Python 2.7, 3.4, 3.5 with Qt5, and Python 2.7 with Qt4. 01/11/18 17:15:12 jwoithe [2728] * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) Crossbar router fix Patch provided by Hector Martin via the FFADO-devel mailing list. From Hector: IIRC this was broken since at least mid last year if not earlier, in PyQt4 too. Tested on Python 2.7, 3.4, 3.5 with Qt5. 01/11/18 17:12:33 jwoithe [2727] * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) Additional Python 3 fixes Apply additional Python 3 fixes from Hector Martin via the FFADO- devel mailing list. The exec() based approach in panelmanager.py no longer works (it is replaced with importlib). Fix what looks like a typo in crossbarrouter.py which just happened to work in Python 2.7 (Hector understands the intent is to avoid negative values, not "negative" keys which are actually strings). Clarify float/truncating division. Tested on Python 2.7, 3.4, 3.5 with Qt5, and Python 2.7 with Qt4. 01/05/18 01:56:40 jwoithe [2726] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) * trunk/libffado/support/mixer-qt4/ffado/logginghandler.py (modified) * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) Further Python3/PyQt5 compatibility fixes, enhance "About" dialog box. This patch was prepared by Orcan Ogetbil on Fedora and tested on that distribution with PyQt4-4.12.1 and PyQt5-5.9.1. It is primarily concerned with additional compatibility between Python2/3 and PyQt4/5. It has also been tested under python 2 with pyqt 4.11.4. Further testing under different python/pyqt environments would be welcomed. An enhancement to the "About" dialog is also included which adds version strings and updates the copyright year range. The patch was submitted to the ffado-devel mailing list. 01/05/18 01:40:19 jwoithe [2725] * trunk/libffado/SConstruct (modified) SCons: fix detection of dbus on PyQt5 systems. The detection of the dbus python modules was qualified on the presence of pyuic4. On systems with only PyQt5 this would obviously fail. Patch from Orcan Ogetbil via the ffado-devel mailing list. r2724 inadvertently included a change to SConstruct to import sys. This is needed since sys.stdout is referenced in some situations (in particular, if jack is not installed in the build environment). This patch was also from Orcan Ogetbil, via the ffado-devel mailing list. 01/05/18 01:33:39 jwoithe [2724] * trunk/libffado/SConstruct (modified) * trunk/libffado/src/rme/rme_avdevice.cpp (modified) * trunk/libffado/src/rme/rme_avdevice.h (modified) RME: ensure byte swap macros are available for all components. The byte swap macros (ByteSwap32() in particular) are required on big-endian architectures for more than just the rme_avdevice module. Including these in the RME device header file is a reasonable way to fix this. Patch from Orcan Ogetbil via the ffado-devel mailing list. 12/23/17 02:46:36 jwoithe [2722] * trunk/libffado/SConstruct (modified) SConstruct: bump trunk version to 2.4.9999 for the next development round. 12/23/17 02:43:57 jwoithe [2720] * trunk/libffado/SConstruct (modified) SConstruct: bump version number to 2.4.0 in preparation for a release. 12/23/17 02:42:59 jwoithe [2719] * trunk/libffado/README (modified) README: update for version 2.4.0. 11/08/17 02:45:42 jwoithe [2718] * trunk/libffado/SConstruct (modified) * trunk/libffado/src/SConscript (modified) * trunk/libffado/support/alsa/SConscript (modified) * trunk/libffado/support/dbus/SConscript (modified) * trunk/libffado/support/firmware/SConscript (modified) * trunk/libffado/support/tools/SConscript (modified) * trunk/libffado/tests/SConscript (modified) * trunk/libffado/tests/systemtests/SConscript (modified) Additional scons3 compatibility fixes (add implicit bytes/string conversions). Within the scons scripts, some of the env[VAR] calls return bytes under scons3. Implicit conversion of bytes to strings has been removed in python3 which necessitates the use of decode() in some instances which expect strings to prevent type mismatch errors. This change does not affect compatibility with scons2. Thanks to Orcan Ogetbil for his scons3 tests and the patch (via the ffado-devel mailing list). 11/06/17 22:56:06 jwoithe [2717] * trunk/libffado/SConstruct (modified) Support the "ppc64le" architecture. The ppc64le is basically the ppc64 architecture operating in little endian mode (to port x86 applications easier). The Fedora build servers are "power8" systems, requiring an extension of the PPC 64-bit test in order to compile with the correct word size. Thanks to Orcan Ogetbil for the patch (via ffado-devel mailing list). 11/06/17 02:22:04 jwoithe [2716] * trunk/libffado/SConstruct (modified) SConstruct: add one more "b" prefix missed from r2715. From Orcan Ogetbil. 11/06/17 02:20:04 jwoithe [2715] * trunk/libffado/SConstruct (modified) SConstruct: add byte-string prefix to prevent TypeErrors in Python3/scons3. Patch from Orcan Ogetbil. 11/06/17 01:54:30 jwoithe [2714] * trunk/libffado/admin/doxygen.py (modified) * trunk/libffado/support/alsa/SConscript (modified) * trunk/libffado/tests/SConscript (modified) Remove some additional "has_key()" calls which were omitted from r2713. 11/06/17 01:44:39 jwoithe [2713] * trunk/libffado/SConstruct (modified) SConstruct: use "in" operator rather than has_key(). The former works in python2 (scons2) and python3 (scons3). Patch from Orcan Ogetbil. 11/06/17 01:36:01 jwoithe [2712] * trunk/libffado/admin/doxygen.py (modified) Fixes for scons3/python3 in doxygen-related scripts. Apply some fixes needed for use under scons3/python3. The resulting code seems to run correctly with scons2 under python2 so there's no obvious reason these can't go in now. Thanks to Orcan Ogetbil for the patch. 11/06/17 01:23:03 jwoithe [2711] * trunk/libffado/SConstruct (modified) * trunk/libffado/support/dbus/SConscript (modified) Use "print()" rather than "print ..." in scons build scripts. As a first step towards potentially supporting scons3, convert print statements into function calls within the scons build scripts so as to be compatible with both scons2 (python2) and scons3 (python3). This change should not affect functionality under scons2; please report any regressions. 11/05/17 21:19:14 jwoithe [2710] * trunk/libffado/src/libutil/PosixMessageQueue.h (modified) Add signal.h include to PosixMessageQueue.h. The src/libutil/PosixMessageQueue.h header file requires that signal.h be explicitly included when compiling under the newer gcc/glibc combination which Fedora is moving to. Thanks to Orcan Ogetbil for the report and patch. 10/12/17 16:11:49 jwoithe [2709] * trunk/libffado/support/mixer-qt4/ffado/mixer/rme.py (modified) rme: correctly save playback and output mixer settings. A cut-and-paste oversight at the time the save/restore code was written resulted in the input matrix values being saved for the playback and output matrix mixers as well. Currect this so the right matrix mixer will be read when writing the respective parts of the saved configuration. Thanks to Vince who reported the symptoms on ffado-devel and identified the cause. 08/26/17 22:07:23 jwoithe [2708] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) saffire_dice: allow for trailing space in ConfigROM model name. Under certain conditions, the model name returned by configrom.getModelName() can include trailing spaces. There is a vague recollection that a change in the kernel or libraw1394 at some point in the past might give rise to this, but no reference can be immediately tracked down. To address this, simply use the rstrip() method to remove trailing white space. This ensures that the code continues to work with or without the trailing white space. This issue caused ffado-mixer to exit with an error complaining that GlobalMute was not defined for the Saffire mixer widget. Due to the unexpected white space, the device name never matched any of the expected names and therefore the appropriate UI file (which created the GlobalMute objects, among many others) was never loaded. Thanks to Dominik Meister for reporting the problem, running further tests to confirm the fundamental cause and suggesting the fix. 08/08/17 03:42:23 jwoithe [2707] * trunk/libffado/src/bebob/bebob_dl_mgr.cpp (modified) Fix compilation of bebob_dl_mgr.cpp. The bebob_dl_mgr.cpp file requires the include of "ffadodevice.h" in order to pick up the definition of ffado_smartptr. Thanks to Jano Svitok for reporting the problem and the solution. 08/07/17 16:39:56 jwoithe [2706] * trunk/libffado/src/libutil/PosixMessageQueue.cpp (modified) PosixMessageQueue: ensure visibility of SIGEV_THREAD declaration. Orcan Ogetbil reported on the ffado-devel list that during the recent Fedora rebuild effort FFADO 2.3.0 failed to compile because SIGEV_THREAD was undeclared. Jano Svitok made the plausible suggestion that signal.h needs to be included explicitly under newer glibc versions. This trivial patch implements this. As of this commit it has not been verified that the problem is fixed with this addition. However, there's no harm done by the change in general and conceptionally the change is consistent with the source file's content given the use of signal-related functionality. 06/06/17 17:01:25 jwoithe [2705] * trunk/libffado/support/mixer-qt4/ffado/dbus_util.py (modified) dbus_util: import DBusQtMainLoop from dbus.mainloop.pyqt5 if dbus.mainloop.qt fails. While "dbus.mainloop.qt" appears to have been present in earlier versions of the PyQt5 dbus modules for compatibility reasons, it seems it has been removed in recent versions. Therefore if use of "dbus.mainloop.qt" fails, try using "dbus.mainloop.pyqt5" instead. This issue was noticed by Xavier Forestier and reported (with the suggested fix) via the ffado-devel mailing list on 6 June 2017. 06/06/17 05:22:20 jwoithe [2704] * trunk/libffado/support/mixer-qt4/ffado-mixer.1 (modified) ffado-mixer: update manpage with information about the "-b" option. Commit r2670 added the "-b" option to ffado-mixer but the manpage was overlooked. This commit adds documentation about the "-b" option to the ffado-mixer manpage. 06/06/17 04:56:21 jwoithe [2703] * trunk/libffado/support/mixer-qt4/ffado/mixer/mackieonyx.py (moved) * trunk/libffado/support/mixer-qt4/ffado/mixer/mackieonyx.ui (moved) mackieonyx: fix mixer module name inconsistency. The name of the python module implementing the Mackie Onyx mixer ("mackie_onyxmixer") was inconsistent with the class name as defined in the "configuration" file ("MackieOnyx"). The class as defined in "mackie_onyxmixer" ("MackieOnyx") was fine though. To avoid causing unnecessary churn in existing "configuration" files, the mixer module was renamed to "mackieonyx", thus matching what is expected in the "configuration" file definition. This name mismatch was spotted by Xavier Forestier, who implemented a slightly different fix in his November 2016 patch set. 06/04/17 00:40:48 jwoithe [2702] * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) ffado_mixer: use graphical icon instead of name for mixer pane if available. From Xavier Forestier's November 2016 patchset. In amongst the Qt5 changes was this code to utilise a device-specific graphical image instead of the textual device model name in the global mixer pane. The only change from Xavier's patch is the omission of a statement to set the nickname placeholder text to the name of the device. The nickname field is present to support a particular feature of some interfaces, so it shouldn't really be repurposed like this. Otherwise there is a high likelihood of it introducing confusion when used with devices which support the nickname feature. FFADO does not currently ship with any device graphics. Contributions are welcome but care will be needed to ensure that copyrighted images from vendors are not used. The use of official images could give an incorrect impression that ffado-mixer is officially sanctioned by the vendors which is not generally the case. 06/04/17 00:23:13 jwoithe [2701] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) ffado-mixer: add device mixers to "View" menu. Xavier Forestier's November 2016 patchset included code which added an entry for each active device's mixer to the "View" menu. For users with a number of different devices this may prove useful. This commits Xavier's original patch was with some minor changes to ensure the guid key is resolvable by setTabVisible() under PyQt4. It has not been tested under PyQt5. 06/03/17 04:58:55 jwoithe [2700] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) ffado_mixer: add a "Themes" submenu to the "View" menu. Xavier Forestier's November 2016 patchset included code to add themes under the "Help" menu which could be selected by the user. The code to do this is relatively simple so there seems little reason to hold it back. The only change compared to the submitted patch is to move the themes to a submenu of the "View" menu since conceptually this is a better place than the top of the "Help" menu. 06/03/17 04:29:20 jwoithe [2699] * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) matrixmixer.py: attempt to deal with UTF8 string changes in python3. PyQt5 under python3 does not implement QString and instead relies on the native python UTF string type. Attempt to deal with this when drawing mixer elements which make use of UTF characters. This has not yet been tested under python3 due to the author not having access to a system with python3, so testing may yet prove that the approach taken in this commit is insufficient. This commit is based on the suggestion from Xavier Forestier in his patch set from November 2016 submitted via the ffado-devel mailing list. 06/03/17 04:17:13 jwoithe [2698] * trunk/libffado/admin/pyuic5.py (added) * trunk/libffado/SConstruct (modified) * trunk/libffado/support/tools/ffado-diag-static (modified) * trunk/libffado/support/tools/ffado-diag.in (modified) A first pass at optionally supporting PyQt5 in the build system. This is an initial implementation of changes in the build system to support the use of PyQt5 when building ffado-mixer. They are based on the patch set submitted to ffado-devel by Xavier Forestier in November 2016. However, rather than removing PyQt4 support, the idea is that either PyQt4 or PyQt5 can be used. This patch has been tested on a machine with only PyQt4 installed. Testing with only PyQt5 is yet to be done (the author presently does not have access to such a system). It is not known how well this patch will work on a machine with both PyQt4 and PyQt5 installed. r2694 assumes that PyQt4 will be used in this situation on the basis that it has had the most testing, but it's unclear whether the build system will select pyuic4 over pyuic5 in this case. Further testing will be required, and adjustments will be made if problems are found. 06/03/17 04:01:17 jwoithe [2697] * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) ffado_diag_helpers.py: get_version_first_line(): print "Not found" if the command is available. Previously a shell error message would be shown which may be a little misleading in some situations. 06/03/17 01:34:29 jwoithe [2696] * trunk/libffado/support/mixer-qt4/ffado/import_pyqt.py (modified) import_pyqt.py: make licence format consistent with the rest of FFADO. 06/03/17 01:33:37 jwoithe [2695] * trunk/libffado/support/mixer-qt4/ffado/mixer/maudio_bebob.py (modified) maudio_bebob: add missing licence description to the top of the mixer python source. 06/03/17 01:25:01 jwoithe [2694] * trunk/libffado/support/mixer-qt4/ffado/config.py.in (modified) * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) * trunk/libffado/support/mixer-qt4/ffado/import_pyqt.py (added) * trunk/libffado/support/mixer-qt4/ffado/logginghandler.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/audiofire.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/bcoaudio5control.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/dummy.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/edirolfa101control.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/edirolfa66control.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/generic_dice_eap.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/globalmixer.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/mackie_onyxmixer.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/maudio_bebob.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/motu.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/motu_mark3.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/nodevice.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/phase24control.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/phase88control.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/presonus_firebox.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/presonus_fp10.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/presonus_inspire1394.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/profire2626.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/quatafire.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/rme.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/saffirepro.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/yamahago.py (modified) * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) * trunk/libffado/support/mixer-qt4/ffado/regdialog.py (modified) * trunk/libffado/support/mixer-qt4/ffado/registration.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) ffado-mixer: Centralise imports of PyQt modules and make compatible with PyQt5. In Xavier Forestier's patch set submitted to ffado-devel in November 2016, changes were required to every PyQt import statement if PyQt5 were to to be used instead. Since the current intent is to retain compatiblity to both PyQt4 and PyQt5 a slightly different approach was needed. All PyQt module imports are now handled by the newly added import_pyqt module. This transparently loads PyQt4 or PyQt5 modules depending on what is found on the system at runtime. Presently PyQt4 is tried first with a fallback to PyQt5 if PyQt4 is not found, but this could change in future. The result is that the ffado-mixer code should now be very close to being compatible with PyQt5 without additional patches. Having said that, some build system changes are still needed to make PyQt5 an option, along with some other minor fixes. This is perhaps not the neatest way of achieving the desired result, but it seems to work. It avoids the need to patch every ffado-mixer source file depending on the PyQt version in use, and allows ffado-mixer to adapt to the PyQt version found at runtime. The import_pyqt module also sets two global version variables: ffado_pyqt_version (the version of PyQt in use) and ffado_python3 (true if python3 is in use). These may be of use when addressing remaining PtQt4/PyQt5 and Python 2/3 issues. This patch has been tested with PyQt4 under Python 2.7. 06/03/17 01:08:05 jwoithe [2693] * trunk/libffado/src/rme/rme_avdevice.cpp (modified) rme: add a clarifying comment indicating that FFADO does not implement RME MIDI functionality yet. 05/14/17 03:54:21 jwoithe [2692] * trunk/libffado/src/rme/fireface_def.h (modified) * trunk/libffado/src/rme/fireface_hw.cpp (modified) rme: adjustments to maintain compatibility with the kernel snd- fireface driver for FF400 devices. This is a modified version of a patch submitted by Takashi Sakamoto. His original commit message follows. Changes from the original patch were: 1. Abbreviate comments added to fireface_def.h. This file was never intended to contain verbose protocol-level descriptions, so a briefer version is fine. 2. In fireface_def.h, omit the added "Not used in user land." comment attached to RME_FF400_MIDI_HIGH_ADDR. While FFADO does not utilise this at present, it doesn't mean that it couldn't in future (at least in principle). Since this file describes the programming interface implemented by the device, the proposed annotation could be confusing in the future. 3. Do not remove the "provide_midi" device field. This infrastructure field helps document the device's programming interface and could be used in future to allow FFADO to support MIDI on the FF400 device. In the meantime, its current setting (0) continues to allow FFADO and the kernel snd-fireface module (kernel >= 4.12) to co-exist. To this end, the changes to CR2 requested in the patch are carried out if provide_midi is 0. [Takashi Sakamoto's commit message] As of May 2017, FFADO library has no support for MIDI functionality as a driver for RME fireface series. ALSA fireface driver, a.k.a. snd-fireface were added to Linux kernel v4.12. This driver is designed to just support functionalities to handle PCM frames and MIDI messages for ALSA userspace applications. The other features should be implemented in user space to avoid complexity in kernel land. Additionally, due to design of target hardware, the driver request userspace applications to handle some registers. In RME Fireface series, some registers are write-only. Fortunately, none of the registers is relevant to packet streaming feature; i.e. isochronous communication on IEEE 1394 bus, while asynchronous communication is controlled by such registers. MIDI functionality in ALSA fireface driver gets influences from this specification. The driver need a care of userspace applications to set the registers correctly. For the above reason, this commit changes this library to configure the registers so that ALSA fireface driver can handle MIDI messages properly. The issue is an address to which the unit transfers asynchronous transactions for MIDI messages. 4 byte in MSB of the address is represented in 0x'0000'8010'03f4 with node ID. This is readable/writable by ALSA fireface driver. Rest of the address is decided by write transaction to 0x'0000'8010'051c with bit flags. This register is write-only, it includes effects for the other features than MIDI functionality. ALSA fireface driver doesn't touch it but expects userspace applications to configure the register to transfer MIDI messagess to a certain address. Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> 05/09/17 05:55:47 jwoithe [2691] * trunk/libffado/src/bebob/bebob_avdevice.cpp (modified) * trunk/libffado/src/bebob/bebob_avdevice.h (modified) * trunk/libffado/src/bebob/bebob_dl_mgr.cpp (modified) * trunk/libffado/src/bebob/edirol/edirol_fa101.cpp (modified) * trunk/libffado/src/bebob/edirol/edirol_fa101.h (modified) * trunk/libffado/src/bebob/edirol/edirol_fa66.cpp (modified) * trunk/libffado/src/bebob/edirol/edirol_fa66.h (modified) * trunk/libffado/src/bebob/esi/quatafire610.cpp (modified) * trunk/libffado/src/bebob/esi/quatafire610.h (modified) * trunk/libffado/src/bebob/focusrite/focusrite_generic.cpp (modified) * trunk/libffado/src/bebob/focusrite/focusrite_generic.h (modified) * trunk/libffado/src/bebob/focusrite/focusrite_saffire.cpp (modified) * trunk/libffado/src/bebob/focusrite/focusrite_saffire.h (modified) * trunk/libffado/src/bebob/focusrite/focusrite_saffirepro.cpp (modified) * trunk/libffado/src/bebob/focusrite/focusrite_saffirepro.h (modified) * trunk/libffado/src/bebob/mackie/onyxmixer.cpp (modified) * trunk/libffado/src/bebob/mackie/onyxmixer.h (modified) * trunk/libffado/src/bebob/maudio/normal_avdevice.cpp (modified) * trunk/libffado/src/bebob/maudio/normal_avdevice.h (modified) * trunk/libffado/src/bebob/maudio/special_avdevice.cpp (modified) * trunk/libffado/src/bebob/maudio/special_avdevice.h (modified) * trunk/libffado/src/bebob/presonus/firebox_avdevice.cpp (modified) * trunk/libffado/src/bebob/presonus/firebox_avdevice.h (modified) * trunk/libffado/src/bebob/presonus/inspire1394_avdevice.cpp (modified) * trunk/libffado/src/bebob/presonus/inspire1394_avdevice.h (modified) * trunk/libffado/src/bebob/template/vendor_device.cpp (modified) * trunk/libffado/src/bebob/template/vendor_device.h (modified) * trunk/libffado/src/bebob/terratec/terratec_device.cpp (modified) * trunk/libffado/src/bebob/terratec/terratec_device.h (modified) * trunk/libffado/src/bebob/yamaha/yamaha_avdevice.cpp (modified) * trunk/libffado/src/bebob/yamaha/yamaha_avdevice.h (modified) * trunk/libffado/src/bounce/bounce_avdevice.cpp (modified) * trunk/libffado/src/bounce/bounce_avdevice.h (modified) * trunk/libffado/src/bounce/bounce_slave_avdevice.cpp (modified) * trunk/libffado/src/bounce/bounce_slave_avdevice.h (modified) * trunk/libffado/src/devicemanager.cpp (modified) * trunk/libffado/src/devicemanager.h (modified) * trunk/libffado/src/dice/dice_avdevice.cpp (modified) * trunk/libffado/src/dice/dice_avdevice.h (modified) * trunk/libffado/src/dice/focusrite/saffire_56.cpp (modified) * trunk/libffado/src/dice/focusrite/saffire_56.h (modified) * trunk/libffado/src/dice/focusrite/saffire_pro14.cpp (modified) * trunk/libffado/src/dice/focusrite/saffire_pro14.h (modified) * trunk/libffado/src/dice/focusrite/saffire_pro24.cpp (modified) * trunk/libffado/src/dice/focusrite/saffire_pro24.h (modified) * trunk/libffado/src/dice/focusrite/saffire_pro26.cpp (modified) * trunk/libffado/src/dice/focusrite/saffire_pro26.h (modified) * trunk/libffado/src/dice/focusrite/saffire_pro40.cpp (modified) * trunk/libffado/src/dice/focusrite/saffire_pro40.h (modified) * trunk/libffado/src/dice/maudio/profire_2626.cpp (modified) * trunk/libffado/src/dice/maudio/profire_2626.h (modified) * trunk/libffado/src/dice/presonus/firestudio_mobile.cpp (modified) * trunk/libffado/src/dice/presonus/firestudio_mobile.h (modified) * trunk/libffado/src/dice/presonus/firestudio_project.cpp (modified) * trunk/libffado/src/dice/presonus/firestudio_project.h (modified) * trunk/libffado/src/dice/presonus/firestudio_tube.cpp (modified) * trunk/libffado/src/dice/presonus/firestudio_tube.h (modified) * trunk/libffado/src/digidesign/digidesign_avdevice.cpp (modified) * trunk/libffado/src/digidesign/digidesign_avdevice.h (modified) * trunk/libffado/src/ffadodevice.cpp (modified) * trunk/libffado/src/ffadodevice.h (modified) * trunk/libffado/src/fireworks/audiofire/audiofire_device.cpp (modified) * trunk/libffado/src/fireworks/audiofire/audiofire_device.h (modified) * trunk/libffado/src/fireworks/fireworks_device.cpp (modified) * trunk/libffado/src/fireworks/fireworks_device.h (modified) * trunk/libffado/src/genericavc/avc_avdevice.cpp (modified) * trunk/libffado/src/genericavc/avc_avdevice.h (modified) * trunk/libffado/src/genericavc/stanton/scs.cpp (modified) * trunk/libffado/src/genericavc/stanton/scs.h (modified) * trunk/libffado/src/metrichalo/mh_avdevice.cpp (modified) * trunk/libffado/src/metrichalo/mh_avdevice.h (modified) * trunk/libffado/src/motu/motu_avdevice.cpp (modified) * trunk/libffado/src/motu/motu_avdevice.h (modified) * trunk/libffado/src/oxford/oxford_device.cpp (modified) * trunk/libffado/src/oxford/oxford_device.h (modified) * trunk/libffado/src/rme/rme_avdevice.cpp (modified) * trunk/libffado/src/rme/rme_avdevice.h (modified) * trunk/libffado/support/firmware/fireworks-downloader.cpp (modified) * trunk/libffado/tests/scan-devreg.cpp (modified) Initial attempt to address deprecation of auto_ptr. C++11 deprecates auto_ptr, and gcc6 (and later versions) print compile time warnings to this effect whenever it is encountered in the source. The replacement type is either shared_ptr or unique_ptr depending on the usage. For almost all usages within FFADO it seems unique_ptr could be the appropriate choice, but the symantics are a little different to auto_ptr. Shared_ptr on the other hand can be a drop-in replacement, although it comes with considerable overheads which unique_ptr avoids. In the context of the current usage, the extra overhead incurred is not critical. The code-base cannot at this time change unconditionally to shared_ptr and unique_ptr because these are not available in gcc4 unless "-- std=c++11" is given. When gcc4 is used certain older versions of dependent libraries must be used and these in turn will cause compile failures in their header files if "--std=c++11" is used (libxml++ being an example). At present there are sufficient users of FFADO still on gcc4 to justify maintaining compatibility with that gcc version. The approach adopted at present is to define ffado_smartptr to be either auto_ptr (if c++11 is not in use) or shared_ptr if it is. All auto_ptr instances are then changed to ffado_smartptr. This should allow FFADO to be compiled without errors or warnings on systems using gcc4 and above. Gcc6 defaults to the c++14 standard, so ffado_smartptr will be shared_ptr in that case; thus the warnings will be avoided. In time, once gcc4 drops out of common use, the ffado_smartptr instances can be progressively migrated to unique_ptr or shared_ptr as is appropriate. It has been pointed out in the ffado-devel mailing list by Jano Svitok (2 May 2017, subject "smart pointers Was: [FFADO-devel] Liquid Saffire 56") that bebob_dl_mgr.cpp could use unique_ptr. shared_ptr should be ok in other auto_ptr sites, but futher analysis may show that at least some of them can use unique_ptr. The addressing of the auto_ptr issue was prompted by Xavier Forestier's patch set submitted to ffado-devel in November 2016. 03/28/17 05:26:52 jwoithe [2690] * trunk/libffado/support/mixer-qt4/ffado/registration.py (modified) ffado-mixer: deal with python 2/3 differences when converting registration email addresses to ascii. Code for python3 suggested by Xavier Forestier. 03/28/17 05:14:30 jwoithe [2689] * trunk/libffado/support/mixer-qt4/ffado/registration.py (modified) ffado-mixer: the registration code utilises urlopen() and urlencode() which have moved from urllib to urllib.request and urllib.parse respectively. urlencode() also requires additional treatment in python3. Allow for all this in a python2 compatible way. The original suggestion for the python3 code was from Xavier Forestier. 03/28/17 04:49:26 jwoithe [2688] * trunk/libffado/support/mixer-qt4/ffado/registration.py (modified) ffado-mixer: the ConfigParser module as used by the registration code has been renamed to configparser in python3. Allow for this in a way which maintains compatibility with python2. 03/28/17 04:42:25 jwoithe [2687] * trunk/libffado/support/mixer-qt4/ffado/registration.py (modified) registration: use a byte-string when comparing server responses for compatibility with python3. Suggested by Xavier Forestier. 03/28/17 04:38:34 jwoithe [2686] * trunk/libffado/support/mixer-qt4/ffado/configuration.py (modified) ffado-mixer: replace configuration key search with a construct which is compatible with both python2 and python3. Suggestion is from Xavier Forestier. 03/28/17 04:30:41 jwoithe [2685] * trunk/libffado/configuration (modified) configuration: remove a single extended ascii character to avoid the need to treat the file as utf-8 in python3, thereby keeping the python and C parsing consistent. 03/27/17 03:44:56 jwoithe [2684] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) ffadowindow: catch exceptions in a way which is compatible with both python2 and python3. 03/27/17 03:39:34 jwoithe [2683] * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) support/tools/: make allowances for the movement of getstatusoutput() from the 'commands' module in Python2 to the 'subprocess' module in Python3. This patch differs from an initial implementation by Xavier Forestier's in November 2016 in that the committed code should work in both python variants. 03/27/17 03:06:34 jwoithe [2682] * trunk/libffado/support/tools/listirqinfo.py (modified) listirqinfo.py: make use of the sorted() built-in as suggested by Xavier Forestier as part of his patchset readying FFADO for python3. This also works in python2. 03/27/17 03:01:35 jwoithe [2681] * trunk/libffado/src/libutil/Configuration.cpp (modified) configuration parser: provide extra information when parsing of the configuration file fails. Patch from Xavier Forestier. 03/27/17 02:52:30 jwoithe [2680] * trunk/libffado/support/mixer-qt4/ffado/configuration.py (modified) * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/generic_dice_eap.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/globalmixer.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/profire2626.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/rme.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) * trunk/libffado/support/tools/ffado-sandbox-install.py (modified) * trunk/libffado/support/tools/ffado_diag_helpers.py (modified) * trunk/libffado/support/tools/helpstrings.py (modified) * trunk/libffado/support/tools/listirqinfo.py (modified) * trunk/libffado/tests/dbus_test.py (modified) * trunk/libffado/tests/python/test-eap-ctrl.py (modified) * trunk/libffado/tests/python/test-echo-digital.py (modified) * trunk/libffado/tests/python/test-echo-routing.py (modified) python: replace all "print ..." statements with "print( ... )", which is compatible with current versions of python2 and python3. The replacement was done with a straight-forward shell command: for i in $(find . -name \*.py) ; do sed -i.bak 's/print \(.*\)/print( \1 )/' $i ; done This will fail if any of the print statements extend beyond a single line. Inspection suggests there are none of these, but there is always a chance that one or two have been missed. If so they can obviously be fixed up later. The move to the new "print" syntax was included in Xavier Forestier's November 2016 patch set. The majority of the changes needed to make FFADO run under python3 involved fixing the "print" syntax. Other issues identified in that patch set will be dealt with in future patches. 03/26/17 04:55:01 jwoithe [2679] * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) matrixmixer: simplify the generation of colour keys. This was included in Xavier Forestier's Nov 2016 patch set as part of his Qt5/Python3 patchsets. The suggested form may be slightly more efficient and it works under Qt4/Python2 so it seems fine to apply. 03/26/17 04:37:26 jwoithe [2678] * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) ffado-mixer: rename the 'Edit' main menu item to 'View'. A similar rename was suggested by Xavier Forestier in his Nov 2016 patch set which focused on Qt5 issues. The new name used in Xavier's patch was 'Devices', but given the current content of the submenu 'View' is probably better. If the focus of the submenu's tasks changes this can always be revisited. 03/21/17 15:43:24 jwoithe [2677] * trunk/libffado/src/libieee1394/configrom.cpp (modified) configrom: there is no obvious reason why a space should be added to the end of the vendor and model strings returned from the interface. Retain the explicit null termination of these strings to cover for the case where an interface may not return any null bytes. Also fix indentation associated with the null termination code. The issue with the trailing space was noticed and reported by Nils Philippsen: its presence broke a test in the saffire_dice mixer python code. 03/20/17 17:11:33 jwoithe [2676] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) saffire_dice: fix a typo in the Saffire Dice mixer python code introduced in r2653 which caused the global mute buttons for the line outs in the monitoring tab not to work. Thanks to Nils Philippsen for noticing this, tracking down the cause and providing the patch to fix it. 03/11/17 03:12:01 jwoithe [2675] * trunk/libffado/support/mixer-qt4/ffado/mixer/globalmixer.py (modified) globalmixer.py: use pyqtSlot (from the new-style PyQt signal API) in preference to pyqtSignature, for consistency with the use of the new style signal API elsewhere. 02/16/17 02:58:42 jwoithe [2674] * trunk/libffado/support/dbus/controlclient.h (modified) * trunk/libffado/support/dbus/controlserver.h (modified) * trunk/libffado/support/dbus/ffado-dbus-server.cpp (modified) * trunk/libffado/support/dbus/test-dbus.cpp (modified) support/dbus/: work around a bug in dbus-c++. dbus-c++ 0.9.0 and earlier has a bug which prevents compilation under gcc7 (and probably later versions). If DBUS_HAS_RECURSIVE_MUTEX is not defined the compiler identifies a type mismatch between the MutexFreeFn function typedef and the implemented Threading::mutex_free() method through the _init_threading() call. DBUS_HAS_RECURSIVE_MUTEX is defined in dbus-c++'s internal config.h but this is not installed for system wide use and is not referenced in any of the dbus-c++ include files. DBUS_HAS_RECURSIVE_MUTEX is defined in dbus-c++'s config.h for dbus 0.95 or later. The bool variation of the mutex functions are deprecated, and since dbus-0.95 dates from 2007 it is safe to assume that everyone is using the void versions. Therefore the simplistic approach of defining DBUS_HAS_RECURSIVE_MUTEX if it is not already defined prior to including dbus-c++/dbus.h should be safe. In addition it is necessary to do this before including any of the *-glue.h files. These include dbus-c++/dbus.h but because they are generated it's not easy to insert the workaround code into them. Thanks to Orcan Ogetbil for the initial report, looking into and identifying the true source of the problem in dbus-c++, and proposing the solution. The full discussion was on the FFADO-devel list, subject "gcc7 build fixes", 14-16 February 2017. 02/16/17 02:27:49 jwoithe [2673] * trunk/libffado/src/libieee1394/configrom.cpp (modified) libieee1394: fix incorrect comparisons when searching for the first zero byte in a string right-padded with zero bytes. Rather than comparing the string's characters, a pointer was compared instead. The problem came to light due to a warning from gcc7 as reported by Orcan Ogetbil. Thanks Orcan. 01/21/17 03:21:08 jwoithe [2672] * trunk/libffado/README (modified) README: fix URL to compilation guides. Thanks to Shalok Shalom for pointing out the error (via ffado-user mailing list). 01/09/17 05:28:05 jwoithe [2671] * trunk/libffado/configuration (modified) * trunk/libffado/src/bebob/bebob_avdevice.cpp (modified) bebob: make allowances for a variation of the ESI QuantaFire 610 which reports a different model ID to what others do. Thanks to Shalok Shalom for the report, information and initial testing. Further testing may highlight the need for additional code changes. 01/09/17 04:50:19 jwoithe [2670] * trunk/libffado/support/mixer-qt4/ffado/config.py.in (modified) * trunk/libffado/support/mixer-qt4/ffado/dbus_util.py (modified) * trunk/libffado/support/mixer-qt4/ffado/ffadowindow.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/profire2626.py (modified) * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) * trunk/libffado/support/mixer-qt4/ffado/panelmanager.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) Add the "-b" / "--bypassdbus" command line option to ffado-mixer. If given, no communication with ffado-dbus-server will be attempted. Instead, an instance of each supported mixer module will be created with stubs providing placeholder values in place of values obtained from hardware. This permits rudimentary debugging of mixer modules for interfaces which the developer does not have on hand. This commit amounts to a minor rework of a patch originally submitted by Xavier Forestier as part of a large series which is being slowly merged: https://sourceforge.net/p/ffado/mailman/message/35457569/. The most significant difference is that the bypassdbus functionality in Xavier's patch was a compile option whereas the commit implements it as a runtime option. It is felt that this will make things easier for developers in the long run: mixer modules can be tested without having to reconfigure ffado from source. Minor bug fixes were applied to the patch as it was reworked. Thanks to Xavier Forestier for the original patch. 01/09/17 04:19:00 jwoithe [2669] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) saffire_dice mixer: fix typos introduced with the new signal style, take 2. 01/09/17 04:16:28 jwoithe [2668] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_dice.py (modified) saffire_dice mixer: fix typos introduced with the new signal style. 01/09/17 03:23:47 jwoithe [2667] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire.py (modified) saffire mixer: fix typo introduced with the new signal style. 01/09/17 03:18:00 jwoithe [2666] * trunk/libffado/support/mixer-qt4/ffado/mixer/saffire_base.py (modified) saffire_base: fix typo introduced with the new signal style. 01/09/17 03:14:30 jwoithe [2665] * trunk/libffado/support/mixer-qt4/ffado/widgets/crossbarrouter.py (modified) crossbarrouter: fix typo introduced in the move to new signal style. 12/26/16 03:38:20 jwoithe [2664] * trunk/libffado/src/libstreaming/rme/RmeReceiveStreamProcessor.cpp (modified) * trunk/libffado/src/libstreaming/rme/RmeTransmitStreamProcessor.cpp (modified) rme: add byte swapping to streaming data when required by the host architecture (needed on big-endian systems). 12/26/16 03:22:21 jwoithe [2663] * trunk/libffado/src/rme/rme_avdevice.cpp (modified) * trunk/libffado/src/rme/rme_avdevice.h (modified) rme: move RME byteswap definitions into the header file to make them available to the streaming functions. 12/09/16 02:32:56 jwoithe [2662] * trunk/libffado/support/mixer-qt4/ffado/widgets/matrixmixer.py (modified) matrixmixer: fix the connection of the mapper's "mapped" signal to the directValues() slot. This makes the matrix cell right-click context menu items work again. Thanks to Daniel Cavalli for reporting the regression.