From 4bf70375459a272ee50c0f0fd19112f7ba0de04d Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Wed, 28 Aug 2002 14:33:48 +0000 Subject: Xconfig::xfree3::set_resolution and Xconfig::xfree4::set_resolution must not modify parameter $Screen before calling Xconfig::xfreeX::set_resolution (otherwise the resolution setting is done on only one device which is bad for multi-head) --- perl-install/Xconfig/xfree3.pm | 9 ++++----- perl-install/Xconfig/xfree4.pm | 12 ++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/perl-install/Xconfig/xfree3.pm b/perl-install/Xconfig/xfree3.pm index 9235f8f96..9b69b3cb6 100644 --- a/perl-install/Xconfig/xfree3.pm +++ b/perl-install/Xconfig/xfree3.pm @@ -86,13 +86,12 @@ sub set_wacoms { sub depths { 8, 15, 16, 24, 32 } sub set_resolution { my ($raw_X, $resolution, $Screen) = @_; - $Screen ||= $raw_X->get_default_screen or return {}; $resolution = +{ %$resolution }; - - #- use framebuffer if Screen is - $resolution->{fbdev} = 1 if val($Screen->{Driver}) eq 'fbdev'; - + if (my $Screen_ = $Screen || $raw_X->get_default_screen) { + #- use framebuffer if Screen is + $resolution->{fbdev} = 1 if val($Screen_->{Driver}) eq 'fbdev'; + } $raw_X->SUPER::set_resolution($resolution, $Screen); } diff --git a/perl-install/Xconfig/xfree4.pm b/perl-install/Xconfig/xfree4.pm index 3045bd697..542226000 100644 --- a/perl-install/Xconfig/xfree4.pm +++ b/perl-install/Xconfig/xfree4.pm @@ -85,16 +85,16 @@ sub set_wacoms { sub depths { 8, 15, 16, 24 } sub set_resolution { my ($raw_X, $resolution, $Screen) = @_; - $Screen ||= $raw_X->get_default_screen or return {}; $resolution = +{ %$resolution }; - - #- use framebuffer if corresponding Device has Driver framebuffer - my $Device = $raw_X->get_Section_by_Identifier('Device', val($Screen->{Device})) or internal_error("no device named $Screen->{Device}"); - $resolution->{fbdev} = 1 if val($Device->{Driver}) eq 'fbdev'; - + if (my $Screen_ = $Screen || $raw_X->get_default_screen) { + #- use framebuffer if corresponding Device has Driver framebuffer + my $Device = $raw_X->get_Section_by_Identifier('Device', val($Screen_->{Device})) or internal_error("no device named $Screen_->{Device}"); + $resolution->{fbdev} = 1 if val($Device->{Driver}) eq 'fbdev'; + } #- XFree4 doesn't like depth 32, silently replacing it with 24 $resolution->{Depth} = 24 if $resolution->{Depth} eq '32'; + $raw_X->SUPER::set_resolution($resolution, $Screen); } -- cgit v1.2.1