void psx_image_module_init(void) { register_func func = NULL; #if defined(WIN32) && defined(_MSC_VER) lib_image = _module_load(get_library_path()); #else lib_image = _module_load("libpsx_image.so"); #endif if (lib_image == INVALID_HANDLE) return; func = _module_get_symbol(lib_image, "psx_image_register_operator"); if (!func) return; gif_coder = (psx_image_operator*)calloc(1, sizeof(psx_image_operator)); if (!gif_coder) return; gif_coder->read_header_info = read_gif_info; gif_coder->decode_image_data = decode_gif_data; gif_coder->release_read_header_info = release_read_gif_info; gif_coder->write_header_info = write_gif_info; gif_coder->encode_image_data = encode_gif_data; gif_coder->release_write_header_info = release_write_gif_info; func("gif", (ps_byte*)"GIF", 0, 3, PRIORITY_DEFAULT, gif_coder); }
// Load a module referenced by a 'module_handler_t' structure // Return: 0-fail, 1-ok int module_load(module_handler_t* hMod) { // Attempt to load module _module_load(hMod); // If load succeeded return success if (*hMod->lib && (*hMod->lib != hMod->default_lib)) { return 1; } // If load failed reset library to unloaded default (should not be needed!) if (*hMod->lib == 0) *hMod->lib = hMod->default_lib; // Failure return 0; }