• O
    ui/curses: Fix color attribute of monitor for curses · 4083733d
    OGAWA Hirofumi 提交于
    Current text_console_update() writes totally broken color attributes
    to console_write_ch(). The format now is writing,
    
    [WRONG]
    	bold << 21 | fg << 12 | bg << 8 | char
    	fg == 3bits curses color number
    	bg == 3bits curses color number
    
    I can't see this format is where come from. Anyway, this doesn't work
    at all.
    
    What curses expects is actually (and vga.c is using),
    
    [RIGHT]
    	bold << 21 | bg << 11 | fg << 8 | char
    	fg == 3bits vga color number
    	bg == 3bits vga color number
    
    And curses set COLOR_PAIR() up to match this format, and curses's
    chtype. I.e,
    
    	bold | color_pair | char
    	color_pair == (bg << 3 | fg)
    
    To fix, this simply uses VGA color number everywhere except curses.c
    internal. Then, convert it to above [RIGHT] format to write by
    console_write_ch(). And as bonus, this reduces to expose curses define
    to other parts (removes COLOR_* from console.c).
    
    [Tested the first line is displayed as white on blue back for monitor
    in curses console]
    Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Message-id: 87r3j95407.fsf@mail.parknet.co.jp
    Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
    4083733d
curses.c 12.2 KB