summaryrefslogtreecommitdiffstats
path: root/src/dia_video.inc
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2009-01-27 17:30:35 +0000
committerPascal Rigaux <pixel@mandriva.com>2009-01-27 17:30:35 +0000
commit4ca721b1fe6022c985ab7b10d1bea36f657c28b3 (patch)
tree1274a22b2a5ecf0214849a79c6773af3dcf87581 /src/dia_video.inc
parenta218dc40a68bfe95d2307d9d2d115fc46e8f3cd8 (diff)
downloadbootloader-theme-4ca721b1fe6022c985ab7b10d1bea36f657c28b3.tar
bootloader-theme-4ca721b1fe6022c985ab7b10d1bea36f657c28b3.tar.gz
bootloader-theme-4ca721b1fe6022c985ab7b10d1bea36f657c28b3.tar.bz2
bootloader-theme-4ca721b1fe6022c985ab7b10d1bea36f657c28b3.tar.xz
bootloader-theme-4ca721b1fe6022c985ab7b10d1bea36f657c28b3.zip
we do not handle multiple splash files (splashy)
only propose a limited number of framebuffer modes (note that "video" menu is only used for syslinux, not grub)
Diffstat (limited to 'src/dia_video.inc')
-rw-r--r--src/dia_video.inc190
1 files changed, 4 insertions, 186 deletions
diff --git a/src/dia_video.inc b/src/dia_video.inc
index 8bbba40..6e7f16d 100644
--- a/src/dia_video.inc
+++ b/src/dia_video.inc
@@ -9,73 +9,9 @@
% Some global vars.
%
% video mode array fields
-/.vm_mode 0 def
-/.vm_width 1 def
-/.vm_height 2 def
-
-% We have kernel splash images for at least these sizes.
-/video.splashsizes [
- 0 0 % special: for text mode
- 1 0 % special: for VESA mode
- 800 600
- 1024 600
- 1024 768
- 1280 800
- 1280 1024
- 1400 1050
- 1600 1200
- 1680 1050
- 1920 1200
-] def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Create sort key for video modes.
-%
-% ( vm_index ) ==> ( sort_index )
-%
-/vmsortindex {
- video.modes.list exch get
- dup
- .vm_width get 16 shl
- exch .vm_height get add
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Swap video mode entries.
-% (Helper for video mode sorting.)
-%
-% ( vm_index_1 vm_index_2 ) ==> ( )
-%
-/vmsortexch {
- over video.modes.list exch get
- over video.modes.list exch get
- video.modes.list
- 5 -1 roll rot put
- video.modes.list 3 1 roll put
-} def
-
-
-% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-% Check if we have a splash in that resolution.
-%
-% ( video_mode_list_entry ) ==> ( true|false )
-%
-/video.havesplash {
- false exch
-
- 0 2 video.splashsizes length 1 sub {
- over over over
- .vm_height get rot .vm_width get rot video.splashsizes exch get eq
- rot 1 add video.splashsizes exch get rot eq and
- { exch pop true exch exit } if
- } for
-
- pop
-
-} def
-
+/video.default 2 def
+/video.modes.list [ 0 785 788 791 ] def
+/video.modes.text [ "Text" "640 x 480" "800 x 600" "1024 x 768" ] def
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Build video mode list.
@@ -87,125 +23,9 @@
/xmenu xmenu.video def
- % build list of video modes
- /video.modes.list [
- [ -1 0 0 ] % special: text mode
- [ -2 1 0 ] % special: VESA mode (width = 1 to make it sort)
-
- % first, try 16 bit
- /vm_color_bits 16 def
-
- {
- 0 1 videomodes {
- videomodeinfo dup .undef eq {
- pop pop pop pop
- } {
- [
- over 0xbfff and 6 2 roll
- 0x4000 and % fb support
- exch vm_color_bits eq and % color bits
- over 600 ge and % height >= 600
- 2 index 800 ge and % width >= 800
- { ] } { pop pop pop pop } ifelse
- } ifelse
- } for
-
- % no modes added? -> try 8 bit
- dup .vm_mode get -2 eq vm_color_bits 8 ne and {
- /vm_color_bits 8 def
- } {
- exit
- } ifelse
- } loop
-
- ] def
-
- % sort video.modes.list
-
- video.modes.list length 3 gt {
- 0 1 video.modes.list length 2 sub {
- dup 1 add 1 video.modes.list length 1 sub {
- over vmsortindex over vmsortindex gt {
- over over vmsortexch
- } if
- pop
- } for
- pop
- } for
- } if
-
- % remove duplicates
- % (assumes text or vesa entry to be first)
-
- /video.modes.list
- [
- video.modes.list {
- dup .vm_mode get 0 gt { % ensure it's not the first entry
- over .vm_width get over .vm_width get eq
- 2 index .vm_height get 2 index .vm_height get eq and {
- free
- } if
- } if
- } forall
- ]
- video.modes.list free
- def
-
- % create mode strings
-
- /video.modes.text [
- video.modes.list {
- dup .vm_width get
- dup 0 eq {
- pop pop /txt_text_mode
- } {
- dup 1 eq {
- pop pop "VESA"
- } {
- exch .vm_height get exch "%d x %d" 32 string dup 5 1 roll sprintf
- } ifelse
- } ifelse
- } forall
- ] def
-
- % add to menu
-
xmenu .xm_list video.modes.text put
xmenu .xm_title .undef put
-
- % select largest mode the monitor supports
-
- boot_failsafe 4 and { 0 0 } { monitorsize } ifelse
- exch 800 max exch 600 max % at least 800x600
-
- % ATI quirk: avoid 1280x1024, older chips (<= 8MB, max res 1280x1024) use
- % interlaced there
-
- video.modes.list dup length 1 sub get
- dup .vm_width get 1280 eq exch .vm_height get 1024 eq and {
- video.memory 0x2000 le {
- video.oem "ATI " strstr 1 eq {
- exch 1024 min exch 768 min % down to 1024x768
- } if
- } if
- } if
-
- xmenu .xm_current -1 put
-
- -1
- video.modes.list {
- exch 1 add exch
-
- dup .vm_width get 4 index le
- over .vm_height get 4 index le and
- exch video.havesplash and {
- xmenu .xm_current 2 index put
- } if
-
- } forall
- pop
-
- pop pop
+ xmenu .xm_current video.default put
} def
@@ -259,5 +79,3 @@
pmenu.panel.update
} def
-
-