X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=jpeg.c;h=420fda737a3e411161a79293161d4c276edb7e80;hp=0d33281297e57fa94eccd176b75d19f169c5c43c;hb=f75bc649dfba9df1b9d3682403f2c443b4a4efcd;hpb=d873365280b22b93ed9a530c856e32ca37a7acd9 diff --git a/jpeg.c b/jpeg.c index 0d332812..420fda73 100644 --- a/jpeg.c +++ b/jpeg.c @@ -23,6 +23,7 @@ #include "quakedef.h" +#include "image.h" #include "jpeg.h" @@ -394,40 +395,31 @@ Try to load the JPEG DLL */ qboolean JPEG_OpenLibrary (void) { - const char* dllname; - const dllfunction_t *func; - - // Already loaded? - if (jpeg_dll) - return true; - + const char* dllnames [] = + { #ifdef WIN32 - dllname = "libjpeg.dll"; + "libjpeg.dll", +#elif defined(MACOSX) + "libjpeg.62.dylib", #else - dllname = "libjpeg.so.62"; + "libjpeg.so.62", + "libjpeg.so", #endif + NULL + }; - // Initializations - for (func = jpegfuncs; func && func->name != NULL; func++) - *func->funcvariable = NULL; + // Already loaded? + if (jpeg_dll) + return true; // Load the DLL - if (! (jpeg_dll = Sys_LoadLibrary (dllname))) + if (! Sys_LoadLibrary (dllnames, &jpeg_dll, jpegfuncs)) { - Con_DPrintf("Can't find %s. JPEG support disabled\n", dllname); + Con_Printf ("JPEG support disabled\n"); return false; } - // Get the function adresses - for (func = jpegfuncs; func && func->name != NULL; func++) - if (!(*func->funcvariable = (void *) Sys_GetProcAddress (jpeg_dll, func->name))) - { - Con_Printf("missing function \"%s\" - broken JPEG library!\n", func->name); - JPEG_CloseLibrary (); - return false; - } - - Con_DPrintf("%s loaded. JPEG support enabled\n", dllname); + Con_Printf ("JPEG support enabled\n"); return true; } @@ -441,11 +433,7 @@ Unload the JPEG DLL */ void JPEG_CloseLibrary (void) { - if (!jpeg_dll) - return; - - Sys_UnloadLibrary (jpeg_dll); - jpeg_dll = NULL; + Sys_UnloadLibrary (&jpeg_dll); } @@ -480,7 +468,7 @@ static void JPEG_SkipInputData (j_decompress_ptr cinfo, long num_bytes) cinfo->src->bytes_in_buffer -= num_bytes; } -static void JPEG_MemSrc (j_decompress_ptr cinfo, qbyte *buffer) +static void JPEG_MemSrc (j_decompress_ptr cinfo, const qbyte *buffer) { cinfo->src = cinfo->mem->alloc_small ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof (struct jpeg_source_mgr)); @@ -508,7 +496,7 @@ JPEG_LoadImage Load a JPEG image into a RGBA buffer ==================== */ -qbyte* JPEG_LoadImage (qbyte *f, int matchwidth, int matchheight) +qbyte* JPEG_LoadImage (const qbyte *f, int matchwidth, int matchheight) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; @@ -640,7 +628,7 @@ static void JPEG_TermDestination (j_compress_ptr cinfo) // Write any data remaining in the buffer if (datacount > 0) - if (FS_Write (dest->outfile, dest->buffer, datacount) != datacount) + if (FS_Write (dest->outfile, dest->buffer, datacount) != (fs_offset_t)datacount) error_in_jpeg = true; } @@ -678,12 +666,12 @@ qboolean JPEG_SaveImage_preflipped (const char *filename, int width, int height, // No DLL = no JPEGs if (!jpeg_dll) { - Con_Printf ("You need the libjpeg library to save JPEG images\n"); + Con_Print("You need the libjpeg library to save JPEG images\n"); return false; } // Open the file - file = FS_Open (filename, "wb", true); + file = FS_Open (filename, "wb", true, false); if (!file) return false;