Rev 1707 | Rev 1721 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1707 | Rev 1717 | ||
---|---|---|---|
Line 226... | Line 226... | ||
226 | if (active_console == KERNEL_CONSOLE) |
226 | if (active_console == KERNEL_CONSOLE) |
227 | return; |
227 | return; |
228 | active_console = KERNEL_CONSOLE; |
228 | active_console = KERNEL_CONSOLE; |
229 | curs_visibility(0); |
229 | curs_visibility(0); |
230 | 230 | ||
- | 231 | async_serialize_start(); |
|
231 | if (kernel_pixmap == -1) { |
232 | if (kernel_pixmap == -1) { |
232 | /* store/restore unsupported */ |
233 | /* store/restore unsupported */ |
233 | set_style_col(DEFAULT_FOREGROUND, DEFAULT_BACKGROUND); |
234 | set_style_col(DEFAULT_FOREGROUND, DEFAULT_BACKGROUND); |
234 | clrscr(); |
235 | clrscr(); |
235 | } else { |
236 | } else { |
236 | gcons_in_kernel(); |
237 | gcons_in_kernel(); |
237 | console_pixmap = switch_screens(kernel_pixmap); |
238 | console_pixmap = switch_screens(kernel_pixmap); |
238 | kernel_pixmap = -1; |
239 | kernel_pixmap = -1; |
239 | } |
240 | } |
- | 241 | async_serialize_end(); |
|
240 | 242 | ||
241 | __SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE); |
243 | __SYSCALL0(SYS_DEBUG_ENABLE_CONSOLE); |
242 | return; |
244 | return; |
243 | } |
245 | } |
244 | 246 | ||
- | 247 | async_serialize_start(); |
|
- | 248 | ||
245 | if (console_pixmap != -1) { |
249 | if (console_pixmap != -1) { |
246 | kernel_pixmap = switch_screens(console_pixmap); |
250 | kernel_pixmap = switch_screens(console_pixmap); |
247 | console_pixmap = -1; |
251 | console_pixmap = -1; |
248 | } |
252 | } |
249 | active_console = newcons; |
253 | active_console = newcons; |
Line 278... | Line 282... | ||
278 | } |
282 | } |
279 | } |
283 | } |
280 | 284 | ||
281 | curs_goto(conn->screenbuffer.position_y, conn->screenbuffer.position_x); |
285 | curs_goto(conn->screenbuffer.position_y, conn->screenbuffer.position_x); |
282 | curs_visibility(conn->screenbuffer.is_cursor_visible); |
286 | curs_visibility(conn->screenbuffer.is_cursor_visible); |
- | 287 | ||
- | 288 | async_serialize_end(); |
|
283 | } |
289 | } |
284 | 290 | ||
285 | /** Handler for keyboard */ |
291 | /** Handler for keyboard */ |
286 | static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall) |
292 | static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall) |
287 | { |
293 | { |
288 | ipc_callid_t callid; |
294 | ipc_callid_t callid; |
289 | ipc_call_t call; |
295 | ipc_call_t call; |
290 | int retval; |
296 | int retval; |
291 | int c; |
297 | int c; |
292 | connection_t *conn; |
298 | connection_t *conn; |
- | 299 | int newcon; |
|
293 | 300 | ||
294 | /* Ignore parameters, the connection is alread opened */ |
301 | /* Ignore parameters, the connection is alread opened */ |
295 | while (1) { |
302 | while (1) { |
296 | callid = async_get_call(&call); |
303 | callid = async_get_call(&call); |
297 | switch (IPC_GET_METHOD(call)) { |
304 | switch (IPC_GET_METHOD(call)) { |
298 | case IPC_M_PHONE_HUNGUP: |
305 | case IPC_M_PHONE_HUNGUP: |
299 | /* TODO: Handle hangup */ |
306 | /* TODO: Handle hangup */ |
300 | return; |
307 | return; |
- | 308 | case KBD_MS_LEFT: |
|
- | 309 | newcon = gcons_mouse_btn(IPC_GET_ARG1(call)); |
|
- | 310 | if (newcon != -1) |
|
- | 311 | change_console(newcon); |
|
- | 312 | break; |
|
301 | case KBD_MS_MOVE: |
313 | case KBD_MS_MOVE: |
302 | gcons_mouse_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call)); |
314 | gcons_mouse_move(IPC_GET_ARG1(call), IPC_GET_ARG2(call)); |
303 | break; |
315 | break; |
304 | case KBD_PUSHCHAR: |
316 | case KBD_PUSHCHAR: |
305 | /* got key from keyboard driver */ |
317 | /* got key from keyboard driver */ |
Line 309... | Line 321... | ||
309 | /* switch to another virtual console */ |
321 | /* switch to another virtual console */ |
310 | 322 | ||
311 | conn = &connections[active_console]; |
323 | conn = &connections[active_console]; |
312 | // if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) { |
324 | // if ((c >= KBD_KEY_F1) && (c < KBD_KEY_F1 + CONSOLE_COUNT)) { |
313 | if ((c >= 0x101) && (c < 0x101 + CONSOLE_COUNT)) { |
325 | if ((c >= 0x101) && (c < 0x101 + CONSOLE_COUNT)) { |
314 | async_serialize_start(); |
- | |
315 | if (c == 0x112) |
326 | if (c == 0x112) |
316 | change_console(KERNEL_CONSOLE); |
327 | change_console(KERNEL_CONSOLE); |
317 | else |
328 | else |
318 | change_console(c - 0x101); |
329 | change_console(c - 0x101); |
319 | async_serialize_end(); |
- | |
320 | break; |
330 | break; |
321 | } |
331 | } |
322 | 332 | ||
323 | /* if client is awaiting key, send it */ |
333 | /* if client is awaiting key, send it */ |
324 | if (conn->keyrequest_counter > 0) { |
334 | if (conn->keyrequest_counter > 0) { |