Hello community,

here is the log from the commit of package gfxboot for openSUSE:Factory checked 
in at 2012-03-29 07:42:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gfxboot (Old)
 and      /work/SRC/openSUSE:Factory/.gfxboot.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gfxboot", Maintainer is "snw...@suse.com"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gfxboot/gfxboot.changes  2011-10-13 
12:25:27.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gfxboot.new/gfxboot.changes     2012-03-29 
07:42:25.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Mar 28 14:26:53 CEST 2012 - snw...@suse.de
+
+- ddc test record
+- rework monitor detection
+- new video selection menu
+
+-------------------------------------------------------------------

Old:
----
  gfxboot-4.4.7.tar.bz2

New:
----
  gfxboot-4.5.0.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gfxboot.spec ++++++
--- /var/tmp/diff_new_pack.3lc04q/_old  2012-03-29 07:42:30.000000000 +0200
+++ /var/tmp/diff_new_pack.3lc04q/_new  2012-03-29 07:42:30.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gfxboot
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,15 +16,14 @@
 #
 
 
-
 Name:           gfxboot
-Version:        4.4.7
-Release:        1
-License:        GPL-2.0+
+Version:        4.5.0
+Release:        0
 Summary:        Graphical Boot Logo for GRUB, LILO and SYSLINUX
-Url:            http://en.opensuse.org/SDB:Gfxboot
+License:        GPL-2.0+
 Group:          System/Boot
-Source:         gfxboot-4.4.7.tar.bz2
+Url:            http://en.opensuse.org/SDB:Gfxboot
+Source:         gfxboot-4.5.0.tar.bz2
 Source1:        KDE.tar.bz2
 Source2:        openSUSE.tar.bz2
 Source3:        SLED.tar.bz2
@@ -56,7 +55,6 @@
 Tools to configure the graphics for your GRUB, LILO or SYSLINUX bootloader.
 
 %package        devel
-License:        GPL-2.0+
 Summary:        Tools for creating a graphical boot logo
 Group:          Development/Libraries/C and C++
 Requires:       %{name} = %{version}

++++++ KDE.tar.bz2 ++++++

++++++ SLED.tar.bz2 ++++++

++++++ SLES.tar.bz2 ++++++

++++++ examples.tar.bz2 ++++++

++++++ gfxboot-4.4.7.tar.bz2 -> gfxboot-4.5.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.4.7/VERSION new/gfxboot-4.5.0/VERSION
--- old/gfxboot-4.4.7/VERSION   2011-10-13 09:28:26.000000000 +0200
+++ new/gfxboot-4.5.0/VERSION   2012-03-28 14:26:45.000000000 +0200
@@ -1 +1 @@
-4.4.7
+4.5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.4.7/bincode.asm 
new/gfxboot-4.5.0/bincode.asm
--- old/gfxboot-4.4.7/bincode.asm       2011-09-15 16:41:43.000000000 +0200
+++ new/gfxboot-4.5.0/bincode.asm       2012-03-28 14:26:09.000000000 +0200
@@ -501,17 +501,10 @@
 tmp_var_2              dd 0
 tmp_var_3              dd 0
 
-ddc_timings            dw 0            ; standard ddc timing info
-ddc_xtimings           dd 0            ; converted standard timing/final 
timing value
-ddc_xtimings1          dd 0, 0, 0, 0   ; must follow ddc_xtimings
-ddc_xtimings2          dd 0, 0, 0, 0   ; must follow ddc_xtimings1
-ddc_mult               dd 0, 1         ; needed for ddc timing calculation
-                       dd 3, 4
-                       dd 4, 5
-                       dd 9, 16
-
-fsc_bits               dw 0, 0x0004, 0x4000, 0x0200, 0x0100, 0x0200, 0, 0x4000
-                       dw 0x0200, 0, 0, 0, 0, 0, 0, 0
+                       ; display size list
+display_res.cnt                dw 0   
+display_res            times 16 dw 0, 0
+display_res_pref       dw 0, 0
 
                        align 2
 pm_idt                 dw 7ffh                 ; idt for pm
@@ -7495,25 +7488,72 @@
                jb prim_monitorsize_90
                mov [pstack.ptr],eax
 
-               cmp word [ddc_xtimings],0
+               cmp word [display_res_pref],0
                jnz prim_monitorsize_50
 
-               call get_monitor_res
+               call read_ddc
 
 prim_monitorsize_50:
 
                mov dl,t_int
-               movzx eax,word [ddc_xtimings]
+               movzx eax,word [display_res_pref]
                mov ecx,1
                call set_pstack_tos
                mov dl,t_int
-               movzx eax,word [ddc_xtimings + 2]
+               movzx eax,word [display_res_pref + 2]
                xor ecx,ecx
                call set_pstack_tos
 prim_monitorsize_90:
                ret
 
 
+;; displaysizes - supported display sizes
+;
+; group: gfx.screen
+;
+; ( -- int1 int2 )
+;
+; int1, int2: width and height
+;
+
+               bits 32
+
+prim_displaysizes:
+               cmp word [display_res_pref],0
+               jnz prim_displaysizes_20
+               call read_ddc
+prim_displaysizes_20:
+               xor ebx,ebx
+prim_displaysizes_40:
+               inc ebx
+               cmp bx,[display_res.cnt]
+               ja prim_displaysizes_90
+
+               mov eax,[pstack.ptr]
+               inc eax
+               inc eax
+               cmp [pstack.size],eax
+               mov bp,pserr_pstack_overflow
+               jb prim_displaysizes_90
+               mov [pstack.ptr],eax
+
+               mov dl,t_int
+               movzx eax,word [display_res - 4 + 4*ebx]
+               mov ecx,1
+               push ebx
+               call set_pstack_tos
+               pop ebx
+               mov dl,t_int
+               movzx eax,word [display_res + 2 - 4 + 4*ebx]
+               xor ecx,ecx
+               push ebx
+               call set_pstack_tos
+               pop ebx
+               jmp prim_displaysizes_40
+prim_displaysizes_90:
+               ret
+
+
 ;; image.size - graphics image size
 ;
 ; group: image
@@ -16448,62 +16488,151 @@
 
 
 ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-; Get monitor capabilities.
+; parse edid record
 ;
+; es:ecx       edid
 ;
 
                bits 32
 
-get_monitor_res:
-               call read_ddc
-               call read_fsc
-
-               ; convert timing bitmask to resolution
-               ; if the card has enough memory assume larger resolutions
-
-               mov ax,[ddc_timings]
-               mov dword [ddc_xtimings],640 + (480 << 16)
-               test ax,0ef03h
-               jnz get_mon_res_20
-               cmp word [screen_mem],0x3e              ; at least 4MB-128k
-               jb get_mon_res_21
-get_mon_res_20:
-               mov dword [ddc_xtimings],800 + (600 << 16)
-get_mon_res_21:
-               test ax,0f00h
-               jnz get_mon_res_22
-               cmp word [screen_mem],0x200             ; at least 32MB
-               jb get_mon_res_23
-get_mon_res_22:
-               mov dword [ddc_xtimings],1024 + (768 << 16)
-get_mon_res_23:
-               test ax,0100h
-               jz get_mon_res_24
-               mov dword [ddc_xtimings],1280 + (1024 << 16)
-get_mon_res_24:
-
-               ; find max. resolution
-
-               mov ecx,9
-               mov esi,ddc_xtimings
-
-get_mon_res_30:
-               mov ax,[esi]
-               mov dx,[esi+2]
-
-               cmp ax,[ddc_xtimings]
-               jb get_mon_res_60
-
-               cmp dx,[ddc_xtimings+2]
-               jb get_mon_res_60
-
-               mov [ddc_xtimings],ax
-               mov [ddc_xtimings+2],dx
-
-get_mon_res_60:
-               add esi,4
-               loop get_mon_res_30
+parse_edid:
+               mov word [display_res.cnt],0
+               mov dword [display_res_pref],0
+
+               cmp dword [es:ecx+8],0
+               jz parse_edid_90
+
+               cmp word [es:ecx+18],0
+               jz parse_edid_90
+
+               movzx   eax, byte [es:ecx+35]
+               test    al, 60
+               je      .L5
+               mov     word [display_res], 640
+               mov     word [display_res+2], 480
+               mov     word [display_res.cnt], 1
+.L5:
+               test    al, 3
+               je      .L6
+               mov     ax, [display_res.cnt]
+               movzx   edx, ax
+               inc     eax
+               mov     word [display_res+edx*4], 800
+               mov     word [display_res+2+edx*4], 600
+               mov     [display_res.cnt], ax
+.L6:
+               movzx   eax, byte [es:ecx+36]
+               test    al, -64
+               je      .L7
+               mov     dx, [display_res.cnt]
+               movzx   ebx, dx
+               inc     edx
+               mov     word [display_res+ebx*4], 800
+               mov     word [display_res+2+ebx*4], 600
+               mov     [display_res.cnt], dx
+.L7:
+               test    al, 14
+               je      .L8
+               mov     dx, [display_res.cnt]
+               movzx   ebx, dx
+               inc     edx
+               mov     word [display_res+ebx*4], 1024
+               mov     word [display_res+2+ebx*4], 768
+               mov     [display_res.cnt], dx
+.L8:
+               test    al, 1
+               je      .L9
+               mov     ax, [display_res.cnt]
+               movzx   edx, ax
+               inc     eax
+               mov     word [display_res+edx*4], 1280
+               mov     word [display_res+2+edx*4], 1024
+               mov     [display_res.cnt], ax
+.L9:
+               xor     ebx, ebx
+               mov     edi, 5
+.L15:
+               movzx   edx, byte [es:ecx+39+ebx*2]
+               movzx   eax, byte [es:ecx+38+ebx*2]
+               shr     edx, 6
+               add     eax, 31
+               cmp     edx, 2
+               lea     esi, [eax*8]
+               je      .L12
+               cmp     edx, 3
+               je      .L13
+               dec     edx
+               jne     .L10
+               lea     eax, [esi+esi*2]
+               shr     eax, 2
+               jmp     .L14
+.L12:
+               sal     eax, 5
+               xor     edx, edx
+               div     edi
+               jmp     .L14
+.L13:
+               lea     eax, [esi+esi*8]
+               shr     eax, 4
+               jmp     .L14
+.L10:
+               inc     ebx
+               cmp     ebx, 4
+               jne     .L15
+               mov     eax, 54
+.L17:
+               movzx   ebx, byte [es:ecx+2+eax]
+               movzx   edi, byte [es:ecx+eax]
+               movzx   esi, byte [es:ecx+1+eax]
+               mov     edx, ebx
+               sal     edi, 24
+               sal     esi, 16
+               sal     edx, 8
+               add     esi, edi
+               add     esi, edx
+               movzx   edx, byte [es:ecx+3+eax]
+               add     esi, edx
+               cmp     esi, 255
+               jbe     .L16
+               movzx   edx, byte [es:ecx+4+eax]
+               movzx   esi, byte [es:ecx+5+eax]
+               and     edx, 240
+               sal     edx, 4
+               add     ebx, edx
+               movzx   edx, byte [es:ecx+7+eax]
+               and     edx, 240
+               sal     edx, 4
+               add     edx, esi
+               je      parse_edid_90
+               test    ebx, ebx
+               je      parse_edid_90
+               cmp     edx, 4095
+               je      parse_edid_90
+               cmp     ebx, 4095
+               je      parse_edid_90
+               mov     si, [display_res.cnt]
+               movzx   edi, si
+               inc     esi
+               mov     [display_res+edi*4], bx
+               mov     [display_res+2+edi*4], dx
+               mov     [display_res_pref], bx
+               mov     [display_res_pref+2], dx
+               mov     [display_res.cnt], si
+.L16:
+               add     eax, 18
+               cmp     eax, 126
+               jne     .L17
+               jmp     parse_edid_90
+.L14:
+               movzx   edx, word [display_res.cnt]
+               mov     [display_res+2+edx*4], ax
+               mov     ax, [word display_res.cnt]
+               mov     [display_res+edx*4], si
+               inc     eax
+               mov     [display_res.cnt], ax
+               jmp     .L10
 
+parse_edid_90:
                ret
 
 
@@ -16560,124 +16689,30 @@
                jmp read_ddc_90
 
 read_ddc_30:
+               mov ecx,[vbe_buffer]
+               call parse_edid
 
-               mov edi,[vbe_buffer]
-
-               mov ax,[es:edi+23h]
-               mov [ddc_timings],ax
-
-               mov ecx,4
-               lea esi,[edi+26h]
-               mov edi,ddc_xtimings1
-read_ddc_40:
-               es lodsb
-               cmp al,1
-               jbe read_ddc_50
-               
-               movzx ebp,al
-               add ebp,31
-               shl ebp,3
-
-               mov al,[es:esi]
-               shr al,6
-               jz read_ddc_50
-               movzx ebx,al
-               shl ebx,3
-
-               mov eax,ebp
-               mul dword [ebx+ddc_mult]
-               div dword [ebx+ddc_mult+4]
-               
-               jz read_ddc_50
+               cmp dword [display_res_pref],0
+               jnz read_ddc_90
 
-               shl eax,16
-               add eax,ebp
-               mov [edi],eax
+               ; pick the largest res
 
+               movzx ecx,word [display_res.cnt]
+               mov esi,display_res
+               or ecx,ecx
+               jz read_ddc_90
+               mov ebx,[esi]
 read_ddc_50:
-               inc esi
-               add edi,4
-               loop read_ddc_40
-
-               mov ecx,4
-               mov esi,[vbe_buffer]
-               add esi,36h
-               mov edi,ddc_xtimings2
+               lodsd
+               cmp eax,ebx
+               jbe read_ddc_60
+               mov ebx,eax
 read_ddc_60:
-               mov eax,[es:esi]
-               bswap eax
-               cmp eax,100h
-               jb read_ddc_80
-               cmp eax,1010101h
-               jz read_ddc_80
-               movzx edx,byte [es:esi+4]
-               and dl,0f0h
-               shl edx,4
-               mov dl,[es:esi+2]
-               movzx ebx,byte [es:esi+7]
-               and bl,0f0h
-               shl ebx,4
-               mov bl,[es:esi+5]
-               or edx,edx
-               jz read_ddc_80
-               or ebx,ebx
-               jz read_ddc_80
-               cmp edx,0fffh
-               jz read_ddc_80
-               cmp ebx,0fffh
-               jz read_ddc_80
-               shl ebx,16
-               add edx,ebx
-               mov [edi],edx
-               add edi,4
-read_ddc_80:
-               add esi,12h
-               loop read_ddc_60
-
-read_ddc_90:
-               ret
-
+               loop read_ddc_50
 
-; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-; Look for a fsc notebook lcd panel and set ddc_timings.
-;
-
-               bits 32
-
-read_fsc:
-               cmp word [ddc_timings],0
-               jnz read_fsc_90
+               mov [display_res_pref],ebx
 
-               mov edi,0f0000h
-read_fsc_10:
-               cmp dword [es:edi],0x696a7546
-               jnz read_fsc_30
-               cmp dword [es:edi+4],0x20757374
-               jnz read_fsc_30
-               mov ecx,0x20
-               xor ebx,ebx
-               mov esi,edi
-read_fsc_20:
-               es lodsb
-               add bl,al
-               dec ecx
-               jnz read_fsc_20
-               or bl,bl
-               jnz read_fsc_30
-               mov al,[es:edi+23]
-               and al,0xf0
-               jnz read_fsc_90
-               mov bl,[es:edi+21]
-               and bl,0xf0
-               shr bl,3
-               mov ax,[fsc_bits+ebx]
-               mov [ddc_timings],ax
-               jmp read_fsc_90
-read_fsc_30:
-               add edi,0x10
-               cmp edi,100000h
-               jbe read_fsc_10
-read_fsc_90:
+read_ddc_90:
                ret
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.4.7/changelog new/gfxboot-4.5.0/changelog
--- old/gfxboot-4.4.7/changelog 2011-10-13 09:28:27.000000000 +0200
+++ new/gfxboot-4.5.0/changelog 2012-03-28 14:26:46.000000000 +0200
@@ -1,4 +1,9 @@
-2011-10-13:    HEAD
+2012-03-28:    4.5.0
+       - ddc test record
+       - rework monitor detection
+       - new video selection menu
+
+2011-10-13:    4.4.7
        - fix isohybrid detection
 
 2011-10-13:    4.4.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.4.7/mk_vocabulary 
new/gfxboot-4.5.0/mk_vocabulary
--- old/gfxboot-4.4.7/mk_vocabulary     2011-09-15 16:41:43.000000000 +0200
+++ new/gfxboot-4.5.0/mk_vocabulary     2012-03-28 14:26:09.000000000 +0200
@@ -17,7 +17,7 @@
   trace dtrace
   malloc free realloc memsize dumpmem
   gettype settype
-  screen.size image.colors vscreen.size monitorsize
+  screen.size image.colors vscreen.size monitorsize displaysizes
   moveto currentpoint lineto setcolor currentcolor putpixel getpixel
   setfont currentfont fontheight strsize show settextmodecolor
   image loadpalette setpalette getpalette
Files old/gfxboot-4.4.7/test/ddc/ddc and new/gfxboot-4.5.0/test/ddc/ddc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.4.7/test/ddc/gfxtest.config 
new/gfxboot-4.5.0/test/ddc/gfxtest.config
--- old/gfxboot-4.4.7/test/ddc/gfxtest.config   1970-01-01 01:00:00.000000000 
+0100
+++ new/gfxboot-4.5.0/test/ddc/gfxtest.config   2012-03-28 14:26:09.000000000 
+0200
@@ -0,0 +1,15 @@
+# all files in this directory ex this config file are added
+# to the bootloader directory
+
+# archive file name in theme directory
+archive=bootlogo
+
+# setup function name in 'gfxtest' script
+setup=isolinux
+
+# list of files to remove in bootloader directory
+rm_files=""
+
+# additional 'gfxboot' args
+args=""
+

++++++ openSUSE.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/config new/themes/openSUSE/config
--- old/themes/openSUSE/config  2011-09-15 16:41:44.000000000 +0200
+++ new/themes/openSUSE/config  2012-03-28 14:26:09.000000000 +0200
@@ -1,2 +1,2 @@
-product=openSUSE 12.1
+product=openSUSE 12.2
 based_on=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/src/common.inc 
new/themes/openSUSE/src/common.inc
--- old/themes/openSUSE/src/common.inc  2011-10-13 09:09:21.000000000 +0200
+++ new/themes/openSUSE/src/common.inc  2012-03-28 14:26:10.000000000 +0200
@@ -368,9 +368,9 @@
 
       video.modes.list xmenu.video .xm_current get get
       dup .vm_mode get 0 ge {
-        dup .vm_height get exch .vm_width get
-        ",%04d%04d.spl" splash_file sprintf
-      } { pop } ifelse
+        ",19201200.spl" splash_file sprintf
+      } if
+      pop
 
       % check whether splash file exists
       splash_file 1 add filesize .undef eq {
@@ -421,15 +421,8 @@
   /splash_file xfree
 
   syslinux {
-    video.modes.list xmenu.video .xm_current get get .vm_mode get
-
-    dup 0 ge {
-      0x200 add "vga=0x%x " bc.cmd dup length add sprintf
-    } {
-      -1 eq {
-        "textmode=1 " bc.cmd dup length add sprintf
-      } if
-    } ifelse
+    video.modes.list xmenu.video .xm_current get get .vm_options get
+    "%s " bc.cmd dup length add sprintf
 
     v_impaired 1 ge {
       "braille=1 " bc.cmd dup length add sprintf
@@ -1638,6 +1631,7 @@
 /progress.bar.color    "progress.bar.color"       white gfxconfig.set.int
 /xmenu.normal.bg       "menu.normal.bg"           black gfxconfig.set.int
 /xmenu.normal.fg       "menu.normal.fg"           white gfxconfig.set.int
+/xmenu.normal.alt.fg   "menu.normal.alt.fg"    0x606060 gfxconfig.set.int
 /xmenu.selected.bg     "menu.selected.bg"         white gfxconfig.set.int
 /xmenu.selected.fg     "menu.selected.fg"         black gfxconfig.set.int
 /window.color.bg       "window.bg"                white gfxconfig.set.int
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/src/dia_video.inc 
new/themes/openSUSE/src/dia_video.inc
--- old/themes/openSUSE/src/dia_video.inc       2011-10-13 08:09:50.000000000 
+0200
+++ new/themes/openSUSE/src/dia_video.inc       2012-03-28 14:26:10.000000000 
+0200
@@ -9,9 +9,18 @@
 % Some global vars.
 %
 % video mode array fields
-/.vm_mode   0 def
-/.vm_width  1 def
-/.vm_height 2 def
+/.vm_mode    0 def
+/.vm_flags   1 def
+/.vm_options 2 def
+/.vm_label   3 def
+/.vm_width   4 def
+/.vm_height  5 def
+
+% .vm_flags:
+% 
+% bit 0: is vbe mode
+%     1: supported display res
+%
 
 % We have kernel splash images for at least these sizes.
 /video.splashsizes [
@@ -78,6 +87,26 @@
 
 
 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+% Check if display supports that resolution.
+%
+% ( video_mode_list_entry ) ==> ( true|false )
+%
+/video.resok {
+  false exch
+
+  0 2 video.res length 1 sub {
+    over over over
+    .vm_height get rot .vm_width get rot video.res exch get eq
+    rot 1 add video.res exch get rot eq and
+    { exch pop true exch exit } if
+  } for
+
+  pop
+
+} def
+
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 % Build video mode list.
 %
 % ( ) ==> ( )
@@ -87,10 +116,14 @@
 
   /xmenu xmenu.video def
 
+  "ddc" findfile test1
+  /video.res [ displaysizes ] 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)
+    [ -1 0 "textmode=1" /txt_text_mode 0 0 ]   % special: text mode
+    [ -2 0 "nomodeset"  "No KMS"       1 0 ]   % special: no KMS (width = 1 to 
make it sort)
+    [ -3 0 ""           "Default"      2 0 ]   % special: no video options 
(width = 2 to make it sort)
 
     % first, try 16 bit
     /vm_color_bits 16 def
@@ -106,7 +139,7 @@
             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
+          { 1 "" "" 5 -2 roll ] } { pop pop pop pop } ifelse
         } ifelse
       } for
 
@@ -118,6 +151,17 @@
       } ifelse
     } loop
 
+    % add display sizes
+
+    video.res length {
+      0 2 video.res length 1 sub {
+        [
+          exch 0 2 "" "" 5 -1 roll
+          video.res over get exch video.res exch 1 add get
+        ]
+      } for
+    } if
+
   ] def
 
   % sort video.modes.list
@@ -140,9 +184,11 @@
   /video.modes.list
     [
       video.modes.list {
-        dup .vm_mode get 0 gt {                % ensure it's not the first 
entry
+        dup .vm_mode get 0 ge {                % 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 {
+            over .vm_mode get over .vm_mode get max 2 index .vm_mode rot put
+            over .vm_flags get over .vm_flags get or 2 index .vm_flags rot put
             free
           } if
         } if
@@ -151,21 +197,45 @@
     video.modes.list free
   def
 
-  % create mode strings
+  % create mode strings & menu labels
+
+  true
+
+  video.modes.list {
+    dup .vm_flags get 3 and {
+      dup .vm_options 64 string put
+      dup .vm_label 32 string put
+
+      % add separating line before first entry
+      over {
+        dup .vm_label get "\x09" exch sprintf
+        exch pop false exch
+      } if
+
+      dup .vm_flags get 1 and {
+        dup .vm_mode get 0x200 add over .vm_options get "vga=0x%x " exch 
sprintf
+      } if
+
+      dup .vm_flags get 2 and {
+        dup .vm_height get over .vm_width get 2 index .vm_options get 
"video=%dx%d " exch dup length add sprintf
+      } if
+
+      dup .vm_flags get 2 and 0 eq {
+        dup .vm_label get "\x01" exch dup length add sprintf
+      } if
+
+      dup .vm_height get over .vm_width get 2 index .vm_label get "%d x %d" 
exch dup length add sprintf
+    } if
+
+    pop
+  } forall
+
+  pop
+
+  % create menu
 
   /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
+    video.modes.list { .vm_label get } forall
   ] def
 
   % add to menu
@@ -176,7 +246,7 @@
   % select largest mode the monitor supports
 
   boot_failsafe 4 and { 0 0 } { monitorsize } ifelse
-  exch 800 max exch 600 max            % at least 800x600
+  exch 1024 max exch 768 max           % at least 1024x768
 
   % ATI quirk: avoid 1280x1024, older chips (<= 8MB, max res 1280x1024) use
   % interlaced there
@@ -190,15 +260,15 @@
     } if
   } if 
 
-  xmenu .xm_current -1 put
+  % 'default' entry
+  xmenu .xm_current 2 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 {
+    exch .vm_height get 3 index le and {
       xmenu .xm_current 2 index put
     } if
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/src/gfxboot.cfg 
new/themes/openSUSE/src/gfxboot.cfg
--- old/themes/openSUSE/src/gfxboot.cfg 2011-10-13 08:17:33.000000000 +0200
+++ new/themes/openSUSE/src/gfxboot.cfg 2012-03-28 14:26:10.000000000 +0200
@@ -52,6 +52,7 @@
 ; menu colors
 menu.normal.bg=0xd8deed
 menu.normal.fg=0x000000
+menu.normal.alt.fg=0x606060
 menu.selected.bg=0x6c6c6c
 menu.selected.fg=0xffffff
 ; window colors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/src/xmenu.inc 
new/themes/openSUSE/src/xmenu.inc
--- old/themes/openSUSE/src/xmenu.inc   2011-09-15 16:41:46.000000000 +0200
+++ new/themes/openSUSE/src/xmenu.inc   2012-03-28 14:26:10.000000000 +0200
@@ -256,6 +256,8 @@
 % ( entry ) ==> ( )
 %
 /xmenu.viewentry {
+  dup xmenu .xm_current get eq { true } { false } ifelse /xmenu.is_selected 
exch def
+
   xmenu.font setfont
 
   dup xmenu.maxlines mod xmenu.lheight mul xmenu.y add /xmenu.pos.y exch def
@@ -265,14 +267,14 @@
 
   xmenu.pos.x xmenu.pos.y moveto
 
-  dup xmenu .xm_current get eq { xmenu.saved.selected } { xmenu.saved.normal } 
ifelse
+  xmenu.is_selected { xmenu.saved.selected } { xmenu.saved.normal } ifelse
 
   dup {
     transp { pop } { restorescreen } ifelse
   } {
     pop
 
-    dup xmenu .xm_current get eq { xmenu.selected.bg } { xmenu.normal.bg } 
ifelse
+    xmenu.is_selected { xmenu.selected.bg } { xmenu.normal.bg } ifelse
     setcolor xmenu.width xmenu.lheight fillrect
 
     dup xmenu .xm_current get eq {
@@ -280,7 +282,7 @@
       xmenu.dark xmenu.light xmenu.width xmenu.lheight drawborder
     } if
 
-    dup xmenu .xm_current get eq { /xmenu.saved.selected } { 
/xmenu.saved.normal } ifelse
+    xmenu.is_selected { /xmenu.saved.selected } { /xmenu.saved.normal } ifelse
       xmenu.pos.x xmenu.pos.y moveto
       xmenu.width xmenu.lheight
       savescreen
@@ -290,7 +292,7 @@
 
   transp {
     % copy entry to avoid reading the screen again
-    dup xmenu .xm_current get eq { xmenu.saved.selected } { xmenu.saved.normal 
} ifelse
+    xmenu.is_selected { xmenu.saved.selected } { xmenu.saved.normal } ifelse
     xmenu.tmpbuf .undef eq {
       dup length malloc /xmenu.tmpbuf exch def
     } if
@@ -302,7 +304,7 @@
     xmenu.pos.x xmenu.pos.y moveto xmenu.tmpbuf restorescreen
   } if
 
-  dup xmenu .xm_current get eq { xmenu.selected.fg } { xmenu.normal.fg } 
ifelse setcolor
+  xmenu.is_selected { xmenu.selected.fg } { xmenu.normal.fg } ifelse setcolor
 
   config.rtl {
     xmenu.pos.x xmenu.width add xmenu.hspace sub xmenu.pos.y xmenu.vspace add 
moveto
@@ -326,6 +328,8 @@
       setcolor
       moveto
 
+      dup 0 get '\x01' eq xmenu.is_selected not and { 1 add 
xmenu.normal.alt.fg setcolor } if
+
       dup 0 get '\x09' eq {
         1 add
         show.rtl
@@ -339,6 +343,8 @@
       } ifelse
 
     } {
+      dup 0 get '\x01' eq xmenu.is_selected not and { 1 add 
xmenu.normal.alt.fg setcolor } if
+
       show.rtl
     } ifelse
 

++++++ upstream.tar.bz2 ++++++

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to