Changeset d2cc7e1 in mainline for uspace/srv/fb/fb.c
- Timestamp:
- 2009-03-21T11:26:31Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- 0a5116db
- Parents:
- 5b8c75a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fb/fb.c
r5b8c75a rd2cc7e1 1472 1472 return rgb_from_idx(&vport->attr, fg_color, bg_color, flags); 1473 1473 } 1474 1475 #define FB_WRITE_BUF_SIZE 256 1476 static char fb_write_buf[FB_WRITE_BUF_SIZE]; 1477 1478 static void fb_write(viewport_t *vport, ipc_callid_t rid, ipc_call_t *request) 1479 { 1480 int row, col; 1481 ipc_callid_t callid; 1482 size_t len; 1483 size_t i; 1484 1485 row = IPC_GET_ARG1(*request); 1486 col = IPC_GET_ARG2(*request); 1487 1488 if ((col >= vport->cols) || (row >= vport->rows)) { 1489 ipc_answer_0(callid, EINVAL); 1490 ipc_answer_0(rid, EINVAL); 1491 return; 1492 } 1493 1494 if (!ipc_data_write_receive(&callid, &len)) { 1495 ipc_answer_0(callid, EINVAL); 1496 ipc_answer_0(rid, EINVAL); 1497 return; 1498 } 1499 1500 if (len > FB_WRITE_BUF_SIZE) 1501 len = FB_WRITE_BUF_SIZE; 1502 if (len >= vport->cols - col) 1503 len = vport->cols - col; 1504 1505 (void) ipc_data_write_finalize(callid, fb_write_buf, len); 1506 1507 for (i = 0; i < len; i++) { 1508 draw_char(vport, fb_write_buf[i], col++, row); 1509 } 1510 1511 ipc_answer_1(rid, EOK, len); 1512 } 1513 1474 1514 1475 1515 /** Function for handling connections to FB … … 1547 1587 /* Message already answered */ 1548 1588 continue; 1589 case FB_WRITE: 1590 fb_write(vport, callid, &call); 1591 1592 /* Message already answered */ 1593 continue; 1549 1594 case FB_CLEAR: 1550 1595 vport_clear(vport);
Note:
See TracChangeset
for help on using the changeset viewer.