/* [user thread] */ bool _al_update_menu_item_at(ALLEGRO_MENU_ITEM *item, int i) { if (item->extra1) { ARGS *args = make_menu_item_args(item, i); if (!args) return false; g_timeout_add(0, do_update_menu_item_at, args); } return true; }
/* [user thread] */ bool _al_update_menu_item_at(ALLEGRO_MENU_ITEM *item, int i) { if (item->extra1) { ARGS args; if (!make_menu_item_args(&args, item, i)) return false; _al_gtk_wait_for_args(do_update_menu_item_at, &args); } return true; }
/* [user thread] */ bool _al_destroy_menu_item_at(ALLEGRO_MENU_ITEM *item, int i) { if (item->extra1) { ARGS *args = make_menu_item_args(item, i); if (!args) return false; wait_for_args(do_destroy_menu_item_at, args); if (item->popup) { /* if this has a submenu, then deleting this item will have automatically deleted all of its GTK widgets */ _al_walk_over_menu(item->popup, clear_menu_extras, NULL); } } return true; }