+- Version: "2.2.5"
+ Date: 2024-03-28
+ Description:
+ - (fixed) VS Mode only admins could join new sessions starting up
+ - (fixed) VS Mode only ask for feedback if you've joined a session
+ - (updated) VS Mode updates to support self hosted virtual studios
- Version: "2.2.4"
Date: 2024-03-13
Description:
{
"app_name": "JackTrip",
"releases": [
+ {
+ "version": "2.2.4",
+ "changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.4",
+ "download": {
+ "date": "2024-03-13T00:00:00Z",
+ "url": "https://files.jacktrip.org/app-builds/JackTrip-v2.2.4-macOS-x64-signed-installer.pkg",
+ "downloadSize": "177373843",
+ "sha256": "d01ebaa71cf101f57e20214d0cbdf402a989debda8ffd231ea84252da59656b1"
+ }
+ },
{
"version": "2.2.3",
"changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.3",
{
"app_name": "JackTrip",
"releases": [
+ {
+ "version": "2.2.4",
+ "changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.4",
+ "download": {
+ "date": "2024-03-13T00:00:00Z",
+ "url": "https://files.jacktrip.org/app-builds/JackTrip-v2.2.4-Windows-x64-signed-installer.msi",
+ "downloadSize": "116228096",
+ "sha256": "559cc71c0050d72706378997d9eb24c923953142abdba72a47d82b8887c29c9d"
+ }
+ },
{
"version": "2.2.3",
"changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.3",
{
"app_name": "JackTrip",
"releases": [
+ {
+ "version": "2.2.4",
+ "changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.4",
+ "download": {
+ "date": "2024-03-13T00:00:00Z",
+ "url": "https://files.jacktrip.org/app-builds/JackTrip-v2.2.4-Linux-x64-binary.zip",
+ "downloadSize": "1249531",
+ "sha256": "5b83840c3df05d0399e5d2dea420e58cc4324dc13895b59897d62baa8a430991"
+ }
+ },
{
"version": "2.2.3",
"changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.3",
{
"app_name": "JackTrip",
"releases": [
+ {
+ "version": "2.2.4",
+ "changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.4",
+ "download": {
+ "date": "2024-03-13T00:00:00Z",
+ "url": "https://files.jacktrip.org/app-builds/JackTrip-v2.2.4-macOS-x64-signed-installer.pkg",
+ "downloadSize": "177373843",
+ "sha256": "d01ebaa71cf101f57e20214d0cbdf402a989debda8ffd231ea84252da59656b1"
+ }
+ },
{
"version": "2.2.3",
"changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.3",
{
"app_name": "JackTrip",
"releases": [
+ {
+ "version": "2.2.4",
+ "changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.4",
+ "download": {
+ "date": "2024-03-13T00:00:00Z",
+ "url": "https://files.jacktrip.org/app-builds/JackTrip-v2.2.4-Windows-x64-signed-installer.msi",
+ "downloadSize": "116228096",
+ "sha256": "559cc71c0050d72706378997d9eb24c923953142abdba72a47d82b8887c29c9d"
+ }
+ },
{
"version": "2.2.3",
"changelog": "Full changelog at https://github.com/jacktrip/jacktrip/releases/tag/v2.2.3",
function getShowDeviceControls () {
// self-managed servers do not support minified controls so keep it full size
- return !virtualstudio.currentStudio.isManaged || (!virtualstudio.collapseDeviceControls && isReady);
+ return (!virtualstudio.currentStudio.isManaged && virtualstudio.currentStudio.sessionId === "") || (!virtualstudio.collapseDeviceControls && isReady);
}
MouseArea {
Button {
id: closeDeviceControlsButton
- visible: virtualstudio.currentStudio.isManaged
+ visible: virtualstudio.currentStudio.isManaged || virtualstudio.currentStudio.sessionId !== ""
width: 24 * virtualstudio.uiScale
height: 24 * virtualstudio.uiScale
background: Rectangle {
m_studioSocketPtr->openSocket();
// Check if we have an address for our server
- if (m_currentStudio.status() != "Ready" && m_currentStudio.isAdmin() == true) {
+ if (m_currentStudio.status() != "Ready") {
m_connectionState = QStringLiteral("Waiting...");
emit connectionStateChanged();
} else {
void VirtualStudio::completeConnection()
{
+ // sanity check
if (m_currentStudio.id() == ""
|| m_currentStudio.status() == QStringLiteral("Disabled")) {
+ processError("Studio session has ended");
+ return;
+ }
+
+ // these shouldn't happen
+ if (m_currentStudio.status() != "Ready") {
+ processError("Studio session is not ready");
+ return;
+ }
+ if (m_currentStudio.host().isEmpty()) {
+ processError("Studio host is unknown");
return;
}
void VirtualStudio::disconnect()
{
- m_connectionState = QStringLiteral("Disconnecting...");
- emit connectionStateChanged();
- setConnectedErrorMsg("");
-
+ // stop jackrip if it's running
if (m_jackTripRunning) {
m_devicePtr->stopJackTrip(false);
// persist any volume level or device changes
m_audioConfigPtr->saveSettings();
- } else {
- // How did we get here? This shouldn't be possible, but include for safety.
- if (m_isExiting) {
- emit signalExit();
- } else if (m_onConnectedScreen) {
- emit disconnected();
- m_onConnectedScreen = false;
- }
- }
-
- // Restart our studio refresh timer.
- if (!m_isExiting) {
- m_refreshTimer.start();
}
m_connectionState = QStringLiteral("Disconnected");
emit connectionStateChanged();
+ setConnectedErrorMsg("");
- if (!m_currentStudio.id().isEmpty()) {
- emit openFeedbackSurveyModal(m_currentStudio.id());
+ if (m_isExiting) {
+ emit signalExit();
+ return;
}
- // cleanup
- m_currentStudio.setId("");
- emit currentStudioChanged();
+ // if this occurs on the setup or settings screen (for example, due to an issue with
+ // devices) then don't emit disconnected, as that would move you back to the "Browse"
+ // screen
+ if (m_onConnectedScreen) {
+ m_onConnectedScreen = false;
+ emit disconnected();
+ // Refresh studios and restart timer
+ refreshStudios(0, true);
+ m_refreshTimer.start();
+ }
+
+ if (!m_jackTripRunning) {
+ return;
+ }
+ m_jackTripRunning = false;
if (!m_studioSocketPtr.isNull()) {
m_studioSocketPtr->closeSocket();
m_studioSocketPtr->disconnect();
m_studioSocketPtr.reset();
}
+
+ // reset network statistics
+ m_networkStats = QJsonObject();
+
+ if (!m_currentStudio.id().isEmpty()) {
+ emit openFeedbackSurveyModal(m_currentStudio.id());
+ m_currentStudio.setId("");
+ emit currentStudioChanged();
+ }
+
+#ifdef __APPLE__
+ m_noNap.enableNap();
+#endif
}
void VirtualStudio::manageStudio(const QString& studioId, bool start)
// use disconnect function to handle reset of all internal flags and timers
disconnect();
-
- // reset network statistics
- m_networkStats = QJsonObject();
-
- if (m_isExiting) {
- emit signalExit();
- return;
- }
-
- if (!m_jackTripRunning) {
- return;
- }
-
- m_jackTripRunning = false;
- m_connectionState = QStringLiteral("Disconnected");
- emit connectionStateChanged();
-
- // if this occurs on the setup or settings screen (for example, due to an issue with
- // devices) then don't emit disconnected, as that would move you back to the "Browse"
- // screen
- if (m_onConnectedScreen) {
- m_onConnectedScreen = false;
- emit disconnected();
- }
-#ifdef __APPLE__
- m_noNap.enableNap();
-#endif
}
void VirtualStudio::processError(const QString& errorMessage)
// intialize the pinger used to generate network latency statistics for
// Virtual Studio
- QString host = studioInfo.sessionId();
- host.append(QString::fromStdString(".jacktrip.cloud"));
+ QString host = studioInfo.host();
if (studioInfo.isManaged()) {
+ host = studioInfo.sessionId();
+ host.append(QString::fromStdString(".jacktrip.cloud"));
+ }
+ if (studioInfo.isManaged() || !studioInfo.sessionId().isEmpty()) {
m_pinger.reset(new VsPinger(QString::fromStdString("wss"), host,
QString::fromStdString("/ping")));
}
void VsServerInfo::setSessionId(const QString& sessionId)
{
- m_sessionId = sessionId;
+ m_sessionId = (sessionId == "undefined") ? "" : sessionId;
}
QString VsServerInfo::inviteKey() const
Q_PROPERTY(quint16 period READ period CONSTANT)
Q_PROPERTY(quint32 sampleRate READ sampleRate CONSTANT)
Q_PROPERTY(quint16 queueBuffer READ queueBuffer CONSTANT)
+ Q_PROPERTY(QString sessionId READ sessionId CONSTANT)
Q_PROPERTY(QString status READ status CONSTANT)
Q_PROPERTY(bool enabled READ enabled CONSTANT)
Q_PROPERTY(QString cloudId READ cloudId CONSTANT)
#include "AudioInterface.h"
-constexpr const char* const gVersion = "2.2.4"; ///< JackTrip version
+constexpr const char* const gVersion = "2.2.5"; ///< JackTrip version
//*******************************************************************************
/// \name Default Values