//fonction d'affichage du menu int menu_main() { // 0. déclaration des ressources BITMAP* back = NULL; BITMAP* buffer = NULL; t_button* game = NULL; t_button* quit = NULL; //t_button* options = NULL; int ret; // 1. chargement du fond : back = load_bitmap_check("res/menu/menu_fond.bmp"); // 2. création de la bitmap générale : buffer = create_bitmap(back->w, back->h); // 3. création des bouttons : game = button_create("res/menu/b_main_jouer_off.bmp", "res/menu/b_main_jouer_on.bmp", 100, 100); quit = button_create("res/menu/b_main_quitter_off.bmp", "res/menu/b_main_quitter_on.bmp", 800, 600); //option = button_create_m("res/menu/b_main_options_off.bmp", "res/menu/b_main_options_on.bmp", 300, 500); // 4. lancement de la routine d'affichage : do { // 4.1 on met à jouer les bouttons button_maj(game); button_maj(quit); //button_maj(options); // 4.2 on blit les images sur le buffer : blit(back, buffer, 0, 0, 0, 0, back->w, back->h); button_blit(game, buffer); button_blit(quit, buffer); // 4.3 on test si un des bouttons a été cliqué : ret = 0; if(button_is_clicked(game)) ret = GAME; if(button_is_clicked(quit)) ret = QUIT; //if(button_is_clicked(option)) option(); // 4.4 on affiche le menu à l'écran : stretch_blit(buffer, screen, 0, 0, buffer->w, buffer->h, 0, 0, SCREEN_W, SCREEN_H); }while(ret == 0); // 5. on détruit les images : destroy_bitmap(back); destroy_bitmap(buffer); button_destroy(quit); button_destroy(game); // 6. on retourne la valeur de l'utilisateur return ret; }
static void destroy(multirom_theme_data *t) { if(pong_btn) { button_destroy(pong_btn); pong_btn = NULL; } }
/** @copydoc widgetdata::deinit_func */ static void widget_deinit(widgetdata *widget) { if (list_skills != NULL) { list_remove(list_skills); list_skills = NULL; } for (size_t i = 0; i < BUTTON_NUM; i++) { button_destroy(&buttons[i]); } }
/** * Deinitialize data used by the intro screen. */ void intro_deinit(void) { button_destroy(&button_play); button_destroy(&button_refresh); button_destroy(&button_server); button_destroy(&button_settings); button_destroy(&button_update); button_destroy(&button_help); button_destroy(&button_credits); button_destroy(&button_quit); list_remove(list_servers); list_servers = NULL; list_remove(list_news); list_news = NULL; }
/** @copydoc widgetdata::deinit_func */ static void widget_deinit(widgetdata *widget) { if (shuffle_blacklist) { efree(shuffle_blacklist); shuffle_blacklist = NULL; } if (list_mplayer != NULL) { list_remove(list_mplayer); list_mplayer = NULL; } for (size_t i = 0; i < BUTTON_NUM; i++) { button_destroy(&buttons[i]); } }
int multirom_ui(struct multirom_status *s, struct multirom_rom **to_boot) { if(multirom_init_fb(s->rotation) < 0) return UI_EXIT_BOOT_ROM; fb_freeze(1); mrom_status = s; exit_ui_code = -1; selected_rom = NULL; active_msgbox = NULL; multirom_ui_setup_colors(s->colors, &CLR_PRIMARY, &CLR_SECONDARY); themes_info = multirom_ui_init_themes(); if((cur_theme = multirom_ui_select_theme(themes_info, fb_width, fb_height)) == NULL) { fb_freeze(0); ERROR("Couldn't find theme for resolution %dx%d!\n", fb_width, fb_height); fb_add_text(0, 0, WHITE, SIZE_SMALL, "Couldn't find theme for resolution %dx%d!\nPress POWER to reboot.", fb_width, fb_height); fb_draw(); fb_clear(); fb_close(); start_input_thread(); while(wait_for_key() != KEY_POWER); stop_input_thread(); return UI_EXIT_REBOOT; } workers_start(); multirom_ui_init_header(); multirom_ui_switch(TAB_INTERNAL); add_touch_handler(&multirom_ui_touch_handler, NULL); start_input_thread(); keyaction_enable(1); keyaction_set_destroy_msgbox_handle(multirom_ui_destroy_msgbox); multirom_set_brightness(s->brightness); fb_freeze(0); if(s->auto_boot_rom && s->auto_boot_seconds > 0) multirom_ui_auto_boot(); else fb_draw(); while(1) { pthread_mutex_lock(&exit_code_mutex); if(exit_ui_code != -1) { pthread_mutex_unlock(&exit_code_mutex); break; } if(loop_act & LOOP_UPDATE_USB) { multirom_find_usb_roms(mrom_status); if(themes_info->data->selected_tab == TAB_USB) multirom_ui_tab_rom_update_usb(themes_info->data->tab_data); loop_act &= ~(LOOP_UPDATE_USB); } if(loop_act & LOOP_START_PONG) { loop_act &= ~(LOOP_START_PONG); keyaction_enable(0); input_push_context(); fb_push_context(); pong(); fb_pop_context(); input_pop_context(); keyaction_enable(1); } if(loop_act & LOOP_CHANGE_CLR) { fb_freeze(1); multirom_ui_setup_colors(s->colors, &CLR_PRIMARY, &CLR_SECONDARY); // force redraw tab int tab = themes_info->data->selected_tab; themes_info->data->selected_tab = -1; multirom_ui_destroy_tab(tab); multirom_ui_switch(tab); fb_freeze(0); fb_draw(); loop_act &= ~(LOOP_CHANGE_CLR); } pthread_mutex_unlock(&exit_code_mutex); usleep(100000); } keyaction_enable(0); keyaction_clear(); rm_touch_handler(&multirom_ui_touch_handler, NULL); fb_create_msgbox(500*DPI_MUL, 250*DPI_MUL, CLR_PRIMARY); switch(exit_ui_code) { case UI_EXIT_BOOT_ROM: *to_boot = selected_rom; fb_msgbox_add_text(-1, 40*DPI_MUL, SIZE_BIG, "Booting ROM..."); fb_msgbox_add_text(-1, -1, SIZE_NORMAL, selected_rom->name); break; case UI_EXIT_REBOOT: case UI_EXIT_REBOOT_RECOVERY: case UI_EXIT_REBOOT_BOOTLOADER: fb_msgbox_add_text(-1, -1, SIZE_BIG, "Rebooting..."); break; case UI_EXIT_SHUTDOWN: fb_msgbox_add_text(-1, -1, SIZE_BIG, "Shutting down..."); break; } fb_draw(); fb_freeze(1); cur_theme->destroy(themes_info->data); int i; for(i = 0; i < TAB_COUNT; ++i) { button_destroy(themes_info->data->tab_btns[i]); themes_info->data->tab_btns[i] = NULL; } stop_input_thread(); multirom_ui_destroy_tab(themes_info->data->selected_tab); multirom_ui_free_themes(themes_info); themes_info = NULL; workers_stop(); fb_clear(); #if MR_DEVICE_HOOKS >= 2 mrom_hook_before_fb_close(); #endif fb_close(); return exit_ui_code; }