summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2005-10-21 09:45:00 +0000
committerPascal Rigaux <pixel@mandriva.com>2005-10-21 09:45:00 +0000
commit18f4052e30f608e95ac314a1aa5be18b4cea6628 (patch)
tree0def66b2bd5fa69815d2c00254df895f2481d834
parent38c3705b4eee672aca75ec6e863f1c980f2ec857 (diff)
downloaddrakx-18f4052e30f608e95ac314a1aa5be18b4cea6628.tar
drakx-18f4052e30f608e95ac314a1aa5be18b4cea6628.tar.gz
drakx-18f4052e30f608e95ac314a1aa5be18b4cea6628.tar.bz2
drakx-18f4052e30f608e95ac314a1aa5be18b4cea6628.tar.xz
drakx-18f4052e30f608e95ac314a1aa5be18b4cea6628.zip
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)
-rw-r--r--perl-install/Xconfig/card.pm8
1 files changed, 7 insertions, 1 deletions
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});