Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 10270a8 in mainline


Ignore:
Timestamp:
2009-04-24T20:24:41Z (13 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master
Children:
ebfabf6
Parents:
c07544d3
Message:

Better switch to kcon on serial console — relinquish/reclaim screen before/after switching to kcon.

Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/include/ipc/fb.h

    rc07544d3 r10270a8  
    6767        FB_ANIM_START,
    6868        FB_ANIM_STOP,
    69         FB_POINTER_MOVE
     69        FB_POINTER_MOVE,
     70        FB_SCREEN_GRAB,
     71        FB_SCREEN_RELINQUISH
    7072} fb_request_t;
    7173
  • uspace/srv/console/console.c

    rc07544d3 r10270a8  
    142142}
    143143
     144static void screen_grab(void)
     145{
     146        ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_GRAB);
     147}
     148
     149static void screen_relinquish(void)
     150{
     151        ipc_call_sync_0_0(fb_info.phone, FB_SCREEN_RELINQUISH);
     152}
     153
    144154static void set_style(int style)
    145155{
     
    331341                curs_hide_sync();
    332342                gcons_in_kernel();
     343                screen_relinquish();
    333344                async_serialize_end();
     345
    334346               
    335347                if (__SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE)) {
     
    343355                async_serialize_start();
    344356               
    345                 if (active_console == KERNEL_CONSOLE)
     357                if (active_console == KERNEL_CONSOLE) {
     358                        screen_grab();
    346359                        gcons_redraw_console();
     360                }
    347361               
    348362                active_console = newcons;
  • uspace/srv/fb/ega.c

    rc07544d3 r10270a8  
    392392                        retval = 0;
    393393                        break;
    394 
     394                case FB_SCREEN_GRAB:
     395                case FB_SCREEN_RELINQUISH:
     396                        retval = EOK;
     397                        break;
    395398                default:
    396399                        retval = EINVAL;
  • uspace/srv/fb/fb.c

    rc07544d3 r10270a8  
    17141714                        retval = EOK;
    17151715                        break;
     1716                case FB_SCREEN_GRAB:
     1717                case FB_SCREEN_RELINQUISH:
     1718                        retval = EOK;
     1719                        break;
    17161720                default:
    17171721                        retval = ENOENT;
  • uspace/srv/fb/serial_console.c

    rc07544d3 r10270a8  
    275275
    276276                for (i = 0; i < w; i++) {
    277                         unsigned int col = x + i;
    278                         unsigned int row = y + j;
    279 
    280277                        field = &data[j * w + i];
    281278
     
    305302        wchar_t c;
    306303        int col, row, w, h;
    307         int fgcolor;
    308         int bgcolor;
    309         int flags;
    310         int style;
    311304        int i;
    312305
     306        attrs_t cur_attr;
    313307       
    314308        if (client_connected) {
     
    319313        client_connected = 1;
    320314        ipc_answer_0(iid, EOK);
     315
     316        cur_attr.t = at_style;
     317        cur_attr.a.s.style = STYLE_NORMAL;
    321318       
    322319        /* Clear the terminal, set scrolling region
     
    389386                        break;
    390387                case FB_SET_STYLE:
    391                         style = IPC_GET_ARG1(call);
    392                         serial_set_style(style);
     388                        cur_attr.t = at_style;
     389                        cur_attr.a.s.style = IPC_GET_ARG1(call);
     390                        cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
     391                        serial_set_attrs(&cur_attr);
     392
    393393                        retval = 0;
    394394                        break;
    395395                case FB_SET_COLOR:
    396                         fgcolor = IPC_GET_ARG1(call);
    397                         bgcolor = IPC_GET_ARG2(call);
    398                         flags = IPC_GET_ARG3(call);
    399 
    400                         serial_set_idx(fgcolor, bgcolor, flags);
     396                        cur_attr.t = at_idx;
     397                        cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
     398                        cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
     399                        cur_attr.a.i.flags = IPC_GET_ARG3(call);
     400                        serial_set_attrs(&cur_attr);
     401
    401402                        retval = 0;
    402403                        break;
    403404                case FB_SET_RGB_COLOR:
    404                         fgcolor = IPC_GET_ARG1(call);
    405                         bgcolor = IPC_GET_ARG2(call);
    406 
    407                         serial_set_rgb(fgcolor, bgcolor);
     405                        cur_attr.t = at_rgb;
     406                        cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
     407                        cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
     408                        serial_set_attrs(&cur_attr);
     409
    408410                        retval = 0;
    409411                        break;
     
    425427                        retval = 0;
    426428                        break;
     429                case FB_SCREEN_GRAB:
     430                        serial_clrscr();
     431                        serial_set_attrs(&cur_attr);
     432                        retval = 0;
     433                        break;
     434                case FB_SCREEN_RELINQUISH:
     435                        serial_sgr(SGR_RESET);
     436                        serial_puts("\033[2J");
     437                        serial_goto(0, 0);
     438                        serial_cursor_enable();
     439                        retval = 0;
     440                        break;
    427441                default:
    428442                        retval = ENOENT;
Note: See TracChangeset for help on using the changeset viewer.