Changeset 6d5005c in mainline


Ignore:
Timestamp:
2006-06-04T21:51:39Z (18 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0aa024b1
Parents:
ec9623d
Message:

Fixed and improved dummy console switch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • console/console.c

    rec9623d r6d5005c  
    206206        static int console_pixmap = -1;
    207207        int i, j;
     208        keyfield_t *field;
     209        style_t *style;
    208210        char c;
    209211
     
    242244        set_style(&conn->screenbuffer.style);
    243245        curs_goto(conn->screenbuffer.position_y, conn->screenbuffer.position_x);
     246        curs_visibility(0);
     247       
    244248        if (interbuffer) {
    245249                for (i = 0; i < conn->screenbuffer.size_x; i++)
     
    247251                                interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j);
    248252                /* This call can preempt, but we are already at the end */
    249                 sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL);               
    250                 curs_visibility(conn->screenbuffer.is_cursor_visible);
    251         } else {
     253                j = sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL);           
     254        };
     255       
     256        if ((!interbuffer) || (j != 0)){
     257                set_style(&conn->screenbuffer.style);
    252258                clrscr();
    253                
    254                 for (i = 0; i < conn->screenbuffer.size_x; i++)
    255                         for (j = 0; j < conn->screenbuffer.size_y; j++) {
    256                                 c = get_field_at(&(conn->screenbuffer),i, j)->character;
    257                                 if (c && c != ' ')
    258                                         prtchr(c, j, i);
     259                style = &conn->screenbuffer.style;
     260
     261                for (j = 0; j < conn->screenbuffer.size_y; j++)
     262                        for (i = 0; i < conn->screenbuffer.size_x; i++) {
     263                                field = get_field_at(&(conn->screenbuffer),i, j);
     264                                if (!style_same(*style, field->style))
     265                                        set_style(&field->style);
     266                                style = &field->style;
     267                                if ((field->character == ' ') && (style_same(field->style, conn->screenbuffer.style)))
     268                                        continue;
     269
     270                                prtchr(field->character, j, i);
    259271                        }
    260                
    261                 curs_visibility(conn->screenbuffer.is_cursor_visible);
    262         }
     272        }
     273       
     274        curs_visibility(conn->screenbuffer.is_cursor_visible);
    263275}
    264276
Note: See TracChangeset for help on using the changeset viewer.