Rev 1560 | Rev 1567 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1560 | Rev 1563 | ||
|---|---|---|---|
| Line 253... | Line 253... | ||
| 253 | 253 | ||
| 254 | active_console = newcons; |
254 | active_console = newcons; |
| 255 | gcons_change_console(newcons); |
255 | gcons_change_console(newcons); |
| 256 | conn = &connections[active_console]; |
256 | conn = &connections[active_console]; |
| 257 | 257 | ||
| 258 | curs_visibility(0); |
258 | set_style(&conn->screenbuffer.style); |
| - | 259 | curs_goto(conn->screenbuffer.position_y, conn->screenbuffer.position_x); |
|
| 259 | if (interbuffer) { |
260 | if (interbuffer) { |
| 260 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
261 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
| 261 | for (j = 0; j < conn->screenbuffer.size_y; j++) |
262 | for (j = 0; j < conn->screenbuffer.size_y; j++) |
| 262 | interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j); |
263 | interbuffer[i + j*conn->screenbuffer.size_x] = *get_field_at(&(conn->screenbuffer),i, j); |
| 263 | - | ||
| - | 264 | /* This call can preempt, but we are already at the end */ |
|
| 264 | sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL); |
265 | sync_send_2(fb_info.phone, FB_DRAW_TEXT_DATA, 0, 0, NULL, NULL); |
| 265 | } else { |
266 | } else { |
| - | 267 | curs_visibility(0); |
|
| 266 | clrscr(); |
268 | clrscr(); |
| 267 | 269 | ||
| 268 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
270 | for (i = 0; i < conn->screenbuffer.size_x; i++) |
| 269 | for (j = 0; j < conn->screenbuffer.size_y; j++) { |
271 | for (j = 0; j < conn->screenbuffer.size_y; j++) { |
| 270 | c = get_field_at(&(conn->screenbuffer),i, j)->character; |
272 | c = get_field_at(&(conn->screenbuffer),i, j)->character; |
| 271 | if (c && c != ' ') |
273 | if (c && c != ' ') |
| 272 | prtchr(c, j, i); |
274 | prtchr(c, j, i); |
| 273 | } |
275 | } |
| 274 | 276 | ||
| - | 277 | curs_visibility(1); |
|
| 275 | } |
278 | } |
| 276 | curs_goto(conn->screenbuffer.position_y, conn->screenbuffer.position_x); |
- | |
| 277 | set_style(&conn->screenbuffer.style); |
- | |
| 278 | curs_visibility(1); |
- | |
| 279 | } |
279 | } |
| 280 | 280 | ||
| 281 | /** Handler for keyboard */ |
281 | /** Handler for keyboard */ |
| 282 | static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall) |
282 | static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall) |
| 283 | { |
283 | { |
| Line 373... | Line 373... | ||
| 373 | 373 | ||
| 374 | break; |
374 | break; |
| 375 | case CONSOLE_GOTO: |
375 | case CONSOLE_GOTO: |
| 376 | 376 | ||
| 377 | screenbuffer_goto(&(connections[consnum].screenbuffer), IPC_GET_ARG2(call), IPC_GET_ARG1(call)); |
377 | screenbuffer_goto(&(connections[consnum].screenbuffer), IPC_GET_ARG2(call), IPC_GET_ARG1(call)); |
| - | 378 | curs_goto(IPC_GET_ARG1(call),IPC_GET_ARG2(call)); |
|
| 378 | 379 | ||
| 379 | break; |
380 | break; |
| 380 | 381 | ||
| 381 | case CONSOLE_GETSIZE: |
382 | case CONSOLE_GETSIZE: |
| 382 | arg1 = fb_info.rows; |
383 | arg1 = fb_info.rows; |