diff --git a/data/cadence-session-start b/data/cadence-session-start index e27bb38..bf35e68 100755 --- a/data/cadence-session-start +++ b/data/cadence-session-start @@ -19,10 +19,8 @@ if [ "$1"x == "--system-start-by-x11-startup"x ]; then fi elif [ "$1"x == "--maybe-system-start"x ]; then # called via autostart cadence-session-start.desktop - # only do something if 21cadence-session-inject was ignored - if [ "$CADENCE_AUTO_STARTED"x == ""x ]; then - exec $PYTHON $INSTALL_PREFIX/share/cadence/src/cadence_session_start.py --system-start - fi + # this will check if jack is already running before trying to restart things + exec $PYTHON $INSTALL_PREFIX/share/cadence/src/cadence_session_start.py --system-start-desktop else # called by user exec $PYTHON $INSTALL_PREFIX/share/cadence/src/cadence_session_start.py "$@" diff --git a/src/cadence_session_start.py b/src/cadence_session_start.py index 383baae..135b869 100755 --- a/src/cadence_session_start.py +++ b/src/cadence_session_start.py @@ -41,12 +41,25 @@ def forceReset(): os.remove(config) # Start JACK, A2J and Pulse, according to user settings -def startSession(systemStarted): +def startSession(systemStarted, secondSystemStartAttempt): # Check if JACK is set to auto-start if systemStarted and not GlobalSettings.value("JACK/AutoStart", False, type=bool): print("JACK is set to NOT auto-start on login") return True + # Called via autostart desktop file + if systemStarted and secondSystemStartAttempt: + tmp_bus = dbus.SessionBus() + tmp_jack = tmp_bus.get_object("org.jackaudio.service", "/org/jackaudio/Controller") + started = bool(tmp_jack.IsStarted()) + + # Cleanup + del tmp_bus, tmp_jack + + # If already started, do nothing + if started: + return True + # Kill all audio processes first stopAllAudioProcesses() @@ -217,13 +230,13 @@ if __name__ == '__main__': printVST_PATH() elif arg == "--reset": forceReset() - elif arg == "--system-start": - sys.exit(startSession(True)) - elif arg in ["-s", "--s", "-start", "--start"]: - sys.exit(startSession(False)) - elif arg in ["-h", "--h", "-help", "--help"]: + elif arg in ("--system-start", "--system-start-desktop"): + sys.exit(startSession(True, arg == "--system-start-desktop")) + elif arg in ("-s", "--s", "-start", "--start"): + sys.exit(startSession(False, False)) + elif arg in ("-h", "--h", "-help", "--help"): printHelp(cmd) - elif arg in ["-v", "--v", "-version", "--version"]: + elif arg in ("-v", "--v", "-version", "--version"): printVersion() else: printError(cmd)