From 18f4052e30f608e95ac314a1aa5be18b4cea6628 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Fri, 21 Oct 2005 09:45:00 +0000 Subject: ensure we don't load both "/usr/X11R6/lib/modules/extensions/libglx.so" and "/usr/X11R6/lib/modules/extensions/nvidia/libglx.so" (backported from HEAD) (bugzilla #19285) --- perl-install/Xconfig/card.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'perl-install/Xconfig') diff --git a/perl-install/Xconfig/card.pm b/perl-install/Xconfig/card.pm index 92ef1b89d..a12052e61 100644 --- a/perl-install/Xconfig/card.pm +++ b/perl-install/Xconfig/card.pm @@ -63,6 +63,9 @@ sub to_raw_X { $raw_X->get_ServerLayout->{Xinerama} = { commented => !$card->{Xinerama}, Option => 1 } if defined $card->{Xinerama}; + # cleanup previous special nvidia libglx + $raw_X->remove_load_module($_) foreach @{$card->{REMOVE_GLX} || []}; + $raw_X->set_load_module('glx', !$card->{DRI_GLX_SPECIAL} && $card->{Driver} ne 'fbdev'); #- glx for everyone, except proprietary nvidia and fbdev $raw_X->set_load_module('dri', $card->{use_DRI_GLX} && !$card->{DRI_GLX_SPECIAL}); @@ -317,6 +320,8 @@ sub install_server { -x $prog or die "server not available (should be in $prog)"; my $modules_dir = "/usr/X11R6/$lib/modules"; + my $new_nvidia_libglx = "$modules_dir/extensions/nvidia/libglx.so"; + my $old_nvidia_libglx = "$modules_dir/extensions/libglx.so"; #- make sure everything is correct at this point, packages have really been installed #- and driver and GLX extension is present. if ($card->{Driver2} eq 'nvidia' && @@ -324,7 +329,7 @@ sub install_server { #- when there is extensions/libglx.a, it means extensions/libglx.so is not xorg's libglx, so it may be nvidia's #- new nvidia packages have libglx.so in extensions/nvidia instead of simply extensions/ my $libglx_a = -e "$::prefix$modules_dir/extensions/libglx.a"; - my $libglx = find { -l "$::prefix$_" } "$modules_dir/extensions/nvidia/libglx.so", if_($libglx_a, "$modules_dir/extensions/libglx.so"); + my $libglx = find { -l "$::prefix$_" } $new_nvidia_libglx, if_($libglx_a, $old_nvidia_libglx); if ($libglx) { log::explanations("Using specific NVIDIA driver and GLX extensions"); $card->{Driver} = 'nvidia'; @@ -338,6 +343,7 @@ sub install_server { log::explanations("Using specific ATI fglrx and DRI drivers"); $card->{Driver} = 'fglrx'; } + $card->{REMOVE_GLX} = [ $old_nvidia_libglx, $new_nvidia_libglx ]; libgl_config($card->{Driver}); -- cgit v1.2.1