Browse Source

Update qjackctl, drop patches applied upstream

Signed-off-by: falkTX <falktx@falktx.com>
pull/10/head
falkTX 3 months ago
parent
commit
4419161d45
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
7 changed files with 2 additions and 937 deletions
  1. +1
    -4
      build-jack2.sh
  2. +1
    -1
      patches/qjackctl/01-fix-win32-build.patch
  3. +0
    -34
      patches/qjackctl/02_fix-win32-portaudio-encoding.patch
  4. +0
    -760
      patches/qjackctl/03_626731e752b4694051b3d447cebb90116fd37186.patch
  5. +0
    -124
      patches/qjackctl/04_apple-win32-ui-adjustments.patch
  6. +0
    -13
      patches/qjackctl/05_win32-ignore-jackrouter-device.patch
  7. +0
    -1
      patches/qjackctl/clear1.png

+ 1
- 4
build-jack2.sh View File

@@ -7,7 +7,7 @@ PAWPAW_ROOT="${PWD}"

JACK2_VERSION=${JACK2_VERSION:=git}
JACK_ROUTER_VERSION=${JACK_ROUTER_VERSION:=6c2e532bb05d2ba59ef210bef2fe270d588c2fdf}
QJACKCTL_VERSION=${QJACKCTL_VERSION:=0.9.0}
QJACKCTL_VERSION=${QJACKCTL_VERSION:=0.9.2}

# ---------------------------------------------------------------------------------------------------------------------

@@ -142,9 +142,6 @@ if [ -f "${PAWPAW_PREFIX}/bin/moc" ]; then
export EXTRA_CXXFLAGS="-std=gnu++11"
fi

# TODO remove once 0.9.1 is out
cp "${PAWPAW_ROOT}/patches/qjackctl/clear1.png" "${PAWPAW_BUILDDIR}/qjackctl${name}-${QJACKCTL_VERSION}/src/images/clear1.png"

build_autoconf qjackctl "${QJACKCTL_VERSION}" "--enable-jack-version ${qjackctl_extra_args}"

if [ "${WIN32}" -eq 1 ]; then


+ 1
- 1
patches/qjackctl/01-fix-win32-build.patch View File

@@ -7,6 +7,6 @@ index bd0ca71..fe45f1f 100644
#include <algorithm>
+#define _USE_MATH_DEFINES
#include <math.h>
#include <cmath>

+ 0
- 34
patches/qjackctl/02_fix-win32-portaudio-encoding.patch View File

@@ -1,34 +0,0 @@
diff --git a/src/qjackctlInterfaceComboBox.cpp b/src/qjackctlInterfaceComboBox.cpp
index b95f4c6..a0848e8 100644
--- a/src/qjackctlInterfaceComboBox.cpp
+++ b/src/qjackctlInterfaceComboBox.cpp
@@ -47,6 +47,9 @@
#include <iostream>
#include <cstring>
#include <portaudio.h>
+#ifdef WIN32
+#include <windows.h>
+#endif
#endif
#ifdef CONFIG_ALSA_SEQ
@@ -218,11 +221,19 @@ private:
const PaDeviceIndex iNumDevice = Pa_GetDeviceCount();
{
+#ifdef WIN32
+ wchar_t wideDeviceName[MAX_PATH];
+#endif
QMutexLocker locker(&PortAudioProber::mutex);
if (PortAudioProber::names.isEmpty()) {
for (PaDeviceIndex i = 0; i < iNumDevice; ++i) {
PaDeviceInfo *pDeviceInfo = const_cast<PaDeviceInfo *> (Pa_GetDeviceInfo(i));
+#ifdef WIN32
+ MultiByteToWideChar(CP_UTF8, 0, pDeviceInfo->name, -1, wideDeviceName, MAX_PATH-1);
+ const QString sName = hostNames[pDeviceInfo->hostApi] + "::" + QString::fromWCharArray(wideDeviceName);
+#else
const QString sName = hostNames[pDeviceInfo->hostApi] + "::" + QString(pDeviceInfo->name);
+#endif
PortAudioProber::names.push_back(sName);
}
}

+ 0
- 760
patches/qjackctl/03_626731e752b4694051b3d447cebb90116fd37186.patch View File

@@ -1,760 +0,0 @@
From 626731e752b4694051b3d447cebb90116fd37186 Mon Sep 17 00:00:00 2001
From: rncbc <rncbc@rncbc.org>
Date: Sat, 19 Dec 2020 16:25:19 +0000
Subject: [PATCH] - Add Clear preset button to Setup dialog (refactored from
an original patch by kmatheussen #113)

- Use default values for most preset parameters: sample
rate, frames/period (aka. buffer-size), periods/buffer,
realtime priority, port maximum, client timeout, word
length, wait time, channel maximum (refactored from an
original patch by kmatheussen #112)
---
ChangeLog | 12 ++
src/images/clear1.png | Bin 0 -> 579 bytes
src/qjackctl.qrc | 1 +
src/qjackctlMainForm.cpp | 21 ++-
src/qjackctlSetup.cpp | 271 ++++++++++++++++++++++++--------------
src/qjackctlSetup.h | 7 +
src/qjackctlSetupForm.cpp | 55 +++++++-
src/qjackctlSetupForm.h | 1 +
src/qjackctlSetupForm.ui | 57 ++++----
9 files changed, 274 insertions(+), 151 deletions(-)
create mode 100644 src/images/clear1.png

diff --git a/ChangeLog b/ChangeLog
index d79615ce..2cf233b2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,18 @@ QjackCtl - JACK Audio Connection Kit Qt GUI Interface
ChangeLog
+GIT HEAD
+
+- Add Clear preset button to Setup dialog (refactored
+ from an original patch by kmatheussen #113)
+
+- Use default values for most preset parameters: sample
+ rate, frames/period (aka. buffer-size), periods/buffer,
+ realtime priority, port maximum, client timeout, word
+ length, wait time, channel maximum (refactored from an
+ original patch by kmatheussen #112)
+
+
0.9.0 2020-12-17 A Winter'20 Release.
- List only available backend drivers when JACK D-BUS
diff --git a/src/qjackctl.qrc b/src/qjackctl.qrc
index 55d8d1c7..21303a4e 100644
--- a/src/qjackctl.qrc
+++ b/src/qjackctl.qrc
@@ -38,6 +38,7 @@
<file>images/asocketi.png</file>
<file>images/asocketo.png</file>
<file>images/backward1.png</file>
+ <file>images/clear1.png</file>
<file>images/client1.png</file>
<file>images/connect1.png</file>
<file>images/connections1.png</file>
diff --git a/src/qjackctlMainForm.cpp b/src/qjackctlMainForm.cpp
index ee9afa45..28d916b1 100644
--- a/src/qjackctlMainForm.cpp
+++ b/src/qjackctlMainForm.cpp
@@ -1449,12 +1449,11 @@ void qjackctlMainForm::startJack (void)
const QString sPath = QString::fromUtf8(::getenv("PATH"));
QStringList paths = sPath.split(chPathSep);
#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
- paths = paths << QString("%1\\JACK2").arg(getenv("PROGRAMFILES"))
- << QString("%1\\JACK2").arg(getenv("PROGRAMFILES(x86)"));
+ paths.append(QString("%1\\JACK2").arg(::getenv("PROGRAMFILES")));
+ paths.append(QString("%1\\JACK2").arg(::getenv("PROGRAMFILES(x86)")));
+ #elif defined(__APPLE__)
+ paths.append("/usr/local/bin/");
#endif
- #if defined(__APPLE__)
- paths = paths << "/usr/local/bin/";
- #endif
QStringListIterator iter(paths);
while (iter.hasNext()) {
const QString& sDirectory = iter.next();
@@ -1514,7 +1513,7 @@ void qjackctlMainForm::startJack (void)
if (m_preset.iFrames > 0 && !bNet)
args.append("-p" + QString::number(m_preset.iFrames));
if (bAlsa || bSun || bOss || bFirewire) {
- if (m_preset.iPeriods > 0)
+ if (m_preset.iPeriods > 1)
args.append("-n" + QString::number(m_preset.iPeriods));
}
if (bAlsa) {
@@ -1570,7 +1569,7 @@ void qjackctlMainForm::startJack (void)
else if (bOss || bSun) {
if (m_preset.bIgnoreHW)
args.append("-b");
- if (m_preset.iWordLength > 0)
+ if (m_preset.iWordLength > 0 && m_preset.iWordLength != 16)
args.append("-w" + QString::number(m_preset.iWordLength));
if (!m_preset.sInDevice.isEmpty() && m_preset.iAudio != QJACKCTL_PLAYBACK)
args.append("-C" + formatQuoted(m_preset.sInDevice));
@@ -4365,7 +4364,7 @@ void qjackctlMainForm::setDBusParameters ( const qjackctlPreset& preset )
if (bAlsa || bSun || bOss || bFirewire) {
setDBusDriverParameter("nperiods",
(unsigned int) preset.iPeriods,
- preset.iPeriods > 0);
+ preset.iPeriods > 1);
}
if (bAlsa) {
setDBusDriverParameter("softmode", preset.bSoftMode);
@@ -4436,7 +4435,7 @@ void qjackctlMainForm::setDBusParameters ( const qjackctlPreset& preset )
!sOutDevice.isEmpty() && preset.iAudio != QJACKCTL_CAPTURE);
setDBusDriverParameter("inchannels",
(unsigned int) preset.iInChannels,
- preset.iInChannels > 0 && preset.iAudio != QJACKCTL_PLAYBACK);
+ preset.iInChannels > 0 && preset.iAudio != QJACKCTL_PLAYBACK);
setDBusDriverParameter("outchannels",
(unsigned int) preset.iOutChannels,
preset.iOutChannels > 0 && preset.iAudio != QJACKCTL_CAPTURE);
@@ -4444,7 +4443,7 @@ void qjackctlMainForm::setDBusParameters ( const qjackctlPreset& preset )
else if (bCoreaudio || bFirewire || bNet) {
setDBusDriverParameter("inchannels",
(unsigned int) preset.iInChannels,
- preset.iInChannels > 0 && preset.iAudio != QJACKCTL_PLAYBACK);
+ preset.iInChannels > 0 && preset.iAudio != QJACKCTL_PLAYBACK);
setDBusDriverParameter("outchannels",
(unsigned int) preset.iOutChannels,
preset.iOutChannels > 0 && preset.iAudio != QJACKCTL_CAPTURE);
@@ -4452,7 +4451,7 @@ void qjackctlMainForm::setDBusParameters ( const qjackctlPreset& preset )
if (bDummy) {
setDBusDriverParameter("wait",
(unsigned int) preset.iWait,
- preset.iWait > 0);
+ preset.iWait > 0 && preset.iWait != 21333);
}
else
if (!bNet) {
diff --git a/src/qjackctlSetup.cpp b/src/qjackctlSetup.cpp
index 8294606c..963cdfff 100644
--- a/src/qjackctlSetup.cpp
+++ b/src/qjackctlSetup.cpp
@@ -40,14 +40,6 @@
#include <jack/jack.h>
#endif
-#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
-#define DEFAULT_DRIVER "portaudio"
-#elif defined(__APPLE__)
-#define DEFAULT_DRIVER "coreaudio"
-#else
-#define DEFAULT_DRIVER "alsa"
-#endif
-
// Constructor.
qjackctlSetup::qjackctlSetup (void)
@@ -370,6 +362,170 @@ bool qjackctlSetup::saveAliases (void)
}
+//---------------------------------------------------------------------------
+// Preset struct methods.
+
+void qjackctlPreset::clear (void)
+{
+ sServerPrefix.clear();
+ sServerName .clear();
+ bRealtime = true;
+ bSoftMode = false;
+ bMonitor = false;
+ bShorts = false;
+ bNoMemLock = false;
+ bUnlockMem = false;
+ bHWMeter = false;
+ bIgnoreHW = false;
+ iPriority = 0;
+ iFrames = 0;
+ iSampleRate = 0;
+ iPeriods = 0;
+ iWordLength = 0;
+ iWait = 0;
+ iChan = 0;
+ sDriver .clear();
+ sInterface .clear();
+ iAudio = 0;
+ iDither = 0;
+ iTimeout = 0;
+ sInDevice .clear();
+ sOutDevice .clear();
+ iInChannels = 0;
+ iOutChannels = 0;
+ iInLatency = 0;
+ iOutLatency = 0;
+ iStartDelay = 2;
+ bSync = false;
+ bVerbose = false;
+ iPortMax = 0;
+ sMidiDriver .clear();
+ sServerSuffix.clear();
+ uClockSource = 0;
+ ucSelfConnectMode = ' ';
+
+ fixup();
+}
+
+
+void qjackctlPreset::load ( QSettings& settings, const QString& sSuffix )
+{
+ settings.beginGroup("/Settings" + sSuffix);
+
+ sServerPrefix = settings.value("/Server", sServerPrefix).toString();
+ sServerName = settings.value("/ServerName", sServerName).toString();
+ bRealtime = settings.value("/Realtime", bRealtime).toBool();
+ bSoftMode = settings.value("/SoftMode", bSoftMode).toBool();
+ bMonitor = settings.value("/Monitor", bMonitor).toBool();
+ bShorts = settings.value("/Shorts", bShorts).toBool();
+ bNoMemLock = settings.value("/NoMemLock", bNoMemLock).toBool();
+ bUnlockMem = settings.value("/UnlockMem", bUnlockMem).toBool();
+ bHWMeter = settings.value("/HWMeter", bHWMeter).toBool();
+ bIgnoreHW = settings.value("/IgnoreHW", bIgnoreHW).toBool();
+ iPriority = settings.value("/Priority", iPriority).toInt();
+ iFrames = settings.value("/Frames", iFrames).toInt();
+ iSampleRate = settings.value("/SampleRate", iSampleRate).toInt();
+ iPeriods = settings.value("/Periods", iPeriods).toInt();
+ iWordLength = settings.value("/WordLength", iWordLength).toInt();
+ iWait = settings.value("/Wait", iWait).toInt();
+ iChan = settings.value("/Chan", iChan).toInt();
+ sDriver = settings.value("/Driver", sDriver).toString();
+ sInterface = settings.value("/Interface", sInterface).toString();
+ iAudio = settings.value("/Audio", iAudio).toInt();
+ iDither = settings.value("/Dither", iDither).toInt();
+ iTimeout = settings.value("/Timeout", iTimeout).toInt();
+ sInDevice = settings.value("/InDevice", sInDevice).toString();
+ sOutDevice = settings.value("/OutDevice", sOutDevice).toString();
+ iInChannels = settings.value("/InChannels", iInChannels).toInt();
+ iOutChannels = settings.value("/OutChannels", iOutChannels).toInt();
+ iInLatency = settings.value("/InLatency", iInLatency).toInt();
+ iOutLatency = settings.value("/OutLatency", iOutLatency).toInt();
+ iStartDelay = settings.value("/StartDelay", iStartDelay).toInt();
+ bSync = settings.value("/Sync", bSync).toBool();
+ bVerbose = settings.value("/Verbose", bVerbose).toBool();
+ iPortMax = settings.value("/PortMax", iPortMax).toInt();
+ sMidiDriver = settings.value("/MidiDriver", sMidiDriver).toString();
+ sServerSuffix = settings.value("/ServerSuffix", sServerSuffix).toString();
+ uClockSource = settings.value("/ClockSource", uClockSource).toUInt();
+ ucSelfConnectMode = settings.value("/SelfConnectMode", ucSelfConnectMode).value<uchar>();
+
+ settings.endGroup();
+
+ fixup();
+}
+
+void qjackctlPreset::save ( QSettings& settings, const QString& sSuffix )
+{
+ settings.beginGroup("/Settings" + sSuffix);
+
+ settings.setValue("/Server", sServerPrefix);
+ settings.setValue("/ServerName", sServerName);
+ settings.setValue("/Realtime", bRealtime);
+ settings.setValue("/SoftMode", bSoftMode);
+ settings.setValue("/Monitor", bMonitor);
+ settings.setValue("/Shorts", bShorts);
+ settings.setValue("/NoMemLock", bNoMemLock);
+ settings.setValue("/UnlockMem", bUnlockMem);
+ settings.setValue("/HWMeter", bHWMeter);
+ settings.setValue("/IgnoreHW", bIgnoreHW);
+ settings.setValue("/Priority", iPriority);
+ settings.setValue("/Frames", iFrames);
+ settings.setValue("/SampleRate", iSampleRate);
+ settings.setValue("/Periods", iPeriods);
+ settings.setValue("/WordLength", iWordLength);
+ settings.setValue("/Wait", iWait);
+ settings.setValue("/Chan", iChan);
+ settings.setValue("/Driver", sDriver);
+ settings.setValue("/Interface", sInterface);
+ settings.setValue("/Audio", iAudio);
+ settings.setValue("/Dither", iDither);
+ settings.setValue("/Timeout", iTimeout);
+ settings.setValue("/InDevice", sInDevice);
+ settings.setValue("/OutDevice", sOutDevice);
+ settings.setValue("/InChannels", iInChannels);
+ settings.setValue("/OutChannels", iOutChannels);
+ settings.setValue("/InLatency", iInLatency);
+ settings.setValue("/OutLatency", iOutLatency);
+ settings.setValue("/StartDelay", iStartDelay);
+ settings.setValue("/Sync", bSync);
+ settings.setValue("/Verbose", bVerbose);
+ settings.setValue("/PortMax", iPortMax);
+ settings.setValue("/MidiDriver", sMidiDriver);
+ settings.setValue("/ServerSuffix", sServerSuffix);
+ settings.setValue("/ClockSource", uClockSource);
+ settings.setValue("/SelfConnectMode", ucSelfConnectMode);
+
+ settings.endGroup();
+}
+
+void qjackctlPreset::fixup (void)
+{
+ if (sServerPrefix.isEmpty()) {
+ sServerPrefix = "jackd";
+ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
+ sServerPrefix += " -S -X winmme";
+ #endif
+ }
+
+ if (sDriver.isEmpty()) {
+ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
+ sDriver = "portaudio";
+ #elif defined(__APPLE__)
+ sDriver = "coreaudio";
+ #else
+ sDriver = "alsa";
+ #endif
+ }
+
+#ifdef CONFIG_JACK_MIDI
+ if (!sMidiDriver.isEmpty()
+ && sMidiDriver != "raw"
+ && sMidiDriver != "seq")
+ sMidiDriver.clear();
+#endif
+}
+
+
//---------------------------------------------------------------------------
// Preset management methods.
@@ -383,56 +539,7 @@ bool qjackctlSetup::loadPreset ( qjackctlPreset& preset, const QString& sPreset
return false;
}
- m_settings.beginGroup("/Settings" + sSuffix);
-#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
- preset.sServerPrefix = m_settings.value("/Server", "jackd -S -X winmme").toString();
-#else
- preset.sServerPrefix = m_settings.value("/Server", "jackd").toString();
-#endif
- preset.sServerName = m_settings.value("/ServerName").toString();
- preset.bRealtime = m_settings.value("/Realtime", true).toBool();
- preset.bSoftMode = m_settings.value("/SoftMode", false).toBool();
- preset.bMonitor = m_settings.value("/Monitor", false).toBool();
- preset.bShorts = m_settings.value("/Shorts", false).toBool();
- preset.bNoMemLock = m_settings.value("/NoMemLock", false).toBool();
- preset.bUnlockMem = m_settings.value("/UnlockMem", false).toBool();
- preset.bHWMeter = m_settings.value("/HWMeter", false).toBool();
- preset.bIgnoreHW = m_settings.value("/IgnoreHW", false).toBool();
- preset.iPriority = m_settings.value("/Priority", 0).toInt();
- preset.iFrames = m_settings.value("/Frames", 1024).toInt();
- preset.iSampleRate = m_settings.value("/SampleRate", 48000).toInt();
- preset.iPeriods = m_settings.value("/Periods", 2).toInt();
- preset.iWordLength = m_settings.value("/WordLength", 16).toInt();
- preset.iWait = m_settings.value("/Wait", 21333).toInt();
- preset.iChan = m_settings.value("/Chan", 0).toInt();
- preset.sDriver = m_settings.value("/Driver", DEFAULT_DRIVER).toString();
- preset.sInterface = m_settings.value("/Interface").toString();
- preset.iAudio = m_settings.value("/Audio", 0).toInt();
- preset.iDither = m_settings.value("/Dither", 0).toInt();
- preset.iTimeout = m_settings.value("/Timeout", 500).toInt();
- preset.sInDevice = m_settings.value("/InDevice").toString();
- preset.sOutDevice = m_settings.value("/OutDevice").toString();
- preset.iInChannels = m_settings.value("/InChannels", 0).toInt();
- preset.iOutChannels = m_settings.value("/OutChannels", 0).toInt();
- preset.iInLatency = m_settings.value("/InLatency", 0).toInt();
- preset.iOutLatency = m_settings.value("/OutLatency", 0).toInt();
- preset.iStartDelay = m_settings.value("/StartDelay", 2).toInt();
- preset.bSync = m_settings.value("/Sync", false).toBool();
- preset.bVerbose = m_settings.value("/Verbose", false).toBool();
- preset.iPortMax = m_settings.value("/PortMax", 256).toInt();
- preset.sMidiDriver = m_settings.value("/MidiDriver").toString();
- preset.sServerSuffix = m_settings.value("/ServerSuffix").toString();
- preset.uClockSource = m_settings.value("/ClockSource", 0).toUInt();
- preset.ucSelfConnectMode = m_settings.value("/SelfConnectMode", ' ').value<uchar>();
- m_settings.endGroup();
-
-#ifdef CONFIG_JACK_MIDI
- if (!preset.sMidiDriver.isEmpty() &&
- preset.sMidiDriver != "raw" &&
- preset.sMidiDriver != "seq")
- preset.sMidiDriver.clear();
-#endif
-
+ preset.load(m_settings, sSuffix);
return true;
}
@@ -446,45 +553,7 @@ bool qjackctlSetup::savePreset ( qjackctlPreset& preset, const QString& sPreset
presets.prepend(sPreset);
}
- m_settings.beginGroup("/Settings" + sSuffix);
- m_settings.setValue("/Server", preset.sServerPrefix);
- m_settings.setValue("/ServerName", preset.sServerName);
- m_settings.setValue("/Realtime", preset.bRealtime);
- m_settings.setValue("/SoftMode", preset.bSoftMode);
- m_settings.setValue("/Monitor", preset.bMonitor);
- m_settings.setValue("/Shorts", preset.bShorts);
- m_settings.setValue("/NoMemLock", preset.bNoMemLock);
- m_settings.setValue("/UnlockMem", preset.bUnlockMem);
- m_settings.setValue("/HWMeter", preset.bHWMeter);
- m_settings.setValue("/IgnoreHW", preset.bIgnoreHW);
- m_settings.setValue("/Priority", preset.iPriority);
- m_settings.setValue("/Frames", preset.iFrames);
- m_settings.setValue("/SampleRate", preset.iSampleRate);
- m_settings.setValue("/Periods", preset.iPeriods);
- m_settings.setValue("/WordLength", preset.iWordLength);
- m_settings.setValue("/Wait", preset.iWait);
- m_settings.setValue("/Chan", preset.iChan);
- m_settings.setValue("/Driver", preset.sDriver);
- m_settings.setValue("/Interface", preset.sInterface);
- m_settings.setValue("/Audio", preset.iAudio);
- m_settings.setValue("/Dither", preset.iDither);
- m_settings.setValue("/Timeout", preset.iTimeout);
- m_settings.setValue("/InDevice", preset.sInDevice);
- m_settings.setValue("/OutDevice", preset.sOutDevice);
- m_settings.setValue("/InChannels", preset.iInChannels);
- m_settings.setValue("/OutChannels", preset.iOutChannels);
- m_settings.setValue("/InLatency", preset.iInLatency);
- m_settings.setValue("/OutLatency", preset.iOutLatency);
- m_settings.setValue("/StartDelay", preset.iStartDelay);
- m_settings.setValue("/Sync", preset.bSync);
- m_settings.setValue("/Verbose", preset.bVerbose);
- m_settings.setValue("/PortMax", preset.iPortMax);
- m_settings.setValue("/MidiDriver", preset.sMidiDriver);
- m_settings.setValue("/ServerSuffix", preset.sServerSuffix);
- m_settings.setValue("/ClockSource", preset.uClockSource);
- m_settings.setValue("/SelfConnectMode", preset.ucSelfConnectMode);
- m_settings.endGroup();
-
+ preset.save(m_settings, sSuffix);
return true;
}
@@ -493,13 +562,15 @@ bool qjackctlSetup::deletePreset ( const QString& sPreset )
QString sSuffix;
if (sPreset != sDefPresetName && !sPreset.isEmpty()) {
sSuffix = '/' + sPreset;
- int iPreset = presets.indexOf(sPreset);
+ const int iPreset = presets.indexOf(sPreset);
if (iPreset < 0)
return false;
presets.removeAt(iPreset);
- m_settings.remove("/Settings" + sSuffix);
- m_settings.remove("/Aliases" + sSuffix);
}
+
+ m_settings.remove("/Settings" + sSuffix);
+ m_settings.remove("/Aliases" + sSuffix);
+
return true;
}
diff --git a/src/qjackctlSetup.h b/src/qjackctlSetup.h
index 18ca99e9..e03f60d9 100644
--- a/src/qjackctlSetup.h
+++ b/src/qjackctlSetup.h
@@ -47,6 +47,13 @@ class QSplitter;
// Server settings preset struct.
struct qjackctlPreset
{
+ qjackctlPreset() { clear(); }
+
+ void clear();
+ void load(QSettings& settings, const QString& sSuffix);
+ void save(QSettings& settings, const QString& sSuffix);
+ void fixup();
+
QString sServerPrefix;
QString sServerName;
bool bRealtime;
diff --git a/src/qjackctlSetupForm.cpp b/src/qjackctlSetupForm.cpp
index ee64fa3b..4b934fab 100644
--- a/src/qjackctlSetupForm.cpp
+++ b/src/qjackctlSetupForm.cpp
@@ -95,8 +95,9 @@ qjackctlSetupForm::qjackctlSetupForm ( QWidget *pParent )
m_pTimeDisplayButtonGroup->setExclusive(true);
// Setup clock-source combo-box.
+ const QString& sDefName = tr(g_pszDefName);
m_ui.ClockSourceComboBox->clear();
- m_ui.ClockSourceComboBox->addItem(g_pszDefName, uint(0));
+ m_ui.ClockSourceComboBox->addItem(sDefName, uint(0));
m_ui.ClockSourceComboBox->addItem(tr("System"), uint('s'));
m_ui.ClockSourceComboBox->addItem(tr("Cycle"), uint('c'));
m_ui.ClockSourceComboBox->addItem(tr("HPET"), uint('h'));
@@ -157,11 +158,28 @@ qjackctlSetupForm::qjackctlSetupForm ( QWidget *pParent )
m_ui.ServerPrefixComboBox->setCompleter(nullptr);
m_ui.ServerSuffixComboBox->setCompleter(nullptr);
+ m_ui.PrioritySpinBox->setSpecialValueText(sDefName);
+ m_ui.SampleRateComboBox->insertItem(0, sDefName);
+ m_ui.FramesComboBox->insertItem(0, sDefName);
+ m_ui.PeriodsSpinBox->setSpecialValueText(sDefName);
+ m_ui.PortMaxComboBox->insertItem(0, sDefName);
+ m_ui.TimeoutComboBox->insertItem(0, sDefName);
+ m_ui.WaitComboBox->insertItem(0, sDefName);
+ m_ui.WordLengthComboBox->insertItem(0, sDefName);
+ m_ui.ChanSpinBox->setSpecialValueText(sDefName);
+ m_ui.InChannelsSpinBox->setSpecialValueText(sDefName);
+ m_ui.OutChannelsSpinBox->setSpecialValueText(sDefName);
+ m_ui.InLatencySpinBox->setSpecialValueText(sDefName);
+ m_ui.OutLatencySpinBox->setSpecialValueText(sDefName);
+
// UI connections...
QObject::connect(m_ui.PresetComboBox,
SIGNAL(editTextChanged(const QString&)),
SLOT(changeCurrentPreset(const QString&)));
+ QObject::connect(m_ui.PresetClearPushButton,
+ SIGNAL(clicked()),
+ SLOT(clearCurrentPreset()));
QObject::connect(m_ui.PresetSavePushButton,
SIGNAL(clicked()),
SLOT(saveCurrentPreset()));
@@ -766,15 +784,24 @@ void qjackctlSetupForm::setCurrentPreset ( const qjackctlPreset& preset )
m_ui.HWMeterCheckBox->setChecked(preset.bHWMeter);
m_ui.IgnoreHWCheckBox->setChecked(preset.bIgnoreHW);
m_ui.PrioritySpinBox->setValue(preset.iPriority);
+ const QString& sDefName = tr(g_pszDefName);
setComboBoxCurrentText(m_ui.FramesComboBox,
- QString::number(preset.iFrames));
+ preset.iFrames > 0
+ ? QString::number(preset.iFrames)
+ : sDefName);
setComboBoxCurrentText(m_ui.SampleRateComboBox,
- QString::number(preset.iSampleRate));
+ preset.iSampleRate > 0
+ ? QString::number(preset.iSampleRate)
+ : sDefName);
m_ui.PeriodsSpinBox->setValue(preset.iPeriods);
setComboBoxCurrentText(m_ui.WordLengthComboBox,
- QString::number(preset.iWordLength));
+ preset.iWordLength > 0 && preset.iWordLength != 16
+ ? QString::number(preset.iWordLength)
+ : sDefName);
setComboBoxCurrentText(m_ui.WaitComboBox,
- QString::number(preset.iWait));
+ preset.iWait > 0 && preset.iWait != 21333
+ ? QString::number(preset.iWait)
+ : sDefName);
m_ui.ChanSpinBox->setValue(preset.iChan);
setComboBoxCurrentText(m_ui.DriverComboBox, preset.sDriver);
setComboBoxCurrentText(m_ui.InterfaceComboBox,
@@ -784,7 +811,9 @@ void qjackctlSetupForm::setCurrentPreset ( const qjackctlPreset& preset )
m_ui.AudioComboBox->setCurrentIndex(preset.iAudio);
m_ui.DitherComboBox->setCurrentIndex(preset.iDither);
setComboBoxCurrentText(m_ui.TimeoutComboBox,
- QString::number(preset.iTimeout));
+ preset.iTimeout > 0 && preset.iTimeout != 500
+ ? QString::number(preset.iTimeout)
+ : sDefName);
setComboBoxCurrentData(m_ui.ClockSourceComboBox,
uint(preset.uClockSource));
setComboBoxCurrentText(m_ui.InDeviceComboBox,
@@ -805,7 +834,9 @@ void qjackctlSetupForm::setCurrentPreset ( const qjackctlPreset& preset )
QVariant::fromValue<uchar> (preset.ucSelfConnectMode));
m_ui.VerboseCheckBox->setChecked(preset.bVerbose);
setComboBoxCurrentText(m_ui.PortMaxComboBox,
- QString::number(preset.iPortMax));
+ preset.iPortMax > 0 && preset.iPortMax != 256
+ ? QString::number(preset.iPortMax)
+ : sDefName);
#ifdef CONFIG_JACK_MIDI
setComboBoxCurrentText(m_ui.MidiDriverComboBox,
preset.sMidiDriver);
@@ -995,6 +1026,16 @@ void qjackctlSetupForm::changeCurrentPreset ( const QString& sPreset )
optionsChanged();
}
+
+void qjackctlSetupForm::clearCurrentPreset (void)
+{
+ // Clear current settings...
+ qjackctlPreset preset;
+ setCurrentPreset(preset);
+ settingsChanged();
+}
+
+
void qjackctlSetupForm::saveCurrentPreset (void)
{
const QString sPreset = m_ui.PresetComboBox->currentText();
diff --git a/src/qjackctlSetupForm.h b/src/qjackctlSetupForm.h
index 97e1a32f..cbd70dff 100644
--- a/src/qjackctlSetupForm.h
+++ b/src/qjackctlSetupForm.h
@@ -54,6 +54,7 @@ class qjackctlSetupForm : public QDialog
protected slots:
void changeCurrentPreset(const QString&);
+ void clearCurrentPreset();
void saveCurrentPreset();
void deleteCurrentPreset();
diff --git a/src/qjackctlSetupForm.ui b/src/qjackctlSetupForm.ui
index e78624b7..bb064f7d 100644
--- a/src/qjackctlSetupForm.ui
+++ b/src/qjackctlSetupForm.ui
@@ -95,6 +95,22 @@
</item>
</widget>
</item>
+ <item>
+ <widget class="QPushButton" name="PresetClearPushButton">
+ <property name="toolTip">
+ <string>Clear settings of current preset name</string>
+ </property>
+ <property name="text">
+ <string>Clea&amp;r</string>
+ </property>
+ <property name="icon">
+ <iconset resource="qjackctl.qrc">:/images/clear1.png</iconset>
+ </property>
+ <property name="autoDefault">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
<item>
<widget class="QPushButton" name="PresetSavePushButton">
<property name="toolTip">
@@ -597,11 +613,14 @@
<string>Number of periods in the hardware buffer</string>
</property>
<property name="minimum">
- <number>2</number>
+ <number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
+ <property name="value">
+ <number>1</number>
+ </property>
</widget>
</item>
</layout>
@@ -1064,9 +1083,6 @@
<property name="toolTip">
<string>Scheduler priority when running realtime</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="singleStep">
<number>1</number>
</property>
@@ -1074,7 +1090,7 @@
<number>5</number>
</property>
<property name="maximum">
- <number>99</number>
+ <number>95</number>
</property>
</widget>
</item>
@@ -1108,9 +1124,6 @@
<bold>false</bold>
</font>
</property>
- <property name="acceptDrops">
- <bool>false</bool>
- </property>
<property name="toolTip">
<string>Word length</string>
</property>
@@ -1165,9 +1178,6 @@
<bold>false</bold>
</font>
</property>
- <property name="acceptDrops">
- <bool>false</bool>
- </property>
<property name="toolTip">
<string>Number of microseconds to wait between engine processes (dummy)</string>
</property>
@@ -1217,9 +1227,6 @@
<property name="toolTip">
<string>Maximum number of audio channels to allocate</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="maximum">
<number>999</number>
</property>
@@ -1268,7 +1275,7 @@
<bool>true</bool>
</property>
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<item>
<property name="text">
@@ -1330,7 +1337,7 @@
<bool>true</bool>
</property>
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<item>
<property name="text">
@@ -1357,11 +1364,6 @@
<string>5000</string>
</property>
</item>
- <item>
- <property name="text">
- <string>10000</string>
- </property>
- </item>
</widget>
</item>
<item row="6" column="0">
@@ -1710,9 +1712,6 @@
<property name="toolTip">
<string>Maximum input audio hardware channels to allocate</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="maximum">
<number>999</number>
</property>
@@ -1741,9 +1740,6 @@
<property name="toolTip">
<string>Maximum output audio hardware channels to allocate</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="maximum">
<number>999</number>
</property>
@@ -1794,9 +1790,6 @@
<property name="toolTip">
<string>External input latency (frames)</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="maximum">
<number>9999999</number>
</property>
@@ -1825,9 +1818,6 @@
<property name="toolTip">
<string>External output latency (frames)</string>
</property>
- <property name="specialValueText">
- <string>(default)</string>
- </property>
<property name="maximum">
<number>9999999</number>
</property>
@@ -4209,6 +4199,7 @@
<tabstops>
<tabstop>SetupTabWidget</tabstop>
<tabstop>PresetComboBox</tabstop>
+ <tabstop>PresetClearPushButton</tabstop>
<tabstop>PresetSavePushButton</tabstop>
<tabstop>PresetDeletePushButton</tabstop>
<tabstop>SettingsTabWidget</tabstop>

+ 0
- 124
patches/qjackctl/04_apple-win32-ui-adjustments.patch View File

@@ -1,124 +0,0 @@
diff --git a/src/qjackctlAboutForm.cpp b/src/qjackctlAboutForm.cpp
index 6a28439..521b7c9 100644
--- a/src/qjackctlAboutForm.cpp
+++ b/src/qjackctlAboutForm.cpp
@@ -68,12 +68,12 @@ qjackctlAboutForm::qjackctlAboutForm ( QWidget *pParent )
list << tr("JACK Session support disabled.");
#endif
#ifndef CONFIG_ALSA_SEQ
-#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
+#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32) && !defined(__APPLE__)
list << tr("ALSA/MIDI sequencer support disabled.");
#endif
#endif
#ifndef CONFIG_DBUS
-#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
+#if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32) && !defined(__APPLE__)
list << tr("D-Bus interface support disabled.");
#endif
#endif
diff --git a/src/qjackctlMainForm.cpp b/src/qjackctlMainForm.cpp
index ee9afa4..f206270 100644
--- a/src/qjackctlMainForm.cpp
+++ b/src/qjackctlMainForm.cpp
@@ -584,6 +584,26 @@ qjackctlMainForm::qjackctlMainForm (
QObject::connect(m_ui.ForwardToolButton,
SIGNAL(clicked()),
SLOT(transportForward()));
+
+#ifdef __APPLE__
+ // Setup macOS menu bar
+ QMenuBar* const menuBar = new QMenuBar(nullptr);
+ menuBar->setNativeMenuBar(true);
+
+ QMenu* const menu = menuBar->addMenu("QjackCtl");
+
+ QAction* const actQuit = menu->addAction(tr("&Quit"));
+ actQuit->setMenuRole(QAction::QuitRole);
+ QObject::connect(actQuit, SIGNAL(triggered()), SLOT(quitMainForm()));
+
+ QAction* const actPreferences = menu->addAction(tr("Set&up..."));
+ actPreferences->setMenuRole(QAction::PreferencesRole);
+ QObject::connect(actPreferences, SIGNAL(triggered()), SLOT(showSetupForm()));
+
+ QAction* const actAbout = menu->addAction(tr("Ab&out..."));
+ actAbout->setMenuRole(QAction::AboutRole);
+ QObject::connect(actAbout, SIGNAL(triggered()), SLOT(showAboutForm()));
+#endif
}
@@ -906,6 +926,11 @@ bool qjackctlMainForm::setup ( qjackctlSetup *pSetup )
// Register the first timer slot.
QTimer::singleShot(QJACKCTL_TIMER_MSECS, this, SLOT(timerSlot()));
+#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__APPLE__)
+ // increazing height make UI look ugly and it is not really useful
+ setFixedHeight(height());
+#endif
+
// We're ready to go...
return true;
}
diff --git a/src/qjackctlSetup.cpp b/src/qjackctlSetup.cpp
index 8294606..487b7de 100644
--- a/src/qjackctlSetup.cpp
+++ b/src/qjackctlSetup.cpp
@@ -88,6 +88,12 @@ void qjackctlSetup::loadSetup (void)
}
m_settings.endGroup();
+#ifdef __APPLE__
+ // alternative custom defaults, as the mac theme does not look good with our custom widgets
+ sCustomColorTheme = "KXStudio";
+ sCustomStyleTheme = "Fusion";
+#endif
+
m_settings.beginGroup("/Options");
bSingleton = m_settings.value("/Singleton", true).toBool();
// sServerName = m_settings.value("/ServerName").toString();
@@ -118,8 +124,8 @@ void qjackctlSetup::loadSetup (void)
sDisplayFont2 = m_settings.value("/DisplayFont2").toString();
bDisplayEffect = m_settings.value("/DisplayEffect", true).toBool();
bDisplayBlink = m_settings.value("/DisplayBlink", true).toBool();
- sCustomColorTheme = m_settings.value("/CustomColorTheme").toString();
- sCustomStyleTheme = m_settings.value("/CustomStyleTheme").toString();
+ sCustomColorTheme = m_settings.value("/CustomColorTheme", sCustomColorTheme).toString();
+ sCustomStyleTheme = m_settings.value("/CustomStyleTheme", sCustomStyleTheme).toString();
iJackClientPortAlias = m_settings.value("/JackClientPortAlias", 0).toInt();
bJackClientPortMetadata = m_settings.value("/JackClientPortMetadata", false).toBool();
iConnectionsIconSize = m_settings.value("/ConnectionsIconSize", QJACKCTL_ICON_16X16).toInt();
diff --git a/src/qjackctlSetupForm.cpp b/src/qjackctlSetupForm.cpp
index ee64fa3..703ab52 100644
--- a/src/qjackctlSetupForm.cpp
+++ b/src/qjackctlSetupForm.cpp
@@ -126,6 +126,29 @@ qjackctlSetupForm::qjackctlSetupForm ( QWidget *pParent )
m_iDirtySettings = 0;
m_iDirtyOptions = 0;
+#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__APPLE__)
+ // Remove useless drivers for some systems
+ for (int i = m_ui.DriverComboBox->count(); --i >= 0;)
+ {
+ const QString itemText = m_ui.DriverComboBox->itemText(i);
+ if (itemText == "dummy")
+ continue;
+#if defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
+ if (itemText == "portaudio")
+ continue;
+#endif
+#ifdef __APPLE__
+ if (itemText == "coreaudio")
+ continue;
+#endif
+ if (itemText == "net")
+ continue;
+ if (itemText == "netone")
+ continue;
+ m_ui.DriverComboBox->removeItem(i);
+ }
+#endif
+
// Save original hard-coded driver names, only really
// useful when (changing (dis)enabling JACK D-BUS...
m_drivers.clear();

+ 0
- 13
patches/qjackctl/05_win32-ignore-jackrouter-device.patch View File

@@ -1,13 +0,0 @@
diff --git a/src/qjackctlInterfaceComboBox.cpp b/src/qjackctlInterfaceComboBox.cpp
index 049c228..9921e43 100644
--- a/src/qjackctlInterfaceComboBox.cpp
+++ b/src/qjackctlInterfaceComboBox.cpp
@@ -228,6 +228,8 @@ private:
if (PortAudioProber::names.isEmpty()) {
for (PaDeviceIndex i = 0; i < iNumDevice; ++i) {
PaDeviceInfo *pDeviceInfo = const_cast<PaDeviceInfo *> (Pa_GetDeviceInfo(i));
+ if (strcmp(pDeviceInfo->name, "JackRouter") == 0)
+ continue;
#ifdef WIN32
MultiByteToWideChar(CP_UTF8, 0, pDeviceInfo->name, -1, wideDeviceName, MAX_PATH-1);
const QString sName = hostNames[pDeviceInfo->hostApi] + "::" + QString::fromWCharArray(wideDeviceName);

+ 0
- 1
patches/qjackctl/clear1.png View File

@@ -1 +0,0 @@
<html><body>You are being <a href="https://raw.githubusercontent.com/rncbc/qjackctl/626731e752b4694051b3d447cebb90116fd37186/src/images/clear1.png">redirected</a>.</body></html>

Loading…
Cancel
Save