[patch] Correct colour handling

From: Martin Schulze (joey@infodrom.org)
Date: Sat Oct 19 2002 - 18:50:54 CEST

  • Next message: Martin Schulze: "[patch] Correct monochrome selection"

    Moin Ralf,

    please apply the patch below which will correct colour handling. The
    outcome of this patch will only be visible with a monochrome graphics
    card since they can see what is written on the screen again.

    As you can see, not all occasions where the currently used colour is
    changed, isn't protected by the 'if (can_do_color)' check. Some
    occurrences though use it.

    This patch is done basically by Thiemo Seufer during this years'
    Oldenburg meeting.

    Regards,

            Joey

    Index: console.c
    ===================================================================
    RCS file: /home/cvs/linux/drivers/char/console.c,v
    retrieving revision 1.37.2.2
    diff -u -r1.37.2.2 console.c
    --- console.c 26 Jun 2002 22:35:32 -0000 1.37.2.2
    +++ console.c 19 Oct 2002 16:47:01 -0000
    @@ -1046,7 +1046,8 @@
             underline = 0;
             reverse = 0;
             blink = 0;
    - color = def_color;
    + if (can_do_color)
    + color = def_color;
     }
     
     /* console_sem is held */
    @@ -1119,7 +1120,8 @@
                                       * with white underscore (Linux - use
                                       * default foreground).
                                       */
    - color = (def_color & 0x0f) | background;
    + if (can_do_color)
    + color = (def_color & 0x0f) | background;
                                     underline = 1;
                                     break;
                             case 39: /* ANSI X3.64-1979 (SCO-ish?)
    @@ -1127,11 +1129,13 @@
                                       * Reset colour to default? It did this
                                       * before...
                                       */
    - color = (def_color & 0x0f) | background;
    + if (can_do_color)
    + color = (def_color & 0x0f) | background;
                                     underline = 0;
                                     break;
                             case 49:
    - color = (def_color & 0xf0) | foreground;
    + if (can_do_color)
    + color = (def_color & 0xf0) | foreground;
                                     break;
                             default:
                                     if (par[i] >= 30 && par[i] <= 37)
    @@ -1274,9 +1278,11 @@
                             }
                             break;
                     case 8: /* store colors as defaults */
    - def_color = attr;
    - if (hi_font_mask == 0x100)
    - def_color >>= 1;
    + if (can_do_color) {
    + def_color = attr;
    + if (hi_font_mask == 0x100)
    + def_color >>= 1;
    + }
                             default_attr(currcons);
                             update_attr(currcons);
                             break;

    -- 
    Every use of Linux is a proper use of Linux.  -- Jon "Maddog" Hall
    


    This archive was generated by hypermail 2.1.4 : Sat Oct 19 2002 - 18:57:10 CEST