#!/bin/sh

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
. /etc/profile
oe_setup_addon browser.chrome

# check if chrome is already successful installed
if [ ! -f "$ADDON_DIR/extract.ok" ]; then
  cd $ADDON_DIR
  chrome-downloader
fi

if [ -e $ADDON_HOME/env ]
then
  . $ADDON_HOME/env
fi

# fix file permissons (zip packaging)
chmod +x $ADDON_DIR/chrome-bin/chrome
chmod 4755 $ADDON_DIR/chrome-bin/chrome-sandbox

# make sure we use "own" gtk/pango/nss/etc
export LD_LIBRARY_PATH=$ADDON_DIR/lib

# configure pango/pixbuf
export PANGO_RC_FILE=$ADDON_DIR/config/pangorc
export GDK_PIXBUF_MODULE_FILE=$ADDON_DIR/config/pixbuf.loaders.cache

# font rendering in gtk widgets is brokeen with nvidia blob. use our Xdefaults
export XENVIRONMENT=$ADDON_DIR/config/Xdefaults

# start unclutter
if [ "$HIDE_CURSOR" == "true" ]
then
  unclutter &
  UNCLUTTER_PID=$!
fi

# vaapi
LIBVA_DRIVERS_PATH="/usr/lib/dri:$ADDON_DIR/lib"
LIBVA_DRIVER_NAME=''
case $VAAPI_MODE in
  'intel')
      LIBVA_DRIVER_NAME='i965'
      chrome_OPTS="$chrome_OPTS --enable-accelerated-video"
      ;;
  'amd')
      LIBVA_DRIVER_NAME='vdpau'
      chrome_OPTS="$chrome_OPTS --enable-accelerated-video"
      ;;
  'nvidia')
      LIBVA_DRIVER_NAME='vdpau'
      chrome_OPTS="$chrome_OPTS --enable-accelerated-video --allow-no-sandbox-job --disable-gpu-sandbox"
      ;;
  *)
      LIBGL_ALWAYS_SOFTWARE='1'
      export LIBGL_ALWAYS_SOFTWARE
esac
export LIBVA_DRIVER_NAME LIBVA_DRIVERS_PATH

# windowed
case $WINDOW_MODE in
  'maximized') chrome_OPTS="$chrome_OPTS --start-maximized";;
  'kiosk') chrome_OPTS="$chrome_OPTS --kiosk";;
esac

# rasterization
case $RASTER_MODE in
  'off') chrome_OPTS="$chrome_OPTS --disable-accelerated-2d-canvas --disable-gpu-compositing";;
  'force') chrome_OPTS="$chrome_OPTS --enable-gpu-rasterization --enable-accelerated-2d-canvas --ignore-gpu-blacklist";;
esac

# alsa
if [ ! -z $ALSA_DEVICE ]; then
  chrome_OPTS="$chrome_OPTS --alsa-output-device=$ALSA_DEVICE"
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 \
  --no-sandbox \
  --user-data-dir=$ADDON_HOME/profile \
  --test-type $@ \
  2>&1 | tee $ADDON_LOG_FILE

# kill unclutter
if [ "$HIDE_CURSOR" == "true" ]
then
  kill $UNCLUTTER_PID
fi

# HACK!!! to get sound at Kodi start pulseaudio
sleep 5
systemctl start pulseaudio
