int qemulator_init( QEmulator* emulator, AConfig* aconfig, const char* basepath, int x, int y, AndroidOptions* opts ) { emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath); emulator->layout = emulator->layout_file->layouts; emulator->keyboard = skin_keyboard_create(opts->charmap, opts->raw_keys); emulator->window = NULL; emulator->win_x = x; emulator->win_y = y; emulator->opts[0] = opts[0]; SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { qframebuffer_add_client( disp->qfbuff, emulator, qemulator_fb_update, qemulator_fb_rotate, qemulator_fb_poll, NULL ); } SKIN_FILE_LOOP_END_PARTS skin_keyboard_enable( emulator->keyboard, 1 ); skin_keyboard_on_command( emulator->keyboard, handle_key_command, emulator ); return 0; }
QFrameBuffer* qemulator_get_first_framebuffer(QEmulator* emulator) { SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { return disp->qfbuff; } SKIN_FILE_LOOP_END_PARTS return NULL; }
QFrameBuffer* emulator_window_get_first_framebuffer(EmulatorWindow* emulator) { /* register as a framebuffer clients for all displays defined in the skin file */ SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { return disp->framebuffer; } SKIN_FILE_LOOP_END_PARTS return NULL; }
int emulator_window_init( EmulatorWindow* emulator, AConfig* aconfig, const char* basepath, int x, int y, AndroidOptions* opts ) { static const SkinFramebufferFuncs skin_fb_funcs = { .create_framebuffer = &emulator_window_framebuffer_create, .free_framebuffer = &emulator_window_framebuffer_free, .get_pixels = &emulator_window_framebuffer_get_pixels, .get_depth = &emulator_window_framebuffer_get_depth, }; emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath, &skin_fb_funcs); emulator->ui = NULL; emulator->win_x = x; emulator->win_y = y; emulator->opts[0] = opts[0]; /* register as a framebuffer clients for all displays defined in the skin file */ SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { qframebuffer_add_client( disp->framebuffer, emulator, emulator_window_fb_update, emulator_window_fb_rotate, emulator_window_fb_poll, NULL ); } SKIN_FILE_LOOP_END_PARTS /* initialize hardware control support */ AndroidHwControlFuncs funcs; funcs.light_brightness = emulator_window_light_brightness; android_hw_control_set(emulator, &funcs); return 0; }
int qemulator_init( QEmulator* emulator, AConfig* aconfig, const char* basepath, int x, int y, AndroidOptions* opts ) { emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath); emulator->layout = emulator->layout_file->layouts; // If we have a custom charmap use it to initialize keyboard. // Otherwise initialize keyboard from configuration settings. // Another way to configure keyboard to use a custom charmap would // be saving a custom charmap name into AConfig's keyboard->charmap // property, and calling single skin_keyboard_create_from_aconfig // routine to initialize keyboard. if (NULL != opts->charmap) { emulator->keyboard = skin_keyboard_create_from_kcm(opts->charmap, opts->raw_keys); } else { emulator->keyboard = skin_keyboard_create_from_aconfig(aconfig, opts->raw_keys); } emulator->window = NULL; emulator->win_x = x; emulator->win_y = y; emulator->opts[0] = opts[0]; /* register as a framebuffer clients for all displays defined in the skin file */ SKIN_FILE_LOOP_PARTS( emulator->layout_file, part ) SkinDisplay* disp = part->display; if (disp->valid) { qframebuffer_add_client( disp->qfbuff, emulator, qemulator_fb_update, qemulator_fb_rotate, qemulator_fb_poll, NULL ); } SKIN_FILE_LOOP_END_PARTS skin_keyboard_enable( emulator->keyboard, 1 ); skin_keyboard_on_command( emulator->keyboard, handle_key_command, emulator ); return 0; }