X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=jpeg.c;h=b0a8da9072e740d100e1c8880b4ccfb17a05559f;hb=42ebab2050aaba88b4747a840b8db4c385627b0d;hp=c979fb14f48681494ad7af49c034281c22453f6f;hpb=ff46d6ff516fda192c5adc55a5c9b82007545bd2;p=xonotic%2Fdarkplaces.git diff --git a/jpeg.c b/jpeg.c index c979fb14..b0a8da90 100644 --- a/jpeg.c +++ b/jpeg.c @@ -23,6 +23,7 @@ #include "quakedef.h" +#include "image.h" #include "jpeg.h" @@ -394,40 +395,33 @@ Try to load the JPEG DLL */ qboolean JPEG_OpenLibrary (void) { - const char* dllname; - const dllfunction_t *func; + const char* dllnames [] = + { +#if defined(WIN64) + "libjpeg64.dll", +#elif defined(WIN32) + "libjpeg.dll", +#elif defined(MACOSX) + "libjpeg.62.dylib", +#else + "libjpeg.so.62", + "libjpeg.so", +#endif + NULL + }; // Already loaded? if (jpeg_dll) return true; -#ifdef WIN32 - dllname = "libjpeg.dll"; -#else - dllname = "libjpeg.so.62"; -#endif - - // Initializations - for (func = jpegfuncs; func && func->name != NULL; func++) - *func->funcvariable = NULL; - // 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 +435,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 +470,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 +498,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 +630,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; } @@ -683,7 +673,7 @@ qboolean JPEG_SaveImage_preflipped (const char *filename, int width, int height, } // Open the file - file = FS_Open (filename, "wb", true); + file = FS_Open (filename, "wb", true, false); if (!file) return false;