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; |