Subversion Repositories HelenOS

Rev

Rev 4235 | Rev 4326 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4235 Rev 4325
Line 272... Line 272...
272
    for (j = 0; j < h; j++) {
272
    for (j = 0; j < h; j++) {
273
        if (j > 0 && w != scr_width)
273
        if (j > 0 && w != scr_width)
274
            serial_goto(y, x);
274
            serial_goto(y, x);
275
 
275
 
276
        for (i = 0; i < w; i++) {
276
        for (i = 0; i < w; i++) {
277
            unsigned int col = x + i;
-
 
278
            unsigned int row = y + j;
-
 
279
 
-
 
280
            field = &data[j * w + i];
277
            field = &data[j * w + i];
281
 
278
 
282
            a1 = &field->attrs;
279
            a1 = &field->attrs;
283
            if (!attrs_same(*a0, *a1))
280
            if (!attrs_same(*a0, *a1))
284
                serial_set_attrs(a1);
281
                serial_set_attrs(a1);
Line 302... Line 299...
302
    keyfield_t *interbuf = NULL;
299
    keyfield_t *interbuf = NULL;
303
    size_t intersize = 0;
300
    size_t intersize = 0;
304
 
301
 
305
    wchar_t c;
302
    wchar_t c;
306
    int col, row, w, h;
303
    int col, row, w, h;
307
    int fgcolor;
-
 
308
    int bgcolor;
-
 
309
    int flags;
-
 
310
    int style;
-
 
311
    int i;
304
    int i;
312
 
305
 
-
 
306
    attrs_t cur_attr;
313
   
307
   
314
    if (client_connected) {
308
    if (client_connected) {
315
        ipc_answer_0(iid, ELIMIT);
309
        ipc_answer_0(iid, ELIMIT);
316
        return;
310
        return;
317
    }
311
    }
318
   
312
   
319
    client_connected = 1;
313
    client_connected = 1;
320
    ipc_answer_0(iid, EOK);
314
    ipc_answer_0(iid, EOK);
-
 
315
 
-
 
316
    cur_attr.t = at_style;
-
 
317
    cur_attr.a.s.style = STYLE_NORMAL;
321
   
318
   
322
    /* Clear the terminal, set scrolling region
319
    /* Clear the terminal, set scrolling region
323
       to 0 - height rows. */
320
       to 0 - height rows. */
324
    serial_clrscr();
321
    serial_clrscr();
325
    serial_goto(0, 0);
322
    serial_goto(0, 0);
Line 386... Line 383...
386
        case FB_CLEAR:
383
        case FB_CLEAR:
387
            serial_clrscr();
384
            serial_clrscr();
388
            retval = 0;
385
            retval = 0;
389
            break;
386
            break;
390
        case FB_SET_STYLE:
387
        case FB_SET_STYLE:
-
 
388
            cur_attr.t = at_style;
391
            style = IPC_GET_ARG1(call);
389
            cur_attr.a.s.style = IPC_GET_ARG1(call);
-
 
390
            cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
392
            serial_set_style(style);
391
            serial_set_attrs(&cur_attr);
-
 
392
 
393
            retval = 0;
393
            retval = 0;
394
            break;
394
            break;
395
        case FB_SET_COLOR:
395
        case FB_SET_COLOR:
-
 
396
            cur_attr.t = at_idx;
396
            fgcolor = IPC_GET_ARG1(call);
397
            cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
397
            bgcolor = IPC_GET_ARG2(call);
398
            cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
398
            flags = IPC_GET_ARG3(call);
399
            cur_attr.a.i.flags = IPC_GET_ARG3(call);
-
 
400
            serial_set_attrs(&cur_attr);
399
 
401
 
400
            serial_set_idx(fgcolor, bgcolor, flags);
-
 
401
            retval = 0;
402
            retval = 0;
402
            break;
403
            break;
403
        case FB_SET_RGB_COLOR:
404
        case FB_SET_RGB_COLOR:
-
 
405
            cur_attr.t = at_rgb;
404
            fgcolor = IPC_GET_ARG1(call);
406
            cur_attr.a.i.fg_color = IPC_GET_ARG1(call);
405
            bgcolor = IPC_GET_ARG2(call);
407
            cur_attr.a.i.bg_color = IPC_GET_ARG2(call);
-
 
408
            serial_set_attrs(&cur_attr);
406
 
409
 
407
            serial_set_rgb(fgcolor, bgcolor);
-
 
408
            retval = 0;
410
            retval = 0;
409
            break;
411
            break;
410
        case FB_SCROLL:
412
        case FB_SCROLL:
411
            i = IPC_GET_ARG1(call);
413
            i = IPC_GET_ARG1(call);
412
            if ((i > scr_height) || (i < -scr_height)) {
414
            if ((i > scr_height) || (i < -scr_height)) {
Line 422... Line 424...
422
                serial_cursor_enable();
424
                serial_cursor_enable();
423
            else
425
            else
424
                serial_cursor_disable();
426
                serial_cursor_disable();
425
            retval = 0;
427
            retval = 0;
426
            break;
428
            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;
427
        default:
441
        default:
428
            retval = ENOENT;
442
            retval = ENOENT;
429
        }
443
        }
430
        ipc_answer_0(callid, retval);
444
        ipc_answer_0(callid, retval);
431
    }
445
    }