summaryrefslogtreecommitdiffstats
path: root/lib/Xconfig/xfree.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Xconfig/xfree.pm')
-rw-r--r--lib/Xconfig/xfree.pm11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Xconfig/xfree.pm b/lib/Xconfig/xfree.pm
index cc4d6c8..f79a788 100644
--- a/lib/Xconfig/xfree.pm
+++ b/lib/Xconfig/xfree.pm
@@ -180,13 +180,13 @@ sub get_resolutions {
my $Screen = $o_Screen || $raw_X->get_default_screen or return {};
my $depth = val($Screen->{DefaultColorDepth} || $Screen->{DefaultDepth});
- my $Display = find { !$depth || val($_->{l}{Depth}) eq $depth } @{$Screen->{Display} || []} or return { automatic => 1 };
+ my $Display = find { !$depth || val($_->{l}{Depth}) eq $depth } @{$Screen->{Display} || []} or return { automatic => 1, Depth => $depth };
my $s = val($Display->{l}{Virtual} || $Display->{l}{Modes});
my @l;
while ($s =~ /(\d+)(x|\s+)(\d+)/g) {
push @l, { X => $1, Y => $3, Depth => val($Display->{l}{Depth}) };
}
- @l ? @l : { automatic => 1 };
+ @l ? @l : { automatic => 1, Depth => $depth };
}
sub set_resolutions {
my ($raw_X, $resolutions, $o_Screen) = @_;
@@ -206,14 +206,17 @@ sub set_resolutions {
my @l = $Mode_name eq 'Modes' ? @$resolutions : first(@$resolutions);
my @Modes = map { sprintf($Mode_name eq 'Modes' ? '"%dx%d"' : '%d %d', @$_{'X', 'Y'}) } @l;
- $Screen->{DefaultColorDepth} = { val => $Depth };
$Screen->{Display} = [ map {
{ l => { Depth => { val => $_ }, $Mode_name => { val => join(' ', @Modes) } } };
} 8, 15, 16, 24 ];
} else {
- delete $Screen->{DefaultColorDepth};
delete $Screen->{Display};
}
+ if ($Depth) {
+ $Screen->{DefaultColorDepth} = { val => $Depth };
+ } else {
+ delete $Screen->{DefaultColorDepth};
+ }
}
add_gtf_ModeLines($raw_X, $resolutions) if $resolutions->[0]{X};