Changeset d2cc7e1 in mainline for uspace/srv/fb
- Timestamp:
- 2009-03-21T11:26:31Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0a5116db
- Parents:
- 5b8c75a
- Location:
- uspace/srv/fb
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fb/ega.c
r5b8c75a rd2cc7e1 360 360 361 361 default: 362 retval = E NOENT;362 retval = EINVAL; 363 363 } 364 364 ipc_answer_0(callid, retval); -
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); -
uspace/srv/fb/serial_console.c
r5b8c75a rd2cc7e1 244 244 } 245 245 246 int lastcol = 0; 247 int lastrow = 0; 248 249 #define FB_WRITE_BUF_SIZE 256 250 static char fb_write_buf[FB_WRITE_BUF_SIZE]; 251 252 static void fb_write(ipc_callid_t rid, ipc_call_t *request) 253 { 254 int row, col; 255 ipc_callid_t callid; 256 size_t len; 257 size_t i; 258 259 row = IPC_GET_ARG1(*request); 260 col = IPC_GET_ARG2(*request); 261 262 if ((col >= scr_width) || (row >= scr_height)) { 263 ipc_answer_0(callid, EINVAL); 264 ipc_answer_0(rid, EINVAL); 265 return; 266 } 267 268 if (!ipc_data_write_receive(&callid, &len)) { 269 ipc_answer_0(callid, EINVAL); 270 ipc_answer_0(rid, EINVAL); 271 return; 272 } 273 274 if (len > FB_WRITE_BUF_SIZE) 275 len = FB_WRITE_BUF_SIZE; 276 if (len >= scr_width - col) 277 len = scr_width - col; 278 279 (void) ipc_data_write_finalize(callid, fb_write_buf, len); 280 281 if ((lastcol != col) || (lastrow != row)) 282 serial_goto(row, col); 283 284 for (i = 0; i < len; i++) { 285 (*putc_function)(fb_write_buf[i]); 286 } 287 288 lastcol = col + len; 289 lastrow = row; 290 291 ipc_answer_1(rid, EOK, len); 292 } 293 246 294 /** 247 295 * Main function of the thread serving client connections. … … 256 304 257 305 char c; 258 int lastcol = 0;259 int lastrow = 0;260 306 int newcol; 261 307 int newrow; … … 318 364 retval = 0; 319 365 break; 366 case FB_WRITE: 367 fb_write(callid, &call); 368 369 /* Message already answered */ 370 continue; 320 371 case FB_CURSOR_GOTO: 321 372 newrow = IPC_GET_ARG1(call);
Note:
See TracChangeset
for help on using the changeset viewer.
