Revision: 5799 Author: pebender Date: Sat Nov 7 13:25:49 2009 Log: - Changed Xorg init so that udev hotplug rather than MiniMyth init is used to enable/disable Xorg input (event) devices.
http://code.google.com/p/minimyth/source/detail?r=5799 Added: /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/mm_device_blacklist /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/06-minimyth-xorg-evdev.rules /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/07-minimyth-firmware.rules /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/08-minimyth-mythtv.rules Deleted: /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/06-minimyth-firmware.rules /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/07-minimyth-mythtv.rules Modified: /trunk/gar-minimyth/html/minimyth/document-changelog.txt /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/X11/xorg.conf /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_LIRC.pm /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_X.pm /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/x.pm /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/05-minimyth-detect-lirc.rules.disabled ======================================= --- /dev/null +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/mm_device_blacklist Sat Nov 7 13:25:49 2009 @@ -0,0 +1,30 @@ +#!/bin/sh + +device_group=$1 + +result='no' + +device_list='' +if test ! "x${DEVNAME}" = "x" ; then + device_list="${device_list} /dev/${DEVNAME}" +fi +if test ! "x$DEVLINKS" = "x" ; then + device_list="${device_list} ${DEVLINKS}" +fi + +blacklist_list='' +if test -e "/lib/udev/mm_device_blacklist.d/${device_group}" ; then + blacklist_list=`/bin/cat "/lib/udev/mm_device_blacklist.d/${device_group}"` + blacklist_list=`/bin/echo "${blacklist_list}"` +fi + +for device_item in ${device_list} ; do + if echo " ${blacklist_list} " | grep -q " ${device_item} " ; then + result='yes' + break + fi +done + +echo -n ${result} + +exit 0 ======================================= --- /dev/null +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/06-minimyth-xorg-evdev.rules Sat Nov 7 13:25:49 2009 @@ -0,0 +1,11 @@ +ENV{mm_device_owner}=="?*", GOTO="end" + +SUBSYSTEM!="input", GOTO="end" +KERNEL=!"event*" GOTO="end" +PROGRAM="mm_device_blacklist x_event", RESULT=="yes", GOTO="end" + +ENV{x11_driver}="evdev" + +ENV{mm_device_owner}="xorg" + +LABEL="end" ======================================= --- /dev/null +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/07-minimyth-firmware.rules Sat Nov 7 13:25:49 2009 @@ -0,0 +1,1 @@ +SUBSYSTEM=="firmware", ACTION=="add", RUN+="mm_firmware_load" ======================================= --- /dev/null +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/08-minimyth-mythtv.rules Sat Nov 7 13:25:49 2009 @@ -0,0 +1,1 @@ +SUBSYSTEM=="block", RUN+="/lib/udev/mm_mythtv" ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/06-minimyth-firmware.rules Tue May 5 20:33:07 2009 +++ /dev/null @@ -1,1 +0,0 @@ -SUBSYSTEM=="firmware", ACTION=="add", RUN+="mm_firmware_load" ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/07-minimyth-mythtv.rules Sat Jan 10 12:48:59 2009 +++ /dev/null @@ -1,1 +0,0 @@ -SUBSYSTEM=="block", RUN+="/lib/udev/mm_mythtv" ======================================= --- /trunk/gar-minimyth/html/minimyth/document-changelog.txt Sat Nov 7 06:25:17 2009 +++ /trunk/gar-minimyth/html/minimyth/document-changelog.txt Sat Nov 7 13:25:49 2009 @@ -18,8 +18,10 @@ MythTV trunk: version trunk.22658 trunk svn 22758. Improved init - - Separate Bluetooth init from Wiimote init. - - Separate D-Bus init from GTK init. + - Changed Xorg init so that udev hotplug rather than MiniMyth init is used + to enable/disable Xorg input (event) devices. + - Separated Bluetooth init from Wiimote init. + - Separated D-Bus init from GTK init. - Added MM_BLUETOOTH_DEVICE_LIST for specifying the Bluetooth devices to init. ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/X11/xorg.conf Tue Sep 15 11:50:29 2009 +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/X11/xorg.conf Sat Nov 7 13:25:49 2009 @@ -30,8 +30,6 @@ Load "record" EndSection -...@inputdevice_event@ - Section "Monitor" Identifier "Monitor1" DisplaySize @X_DISPLAYSIZE_X@ @X_DISPLAYSIZE_Y@ @@ -142,7 +140,6 @@ Section "ServerLayout" Identifier "Layout1" Screen "Screen1" - @SERVERLAYOUT_EVENT@ EndSection Section "DRI" ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_LIRC.pm Mon Jul 13 11:54:41 2009 +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_LIRC.pm Sat Nov 7 13:25:49 2009 @@ -38,14 +38,44 @@ }; $var_list{'MM_LIRC_DEVICE_BLACKLIST'} = { - value_default => '' + value_default => '', + extra => sub + { + my $minimyth = shift; + my $name = shift; + + my $blacklist_dir = q(/lib/udev/mm_device_blacklist); + my $blacklist_group = q(lirc); + + if (-e qq($blacklist_dir/$blacklist_group)) + { + unlink(qq($blacklist_dir/$blacklist_group)); + } + if (-e qq($blacklist_dir/$blacklist_group~)) + { + unlink(qq($blacklist_dir/$blacklist_group~)); + } + + if (open(FILE, '>', qq($blacklist_dir/$blacklist_group~))) + { + my @blacklist_list = split(/ +/, $minimyth->var_get($name)); + foreach my $blacklist_item (@blacklist_list) + { + print FILE $blacklist_item . "\n" + } + close(FILE); + rename(qq($blacklist_dir/$blacklist_group~), qq($blacklist_dir/$blacklist_group)); + } + + return 1; + } }; $var_list{'MM_LIRC_DRIVER'} = { value_default => 'none', value_valid => 'none|.+', value_obsolete => 'auto|mceusb2|mceusbnew', - value_none => '', + value_none => '' }; $var_list{'MM_LIRC_DEVICE'} = { ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_X.pm Wed Jun 3 22:17:35 2009 +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/conf/MM_X.pm Sat Nov 7 13:25:49 2009 @@ -27,70 +27,6 @@ return $minimyth->detect_state_get('video', 0, 'driver'); }, value_valid => '.+' -}; -$var_list{'MM_X_EVENT_DEVICE_LIST'} = -{ - prerequisite => ['MM_LIRC_DEVICE_LIST', 'MM_LIRC_LIRCMD_DEVICE', 'MM_WIIMOTE_EVENT_DEVICE_LIST'], - - value_default => 'auto', - value_valid => 'auto|.+', - value_auto => sub - { - my $minimyth = shift; - my $name = shift; - - my @device_list; - - # Get all udev detected event devices. - foreach my $item (@{$minimyth->detect_state_get('event')}) - { - my $device = $minimyth->device_canonicalize($item->{'device'}); - if ($device) - { - push(@device_list, $device); - } - } - - # Add wiimote event devices. - if ($minimyth->var_get('MM_WIIMOTE_EVENT_DEVICE_LIST')) - { - foreach my $device (split(/ +/, $minimyth->var_get('MM_WIIMOTE_EVENT_DEVICE_LIST'))) - { - push(@device_list, $device); - } - } - - # Add LIRC mouse daemon event device. - if ($minimyth->var_get('MM_LIRC_LIRCM_DEVICE')) - { - push(@device_list, $minimyth->var_get('MM_LIRC_LIRCM_DEVICE')); - } - - # Remove any duplicates. - { - my $prev = ''; - @device_list = grep($_ ne $prev && (($prev) = $_), sort(@device_list)); - } - - # Remove any devices claimed by LIRC. - if ($minimyth->var_get('MM_LIRC_DEVICE_LIST')) - { - my @blacklist = (); - foreach my $item (split(/ +/, $minimyth->var_get('MM_LIRC_DEVICE_LIST'))) - { - if ($item) - { - my @item = split(/,/, $item); - my $device = $minimyth->device_canonicalize($item[0]); - push(@blacklist, $device); - } - } - my $blacklist_filter = join('|', @blacklist); - @device_list = grep(! /^($blacklist_filter)$/, @device_list); - } - - return join(' ', @device_list); - } }; #=============================================================================== # ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/x.pm Tue Sep 15 11:50:29 2009 +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/etc/rc.d/init/x.pm Sat Nov 7 13:25:49 2009 @@ -329,34 +329,10 @@ $mode_0 = '"' . $mode_0 . '"' if ($mode_0 ne ''); $mode_1 = '"' . $mode_1 . '"' if ($mode_1 ne ''); $mode_2 = '"' . $mode_2 . '"' if ($mode_2 ne ''); - - my $inputdevice_event = ''; - my $serverlayout_event = ''; - { - my @inputdevice = (); - my @serverlayout = (); - foreach my $device (split(/ +/, $minimyth->var_get('MM_X_EVENT_DEVICE_LIST'))) - { - my $identifier = $device; - - push(@inputdevice, qq(Section "InputDevice")); - push(@inputdevice, qq( Identifier "$identifier")); - push(@inputdevice, qq( Driver "evdev")); - push(@inputdevice, qq( Option "Device" "$device")); - push(@inputdevice, qq(EndSection)); - push(@inputdevice, qq()); - - push(@serverlayout, qq(InputDevice "$identifier" "SendCoreEvents")); - } - $inputdevice_event = join("\n", @inputdevice); - $serverlayout_event = join("\n ", @serverlayout); - } $minimyth->file_replace_variable( '/etc/X11/xorg.conf', - { '@INPUTDEVICE_EVENT@' => $inputdevice_event , - '@SERVERLAYOUT_EVENT@' => $serverlayout_event , - '@MM_X_DRIVER@' => $minimyth->var_get('MM_X_DRIVER') , + { '@MM_X_DRIVER@' => $minimyth->var_get('MM_X_DRIVER') , '@MM_X_DEVICE_INTEL@' => $device_intel , '@MM_X_DEVICE_NVIDIA@' => $device_nvidia , '@MM_X_DEVICE_VIA@' => $device_via , ======================================= --- /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/05-minimyth-detect-lirc.rules.disabled Mon Jul 27 22:56:23 2009 +++ /trunk/gar-minimyth/script/meta/minimyth/files/source/rootfs/lib/udev/rules.d/05-minimyth-detect-lirc.rules.disabled Sat Nov 7 13:25:49 2009 @@ -16,7 +16,12 @@ # known, it cannot be added be included in mm_detect_state_lirc. Therefore, the # mm_detect script will prepend the LIRC device name to the state. #------------------------------------------------------------------------------- +ENV{mm_device_owner}=="*?", GOTO="end" + ACTION!="add|change|remove", GOTO="end" + +PROGRAM="mm_device_blacklist lirc", RESULT=="yes", GOTO="end" + KERNEL=="event[0-9]*", SUBSYSTEM=="input", SUBSYSTEMS=="usb", GOTO="begin" KERNEL=="hiddev[0-9]*", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", GOTO="begin" KERNEL=="lirc[0-9]*", SUBSYSTEM=="lirc", SUBSYSTEMS=="i2c", GOTO="begin" @@ -47,7 +52,9 @@ LABEL="end-nonlirc" +ENV{mm_detect_state_lirc}=="?*", ENV{mm_device_owner}="lirc" + # The state has been set, so save it. -ENV{mm_detect_state_lirc}=="?*", RUN+="/lib/udev/mm_detect lirc %k $env{mm_detect_state_lirc} state_prepend_devname" +ENV{mm_device_owner}=="lirc", RUN+="/lib/udev/mm_detect lirc %k $env{mm_detect_state_lirc} state_prepend_devname" LABEL="end" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "minimyth-commits" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/minimyth-commits?hl=en -~----------~----~----~----~------~----~------~--~---
