55 lines
1.6 KiB
Bash
55 lines
1.6 KiB
Bash
#!/bin/sh
|
|
# shellcheck disable=SC1091
|
|
|
|
partition=$1
|
|
. /etc/deviceinfo
|
|
|
|
# $1: SDL_VIDEODRIVER value (e.g. 'kmsdrm', 'directfb')
|
|
run_osk_sdl() {
|
|
unset ETNA_MESA_DEBUG
|
|
unset SDL_VIDEODRIVER
|
|
unset DFBARGS
|
|
unset TSLIB_TSDEVICE
|
|
unset OSK_EXTRA_ARGS
|
|
case "$1" in
|
|
"kmsdrm")
|
|
# Set up SDL and Mesa env to use kmsdrm backend
|
|
export SDL_VIDEODRIVER="kmsdrm"
|
|
# needed for librem 5
|
|
export ETNA_MESA_DEBUG="no_supertile"
|
|
;;
|
|
"directfb")
|
|
# Set up directfb and tslib
|
|
# Note: linux_input module is disabled since it will try to take over
|
|
# the touchscreen device from tslib (e.g. on the N900)
|
|
# Note: ps2mouse module is disabled because it causes
|
|
# jerky/inconsistent touch input on some devices
|
|
export DFBARGS="system=fbdev,no-cursor,disable-module=linux_input,disable-module=ps2mouse"
|
|
export SDL_VIDEODRIVER="directfb"
|
|
# SDL/directfb tries to use gles even though it's not
|
|
# actually available, so disable it in osk-sdl
|
|
export OSK_EXTRA_ARGS="--no-gles"
|
|
# shellcheck disable=SC2154
|
|
if [ -n "$deviceinfo_dev_touchscreen" ]; then
|
|
export TSLIB_TSDEVICE="$deviceinfo_dev_touchscreen"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# osk-sdl needs evdev for input and doesn't launch without it, so
|
|
# make sure the module isn't missed
|
|
modprobe evdev
|
|
osk-sdl $OSK_EXTRA_ARGS -n root -d "$partition" -c /etc/osk.conf \
|
|
-o /boot/osk.conf -v > /osk-sdl.log 2>&1
|
|
}
|
|
|
|
# shellcheck disable=SC2154
|
|
if [ -n "$deviceinfo_mesa_driver" ]; then
|
|
# try to run osk-sdl with kmsdrm driver, then fallback to
|
|
# directfb if that fails
|
|
if ! run_osk_sdl "kmsdrm"; then
|
|
run_osk_sdl "directfb"
|
|
fi
|
|
else
|
|
run_osk_sdl "directfb"
|
|
fi
|