void shutdown_virtual_device(struct graphics_device *dev) { int i; for (i = 0; i < n_virtual_devices; i++) if (virtual_devices[i] == dev) { virtual_devices[i] = NULL; mem_free(dev); if (current_virtual_device != dev) return; for (; i < n_virtual_devices; i++) if (virtual_devices[i]) { switch_virtual_device(i); return; } for (i = 0; i < n_virtual_devices; i++) if (virtual_devices[i]) { switch_virtual_device(i); return; } current_virtual_device = NULL; return; } mem_free(dev); /*internal("shutdown_virtual_device: device not initialized");*/ }
static void fb_key_in(void *p, unsigned char *ev_, int size) { struct event *ev = (struct event *)(void *)ev_; if (size != sizeof(struct event)) return; if (ev->ev == EV_ABORT) terminate_loop = 1; if (ev->ev != EV_KBD) return; if ((ev->y & KBD_ALT) && ev->x >= '0' && ev->x <= '9') { switch_virtual_device((ev->x - '1' + 10) % 10); return; } if (!current_virtual_device) return; if (!ev->y && ev->x == KBD_F5) fb_mouse_move(-3, 0); else if (!ev->y && ev->x == KBD_F6) fb_mouse_move(0, 3); else if (!ev->y && ev->x == KBD_F7) fb_mouse_move(0, -3); else if (!ev->y && ev->x == KBD_F8) fb_mouse_move(3, 0); else { if (fb_driver.codepage!=utf8_table&&(ev->x)>=128&&(ev->x)<=255) if ((ev->x=cp2u(ev->x,fb_driver.codepage)) == -1) return; if (current_virtual_device->keyboard_handler) current_virtual_device->keyboard_handler(current_virtual_device, ev->x, ev->y); } }