diff --git a/packages/addons/browser/chrome/source/bin/chrome-start b/packages/addons/browser/chrome/source/bin/chrome-start index 1556fa95a6..05db015542 100644 --- a/packages/addons/browser/chrome/source/bin/chrome-start +++ b/packages/addons/browser/chrome/source/bin/chrome-start @@ -73,13 +73,14 @@ case $RASTER_MODE in esac # alsa -if [ ! -z $ALSA_DEVICE ]; then - chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE" +if [ "$AUDIO_DEVICE_TYPE" == "ALSA" ]; then + # stop pulseaudio when using an Alsa device + systemctl stop pulseaudio + if [ ! -z $ALSA_DEVICE ]; then + chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE" + fi fi -# HACK!!! to get sound at Chrome stop pulseaudio -systemctl stop pulseaudio - # start chrome LD_PRELOAD=/usr/lib/libGL.so $ADDON_DIR/chrome-bin/chrome \ $chrome_OPTS \ @@ -100,6 +101,8 @@ then chrome_OPTS="$chrome_OPTS --force-dark-mode" fi -# HACK!!! to get sound at Kodi start pulseaudio sleep 5 -systemctl start pulseaudio +if [ "$AUDIO_DEVICE_TYPE" == "ALSA" ]; then + # restart pulseaudio when using an Alsa device + systemctl start pulseaudio +fi diff --git a/packages/addons/browser/chrome/source/default.py b/packages/addons/browser/chrome/source/default.py index 59bbd15b7b..48494514cc 100644 --- a/packages/addons/browser/chrome/source/default.py +++ b/packages/addons/browser/chrome/source/default.py @@ -35,13 +35,17 @@ def startchrome(args): new_env['RASTER_MODE'] = __addon__.getSetting('RASTER_MODE') new_env['DARK_MODE'] = __addon__.getSetting('DARK_MODE') - new_env['ALSA_DEVICE'] = '' if __addon__.getSetting('USE_CUST_AUDIODEVICE') == 'true': - alsa_device = __addon__.getSetting('CUST_AUDIODEVICE_STR') + audio_device = __addon__.getSetting('CUST_AUDIODEVICE_STR') else: - alsa_device = getAudioDevice() - if not alsa_device == None and not alsa_device == '': - new_env['ALSA_DEVICE'] = alsa_device + audio_device = getAudioDevice() + + new_env['AUDIO_DEVICE_TYPE'] = getAudioDeviceType(audio_device) + if new_env['AUDIO_DEVICE_TYPE'] == "ALSA": + new_env['ALSA_DEVICE'] = '' + alsa_device = getAlsaAudioDevice(audio_device) + if not alsa_device == None and not alsa_device == '': + new_env['ALSA_DEVICE'] = alsa_device chrome_params = args + ' ' + \ __addon__.getSetting('HOMEPAGE') @@ -57,7 +61,7 @@ def isRuning(pname): return False def getAudioDevice(): - dev = json.loads(xbmc.executeJSONRPC(json.dumps({ + return json.loads(xbmc.executeJSONRPC(json.dumps({ "jsonrpc": "2.0", "method": "Settings.GetSettingValue", "params": { @@ -65,15 +69,20 @@ def getAudioDevice(): }, "id": 1, })))['result']['value'] + +def getAudioDeviceType(dev): if dev.startswith("ALSA:"): - dev = dev.split("ALSA:")[1] - if dev == "@": - return None - if dev.startswith("@:"): - dev = dev.split("@:")[1] - else: - # not ALSA + return "ALSA" + if dev.startswith("PULSE:"): + return "PULSE" + return None + +def getAlsaAudioDevice(dev): + dev = dev.split("ALSA:")[1] + if dev == "@": return None + if dev.startswith("@:"): + dev = dev.split("@:")[1] if dev.startswith("CARD="): dev = "plughw:" + dev return dev