56 lines
1.6 KiB
Bash
56 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
|