From 6bf5746de2168d8a31fab59edee1f2c49836870a Mon Sep 17 00:00:00 2001 From: inxi-svn Date: Mon, 12 Aug 2013 23:25:45 +0000 Subject: [PATCH] New version, new tarball. Fixed a bug in Xorg where it shows drivers as unloaded when they are actually loaded. Since we can't fix xorg, inxi will try to work around this bug by validating one step further in the Xorg.0.log data, to confirm that drivers noted as loaded/unloaded/failed are actually running the display(s) of the system. There is a possible case of error that might happen due to this change in the case of a system with a complex xorg that uses two drivers/modules to run two different displays, ie, nvidia on one, and amd on the other, for example, or intel/nvidia, etc. However, if that bug appears, we'll get that data set of debugging output and fix it at that point. This fix repairs an existing xorg bug that is unlikely to get fixed any time soon (the call to load the detected drivers, eg, vesa, intel, is repeated, causing a failure of driver already loaded on the second occurance. --- inxi | 20 +++++++++++++++++--- inxi.changelog | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/inxi b/inxi index 28e13d2..d69ded1 100755 --- a/inxi +++ b/inxi @@ -1,8 +1,8 @@ #!/usr/bin/env bash ######################################################################## #### Script Name: inxi -#### Version: 1.9.12 -#### Date: July 2 2013 +#### Version: 1.9.13 +#### Date: August 12 2013 #### Patch Number: 00 ######################################################################## #### SPECIAL THANKS @@ -4701,7 +4701,7 @@ get_graphics_driver() eval $LOGFS # list is from sgfxi plus non-free drivers - local driver_list='apm|ark|ati|chips|cirrus|cyrix|fbdev|fglrx|glint|i128|i740|intel|i810|imstt|mach64|mga|neomagic|nsc|nv|nvidia|openchrome|nouveau|radeon|radeonhd|rendition|s3|s3virge|savage|siliconmotion|sis|sisusb|tdfx|tga|trident|tseng|unichrome|vboxvideo|vesa|vga|via|voodoo|vmware|v4l' + local driver_list='apm|ark|ati|chips|cirrus|cyrix|fbdev|fglrx|glint|i128|i740|intel|i810|imstt|mach64|mga|neomagic|nsc|nvidia|nv|openchrome|nouveau|radeon|radeonhd|rendition|s3virge|s3|savage|siliconmotion|sisusb|sis|tdfx|tga|trident|tseng|unichrome|vboxvideo|vesa|vga|via|voodoo|vmware|v4l' local driver='' driver_string='' xorg_log_data='' status='' temp_array='' if [[ $B_XORG_LOG == 'true' ]];then @@ -4709,7 +4709,10 @@ get_graphics_driver() gawk ' BEGIN { driver="" + bLoaded="false" + IGNORECASE=1 } + # note that in file names, driver is always lower case /[[:space:]]Loading.*('"$driver_list"')_drv.so$/ { driver=gensub(/.*[[:space:]]Loading.*('"$driver_list"')_drv.so/, "\\1", 1, $0 ) # we get all the actually loaded drivers first, we will use this to compare the @@ -4733,6 +4736,17 @@ get_graphics_driver() aDrivers[driver]="failed" } } + # verify that the driver actually started the desktop, even with false failed messages which can occur + # this is the driver that is actually driving the display + /.*\([0-9]+\):\sDepth.*framebuffer/ { + driver=gensub(/.*('"$driver_list"')\([0-9]+\):\sDepth.*framebuffer.*/, "\\1", 1, $0 ) + # we need to make sure that the driver has already been truly loaded, not just discussed, also + # set driver to lower case because sometimes it will show as RADEON or NVIDIA in the actual x start + driver=tolower(driver) + if ( driver != $0 && driver in aDrivers ) { + aDrivers[driver]="loaded" + } + } END { for ( driver in aDrivers ) { print driver "," aDrivers[driver] diff --git a/inxi.changelog b/inxi.changelog index d5a0b33..348ea60 100755 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,3 +1,27 @@ +===================================================================================== +Version: 1.9.13 +Patch Version: 00 +Script Date: August 12 2013 +----------------------------------- +Changes: +----------------------------------- +New version, new tarball. Fixed a bug in Xorg where it shows drivers as unloaded when they +are actually loaded. Since we can't fix xorg, inxi will try to work around this bug by validating +one step further in the Xorg.0.log data, to confirm that drivers noted as loaded/unloaded/failed are +actually running the display(s) of the system. + +There is a possible case of error that might happen due to this change in the case of a system with +a complex xorg that uses two drivers/modules to run two different displays, ie, nvidia on one, and amd +on the other, for example, or intel/nvidia, etc. However, if that bug appears, we'll get that data set +of debugging output and fix it at that point. + +This fix repairs an existing xorg bug that is unlikely to get fixed any time soon (the call to load the +detected drivers, eg, vesa, intel, is repeated, causing a failure of driver already loaded on the second +occurance. + +----------------------------------- +-- Harald Hope - Mon, 12 Aug 2013 16:20:51 -0700 + ===================================================================================== Version: 1.9.12 Patch Version: 00