# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description    "Displays an animation while the system is booting"
author         "chromium-os-dev@chromium.org"

start on startup
task

script
  if [ ! -f /root/.factory_installer ]; then
    # Set the backlight to 40% of its maximum level.
    BACKLIGHT_DIR=/sys/class/backlight
    if [ -d $BACKLIGHT_DIR ] &&
       [ -n "$(find $BACKLIGHT_DIR -maxdepth 0 ! -empty)" ]; then
      backlight_tool --set_brightness_percent=40.0 || true
    fi

    # Use differently-sized images depending on the framebuffer width.
    if [ -x /sbin/frecon ]; then
       RESOLUTION_CMD=frecon
    else
       RESOLUTION_CMD=ply-image
    fi

    WIDTH=$($RESOLUTION_CMD --print-resolution | cut -d ' ' -f 1)

    ASSETS=/usr/share/chromeos-assets
    ASSETS_200=$ASSETS/images_200_percent
    ASSETS_100=$ASSETS/images_100_percent
    if [ $WIDTH -gt 1920 -a -e "$ASSETS_200/boot_splash_frame01.png" ]; then
      BOOT_IMAGES="$ASSETS_200"/boot_splash_frame*.png
    else
      BOOT_IMAGES="$ASSETS_100"/boot_splash_frame*.png
    fi

    DEV_END_USER=
    if is_developer_end_user; then
      DEV_END_USER=--dev-mode
    fi

    show_splash() {
      if [ -x /sbin/frecon ]; then
        frecon --daemon \
          --gamma /usr/share/color/bin/internal_display.bin \
          --clear 0xfefefe $DEV_END_USER --frame-interval 25 \
          $BOOT_IMAGES
      else
        # Disable blinking cursor. Without this, a splash screen will show a
        # distinct cursor shape even when the cursor is set to none.
        echo 0 > /sys/devices/virtual/graphics/fbcon/cursor_blink

        ply-image --set-monitors \
          --gamma /usr/share/color/bin/internal_display.bin \
          --clear 0xfefefe --frame-interval 25 $BOOT_IMAGES
       fi
    }

    if ! show_splash; then
      # Triggering events is only useful if the udev daemon is up and
      # responding, which we wait for here.
      until udevadm control --reload; do
        sleep 0.01s
      done

      udevadm trigger --action=add --subsystem-match="graphics" \
        --subsystem-match="pci"
      udevadm settle

      show_splash
    fi
  fi
end script
