gentoo-overlay/app-admin/eselect-xvmc/files/eselect-xvmc-0.3.eselect

189 lines
3.9 KiB
Text

# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: eselect-xvmc-0.3.eselect,v 1.1 2011/08/29 21:02:02 cardoe Exp $
DESCRIPTION="Manage the XvMC implementation used by your system"
MAINTAINER="cardoe@gentoo.org"
SVN_DATE='$Date: 2011/08/29 21:02:02 $'
VERSION=$(svn_date_to_version "${SVN_DATE}" )
XVMCLIBS=(
"libXvMCNVIDIA_dynamic.so.1"
"libXvMC.so.1"
"libviaXvMC.so.1"
"libviaXvMCPro.so.1"
"libchromeXvMC.so.1"
"libchromeXvMCPro.so.1"
"libXvMCVIA.so"
"libXvMCVIAPro.so"
"libI810XvMC.so.1"
"/usr/lib/libIntelXvMC.so"
"libAMDXvBA.so.1" )
XVMCPRETTY=(
"nvidia"
"xorg-x11"
"via"
"via-pro"
"openchrome"
"openchrome-pro"
"unichrome"
"unichrome-pro"
"intel-i815"
"intel-i915"
"ati" )
get_implementation_indices() {
local ret n
for (( n = 0; n < ${#XVMCLIBS[@]}; ++n )); do
[[ -e "${ROOT}/usr/lib/${XVMCLIBS[n]}" ]] && ret+=($n)
done
echo ${ret[@]}
}
get_current_implementation_index() {
local n
if [[ -f "${ROOT}/etc/X11/XvMCConfig" ]]; then
local current=$(< "${ROOT}/etc/X11/XvMCConfig")
for (( n = 0; n < ${#XVMCLIBS[@]}; ++n )); do
if [[ "${XVMCLIBS[n]}" = "${current}" ]]; then
echo "${n}"
return
fi
done
fi
echo "-1"
}
set_new_implementation() {
echo -n "Switching to ${XVMCPRETTY[$1]} XvMC implementation..."
touch "${ROOT}/etc/X11/XvMCConfig" 2>&1 > /dev/null
if [[ $? -eq 0 ]]; then
echo "${XVMCLIBS[$1]}" > "${ROOT}/etc/X11/XvMCConfig"
chmod 644 "${ROOT}/etc/X11/XvMCConfig"
chown 0:0 "${ROOT}/etc/X11/XvMCConfig"
echo " done"
else
echo " failed!"
echo "Insufficient privileges"
fi
}
### list action
## {{{ list stuff
describe_list() {
echo "List Available XvMC implementations"
}
do_list() {
local output n
local avail=( $(get_implementation_indices) )
local current=$(get_current_implementation_index)
write_list_start "Available XvMC implementations ( $(highlight '*') is current ):"
if (( ${#avail[@]} )) ; then
for n in "${avail[@]}" ; do
output[n]="${XVMCPRETTY[n]}"
[[ ${current} -eq ${n} ]] && \
output[n]+=" $(highlight '*')"
done
write_numbered_list "${output[@]}"
else
write_kv_list_entry "(none found)" ""
fi
return 0
}
## }}}
### show action
## {{{ show stuff
describe_show() {
echo "Print the current XvMC implementation."
}
do_show() {
local current=$(get_current_implementation_index)
write_list_start "Current XvMC implementation:"
if [[ ${current} -ne -1 ]]; then
echo "${XVMCPRETTY[current]}"
return 0
else
echo "(none)"
return 2
fi
}
## }}}
### set action
## {{{ set stuff
describe_set() {
echo "Select the XvMC implementation"
}
describe_set_parameters() {
echo "<target>"
}
describe_set_options() {
echo "<target> : XvMC implementation to activate"
echo "--use-old : If an implementation is already set, use that one instead"
}
do_set() {
local current=$(get_current_implementation_index)
local avail=( $(get_implementation_indices) )
local n new action
while [[ ${#@} -gt 0 ]]; do
local opt=${1}
shift
case ${opt} in
--use-old)
if [[ ${current} -gt -1 ]]; then
(( ${current} < ${#XVMCPRETTY[@]} )) && action="old-implementation"
fi
;;
*)
[[ -z ${action} ]] && action="set-implementation"
if is_number ${opt} ; then
new=${avail[opt - 1]}
if [[ -z ${new} ]]; then
die -q "Unrecognized option: ${opt}"
fi
elif has ${opt} ${XVMCPRETTY[@]}; then
for (( n = 0; n < ${#XVMCPRETTY[@]}; ++n )); do
[[ "${XVMCPRETTY[n]}" = "${opt}" ]] && new=${n}
done
else
die -q "Unrecognized option: ${opt}"
fi
;;
esac
done
case ${action} in
old-implementation)
set_new_implementation ${current}
return $?
;;
set-implementation)
if [[ -n ${new} ]]; then
set_new_implementation ${new}
return $?
else
die -q "Please specify an implementation to set"
fi
;;
*)
die -q "Invalid usage of set action."
esac
}
# vim: ts=4 sw=4 noet fdm=marker