static int cb_image_menu_wallpaper_upload(void *data, size_t len) { nbio_handle_t *nbio = (nbio_handle_t*)data; if (!nbio || !data) return -1; if (nbio->image.processing_final_state == IMAGE_PROCESS_ERROR || nbio->image.processing_final_state == IMAGE_PROCESS_ERROR_END) return -1; if (driver.menu_ctx && driver.menu_ctx->load_background) driver.menu_ctx->load_background(&nbio->image.ti); texture_image_free(&nbio->image.ti); nbio->image.is_blocking_on_processing = false; nbio->image.is_finished_with_processing = true; nbio->image.is_blocking = true; nbio->image.is_finished = true; nbio->is_blocking = true; nbio->is_finished = true; return 0; }
static bool load_textures(void) { unsigned i; if (!cg_shader->luts) return true; glGenTextures(cg_shader->luts, lut_textures); for (i = 0; i < cg_shader->luts; i++) { RARCH_LOG("Loading image from: \"%s\".\n", cg_shader->lut[i].path); struct texture_image img = {0}; if (!texture_image_load(cg_shader->lut[i].path, &img)) { RARCH_ERR("Failed to load picture ...\n"); return false; } load_texture_data(lut_textures[i], &img, cg_shader->lut[i].filter != RARCH_FILTER_NEAREST, gl_wrap_type_to_enum(cg_shader->lut[i].wrap)); texture_image_free(&img); } glBindTexture(GL_TEXTURE_2D, 0); return true; }
bool gl_load_luts(const struct gfx_shader *generic_shader, GLuint *lut_textures) { unsigned i, num_luts; num_luts = min(generic_shader->luts, GFX_MAX_TEXTURES); if (!generic_shader->luts) return true; // Original shader_glsl.c code only generated one texture handle. I assume // it was a bug, but if not, replace num_luts with 1 when GLSL is used. glGenTextures(num_luts, lut_textures); for (i = 0; i < num_luts; i++) { struct texture_image img = {0}; RARCH_LOG("Loading texture image from: \"%s\" ...\n", generic_shader->lut[i].path); if (!texture_image_load(&img, generic_shader->lut[i].path)) { RARCH_ERR("Failed to load texture image from: \"%s\"\n", generic_shader->lut[i].path); return false; } gl_load_texture_data(lut_textures[i], &img, gl_wrap_type_to_enum(generic_shader->lut[i].wrap), generic_shader->lut[i].filter != RARCH_FILTER_NEAREST, generic_shader->lut[i].mipmap); texture_image_free(&img); } glBindTexture(GL_TEXTURE_2D, 0); return true; }
static void mui_context_reset_textures(mui_handle_t *mui, const char *iconpath) { unsigned i; for (i = 0; i < MUI_TEXTURE_LAST; i++) { struct texture_image ti = {0}; char path[PATH_MAX_LENGTH] = {0}; switch(i) { case MUI_TEXTURE_POINTER: fill_pathname_join(path, iconpath, "pointer.png", sizeof(path)); break; case MUI_TEXTURE_BACK: fill_pathname_join(path, iconpath, "back.png", sizeof(path)); break; case MUI_TEXTURE_SWITCH_ON: fill_pathname_join(path, iconpath, "on.png", sizeof(path)); break; case MUI_TEXTURE_SWITCH_OFF: fill_pathname_join(path, iconpath, "off.png", sizeof(path)); break; case MUI_TEXTURE_TAB_MAIN_ACTIVE: fill_pathname_join(path, iconpath, "main_tab_active.png", sizeof(path)); break; case MUI_TEXTURE_TAB_PLAYLISTS_ACTIVE: fill_pathname_join(path, iconpath, "playlists_tab_active.png", sizeof(path)); break; case MUI_TEXTURE_TAB_SETTINGS_ACTIVE: fill_pathname_join(path, iconpath, "settings_tab_active.png", sizeof(path)); break; case MUI_TEXTURE_TAB_MAIN_PASSIVE: fill_pathname_join(path, iconpath, "main_tab_passive.png", sizeof(path)); break; case MUI_TEXTURE_TAB_PLAYLISTS_PASSIVE: fill_pathname_join(path, iconpath, "playlists_tab_passive.png", sizeof(path)); break; case MUI_TEXTURE_TAB_SETTINGS_PASSIVE: fill_pathname_join(path, iconpath, "settings_tab_passive.png", sizeof(path)); break; } if (string_is_empty(path) || !path_file_exists(path)) continue; texture_image_load(&ti, path); mui->textures.list[i].id = menu_display_texture_load(&ti, TEXTURE_FILTER_MIPMAP_LINEAR); texture_image_free(&ti); } }
static int cb_image_menu_boxart_upload(void *data, size_t len) { nbio_handle_t *nbio = (nbio_handle_t*)data; if (cb_image_menu_upload_generic(nbio) != 0) return -1; menu_driver_load_image(&nbio->image.ti, MENU_IMAGE_BOXART); texture_image_free(&nbio->image.ti); return 0; }
bool gl_load_luts(const struct video_shader *shader, GLuint *textures_lut) { unsigned i; unsigned num_luts = min(shader->luts, GFX_MAX_TEXTURES); if (!shader->luts) return true; glGenTextures(num_luts, textures_lut); for (i = 0; i < num_luts; i++) { struct texture_image img = {0}; enum texture_filter_type filter_type = TEXTURE_FILTER_LINEAR; RARCH_LOG("Loading texture image from: \"%s\" ...\n", shader->lut[i].path); if (!texture_image_load(&img, shader->lut[i].path)) { RARCH_ERR("Failed to load texture image from: \"%s\"\n", shader->lut[i].path); return false; } if (shader->lut[i].filter == RARCH_FILTER_NEAREST) filter_type = TEXTURE_FILTER_NEAREST; if (shader->lut[i].mipmap) { if (filter_type == TEXTURE_FILTER_NEAREST) filter_type = TEXTURE_FILTER_MIPMAP_NEAREST; else filter_type = TEXTURE_FILTER_MIPMAP_LINEAR; } gl_load_texture_data(textures_lut[i], shader->lut[i].wrap, filter_type, 4, img.width, img.height, img.pixels, sizeof(uint32_t)); texture_image_free(&img); } glBindTexture(GL_TEXTURE_2D, 0); return true; }
static void gfx_ctx_xdk_destroy(void) { xdk_d3d_video_t * d3d = (xdk_d3d_video_t*)driver.video_data; #ifdef HAVE_RGUI texture_image_free(&d3d->rgui_texture); #endif if (d3d->d3d_render_device) { d3d->d3d_render_device->Release(); d3d->d3d_render_device = 0; } if (d3d->d3d_device) { d3d->d3d_device->Release(); d3d->d3d_device = 0; } }
static void rmenu_context_destroy(void) { texture_image_free(menu_texture); }
static void rmenu_free_assets(void *data) { texture_image_free(menu_texture); menu_texture_inited = false; }
static void rmenu_context_destroy(void *data) { texture_image_free(driver.video_data, menu_texture); }