From: <tj...@us...> - 2010-11-14 10:35:57
|
Revision: 13914 http://alleg.svn.sourceforge.net/alleg/?rev=13914&view=rev Author: tjaden Date: 2010-11-14 10:35:48 +0000 (Sun, 14 Nov 2010) Log Message: ----------- Bumped version to 5.1.0 (SVN). Modified Paths: -------------- allegro/branches/5.1/CMakeLists.txt allegro/branches/5.1/include/allegro5/base.h Modified: allegro/branches/5.1/CMakeLists.txt =================================================================== --- allegro/branches/5.1/CMakeLists.txt 2010-11-14 10:30:15 UTC (rev 13913) +++ allegro/branches/5.1/CMakeLists.txt 2010-11-14 10:35:48 UTC (rev 13914) @@ -29,7 +29,7 @@ # We use C++ in a few cases. project(ALLEGRO C CXX) -set(ALLEGRO_VERSION 5.0.0) +set(ALLEGRO_VERSION 5.1.0) string(REGEX MATCH "^[0-9]+[.][0-9]+" ALLEGRO_SOVERSION ${ALLEGRO_VERSION}) set(ALLEGRO_DLL_SHORTVER 50) Modified: allegro/branches/5.1/include/allegro5/base.h =================================================================== --- allegro/branches/5.1/include/allegro5/base.h 2010-11-14 10:30:15 UTC (rev 13913) +++ allegro/branches/5.1/include/allegro5/base.h 2010-11-14 10:35:48 UTC (rev 13914) @@ -54,7 +54,7 @@ #endif #define ALLEGRO_VERSION 5 -#define ALLEGRO_SUB_VERSION 0 +#define ALLEGRO_SUB_VERSION 1 #define ALLEGRO_WIP_VERSION 0 /* Not sure we need it, but since ALLEGRO_VERSION_STR contains it: @@ -67,7 +67,7 @@ */ #define ALLEGRO_RELEASE_NUMBER 0 -#define ALLEGRO_VERSION_STR "5.0.0 (RC1)" +#define ALLEGRO_VERSION_STR "5.1.0 (SVN)" #define ALLEGRO_DATE_STR "2010" #define ALLEGRO_DATE 20101114 /* yyyymmdd */ #define ALLEGRO_VERSION_INT \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-23 00:11:46
|
Revision: 13921 http://alleg.svn.sourceforge.net/alleg/?rev=13921&view=rev Author: tjaden Date: 2010-11-23 00:11:40 +0000 (Tue, 23 Nov 2010) Log Message: ----------- Add al_is_system_installed and hide al_get_system_driver. ALLEGRO_SYSTEM is not a documented type so the only way the user could use al_get_system_driver() is testing if it returns NULL. The function exists in 5.0 RC1 so we better not remove it, but we can remove the documentation. Add al_is_system_installed as a replacement, consistent with other similar functions. Modified Paths: -------------- allegro/branches/5.1/docs/src/refman/system.txt allegro/branches/5.1/include/allegro5/system.h allegro/branches/5.1/src/system.c Modified: allegro/branches/5.1/docs/src/refman/system.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/system.txt 2010-11-22 21:54:25 UTC (rev 13920) +++ allegro/branches/5.1/docs/src/refman/system.txt 2010-11-23 00:11:40 UTC (rev 13921) @@ -35,6 +35,10 @@ > Note: al_uninstall_system() can be called without a corresponding [al_install_system] call, e.g. from atexit(). +## API: al_is_system_installed + +Returns true if Allegro is initialized, otherwise returns false. + ## API: al_get_allegro_version Returns the (compiled) version of the Allegro library, packed into a single @@ -114,10 +118,6 @@ See also: [al_set_org_name] -## API: al_get_system_driver - -Returns the currently active system driver, or NULL. - ## API: al_get_system_config Returns the current system configuration structure, or NULL if Modified: allegro/branches/5.1/include/allegro5/system.h =================================================================== --- allegro/branches/5.1/include/allegro5/system.h 2010-11-22 21:54:25 UTC (rev 13920) +++ allegro/branches/5.1/include/allegro5/system.h 2010-11-23 00:11:40 UTC (rev 13921) @@ -16,6 +16,7 @@ AL_FUNC(bool, al_install_system, (int version, int (*atexit_ptr)(void (*)(void)))); AL_FUNC(void, al_uninstall_system, (void)); +AL_FUNC(bool, al_is_system_installed, (void)); AL_FUNC(ALLEGRO_SYSTEM *, al_get_system_driver, (void)); AL_FUNC(ALLEGRO_CONFIG *, al_get_system_config, (void)); Modified: allegro/branches/5.1/src/system.c =================================================================== --- allegro/branches/5.1/src/system.c 2010-11-22 21:54:25 UTC (rev 13920) +++ allegro/branches/5.1/src/system.c 2010-11-23 00:11:40 UTC (rev 13921) @@ -283,8 +283,18 @@ -/* Function: al_get_system_driver +/* Function: al_is_system_installed */ +bool al_is_system_installed(void) +{ + return (active_sysdrv) ? true : false; +} + + +/* Hidden function: al_get_system_driver + * This was exported and documented in 5.0rc1 but probably shouldn't have been + * as ALLEGRO_SYSTEM is not documented. + */ ALLEGRO_SYSTEM *al_get_system_driver(void) { return active_sysdrv; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <el...@us...> - 2010-11-26 16:33:47
|
Revision: 13931 http://alleg.svn.sourceforge.net/alleg/?rev=13931&view=rev Author: elias Date: 2010-11-26 16:33:40 +0000 (Fri, 26 Nov 2010) Log Message: ----------- Removed ALLEGRO_VIDEO_BITMAP which masqueraded as a bit-field flag but was just 0 and therefore failed when using it like one (get_new_bitmap_flags() & ALLEGRO_VIDEO_BITMAP always failed). Modified Paths: -------------- allegro/branches/5.1/demos/speed/a4_aux.c allegro/branches/5.1/demos/speed/main.c allegro/branches/5.1/docs/src/refman/graphics.txt allegro/branches/5.1/examples/ex_lockbitmap.c allegro/branches/5.1/examples/ex_subbitmap.c allegro/branches/5.1/include/allegro5/bitmap.h allegro/branches/5.1/tests/test_driver.c Modified: allegro/branches/5.1/demos/speed/a4_aux.c =================================================================== --- allegro/branches/5.1/demos/speed/a4_aux.c 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/demos/speed/a4_aux.c 2010-11-26 16:33:40 UTC (rev 13931) @@ -258,7 +258,7 @@ ALLEGRO_BITMAP *bmp; oldflags = al_get_new_bitmap_flags(); - newflags = (oldflags &~ ALLEGRO_VIDEO_BITMAP) | ALLEGRO_MEMORY_BITMAP; + newflags = ALLEGRO_MEMORY_BITMAP; al_set_new_bitmap_flags(newflags); bmp = al_create_bitmap(w, h); al_set_new_bitmap_flags(oldflags); Modified: allegro/branches/5.1/demos/speed/main.c =================================================================== --- allegro/branches/5.1/demos/speed/main.c 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/demos/speed/main.c 2010-11-26 16:33:40 UTC (rev 13931) @@ -277,7 +277,7 @@ return 1; } - al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); + al_set_new_bitmap_flags(0); font_video = al_load_bitmap_font("a4_font.tga"); if (!font_video) { fprintf(stderr, "Error loading a4_font.tga\n"); Modified: allegro/branches/5.1/docs/src/refman/graphics.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/graphics.txt 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/docs/src/refman/graphics.txt 2010-11-26 16:33:40 UTC (rev 13931) @@ -306,11 +306,6 @@ Sets the flags to use for newly created bitmaps. Valid flags are: -ALLEGRO_VIDEO_BITMAP -: This is the default flag. Creates a bitmap that resides - in the video card memory. These types of bitmaps receive the greatest benefit - from hardware acceleration. - ALLEGRO_MEMORY_BITMAP : Create a bitmap residing in system memory. Operations on, and with, memory bitmaps will not be hardware accelerated. Modified: allegro/branches/5.1/examples/ex_lockbitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_lockbitmap.c 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/examples/ex_lockbitmap.c 2010-11-26 16:33:40 UTC (rev 13931) @@ -49,7 +49,7 @@ if (mode == 0) { log_printf("Locking video bitmap"); al_clear_to_color(al_map_rgb(0, 0, 0)); - al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); + al_set_new_bitmap_flags(0); bitmap = al_create_bitmap(3*256, 256); } else if (mode == 1) { Modified: allegro/branches/5.1/examples/ex_subbitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_subbitmap.c 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/examples/ex_subbitmap.c 2010-11-26 16:33:40 UTC (rev 13931) @@ -264,7 +264,7 @@ use_memory = !use_memory; log_printf("Using a %s bitmap.\n", use_memory ? "memory" : "video"); al_set_new_bitmap_flags(use_memory ? - ALLEGRO_MEMORY_BITMAP : ALLEGRO_VIDEO_BITMAP); + ALLEGRO_MEMORY_BITMAP : 0); src_bmp = al_clone_bitmap(temp); al_destroy_bitmap(temp); redraw = true; Modified: allegro/branches/5.1/include/allegro5/bitmap.h =================================================================== --- allegro/branches/5.1/include/allegro5/bitmap.h 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/include/allegro5/bitmap.h 2010-11-26 16:33:40 UTC (rev 13931) @@ -50,8 +50,6 @@ /* * Bitmap flags */ -#define ALLEGRO_VIDEO_BITMAP 0x0000 - #define ALLEGRO_MEMORY_BITMAP 0x0001 #define ALLEGRO_KEEP_BITMAP_FORMAT 0x0002 #define ALLEGRO_FORCE_LOCKING 0x0004 Modified: allegro/branches/5.1/tests/test_driver.c =================================================================== --- allegro/branches/5.1/tests/test_driver.c 2010-11-26 16:16:09 UTC (rev 13930) +++ allegro/branches/5.1/tests/test_driver.c 2010-11-26 16:33:40 UTC (rev 13931) @@ -1145,7 +1145,7 @@ reliable = (failed_tests == old_failed_tests); - al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); + al_set_new_bitmap_flags(0); do_test(cfg, testname, al_get_backbuffer(display), HW, reliable); } @@ -1274,7 +1274,7 @@ al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP); load_bitmaps(cfg, "bitmaps", SW); - al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); + al_set_new_bitmap_flags(0); load_bitmaps(cfg, "bitmaps", HW); load_fonts(cfg, "fonts"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2010-11-27 20:12:32
|
Revision: 13932 http://alleg.svn.sourceforge.net/alleg/?rev=13932&view=rev Author: trentg Date: 2010-11-27 20:12:24 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Change to using premultiplied alpha by default. A flag, ALLEGRO_NO_PREMULTIPLIED_ALPHA, was added. Examples have been changed to use (ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA) as their blending mode for images (primitives use the same blending still, which in same cases meant adding extra al_set_blender calls, but this can be avoided I think by premultiplying their color). Modified Paths: -------------- allegro/branches/5.1/addons/image/bmp.c allegro/branches/5.1/addons/image/gdiplus.cpp allegro/branches/5.1/addons/image/iphone.m allegro/branches/5.1/addons/image/macosx.m allegro/branches/5.1/addons/image/png.c allegro/branches/5.1/addons/image/tga.c allegro/branches/5.1/addons/ttf/ttf.c allegro/branches/5.1/demos/a5teroids/src/GUI.cpp allegro/branches/5.1/demos/a5teroids/src/a5teroids.cpp allegro/branches/5.1/demos/a5teroids/src/render.cpp allegro/branches/5.1/demos/speed/a4_aux.c allegro/branches/5.1/examples/ex_bitmap_flip.c allegro/branches/5.1/examples/ex_bitmap_target.c allegro/branches/5.1/examples/ex_blend.c allegro/branches/5.1/examples/ex_blend2.cpp allegro/branches/5.1/examples/ex_blend_bench.c allegro/branches/5.1/examples/ex_blit.c allegro/branches/5.1/examples/ex_clip.c allegro/branches/5.1/examples/ex_display_options.c allegro/branches/5.1/examples/ex_draw.c allegro/branches/5.1/examples/ex_draw_bitmap.c allegro/branches/5.1/examples/ex_expose.c allegro/branches/5.1/examples/ex_haiku.c allegro/branches/5.1/examples/ex_icon.c allegro/branches/5.1/examples/ex_joystick_hotplugging.c allegro/branches/5.1/examples/ex_lines.c allegro/branches/5.1/examples/ex_logo.c allegro/branches/5.1/examples/ex_membmp.c allegro/branches/5.1/examples/ex_mixer_pp.c allegro/branches/5.1/examples/ex_mouse_cursor.c allegro/branches/5.1/examples/ex_mouse_events.c allegro/branches/5.1/examples/ex_native_filechooser.c allegro/branches/5.1/examples/ex_premulalpha.c allegro/branches/5.1/examples/ex_prim.c allegro/branches/5.1/examples/ex_rotate.c allegro/branches/5.1/examples/ex_scale.c allegro/branches/5.1/examples/ex_stream_seek.c allegro/branches/5.1/examples/ex_windows.c allegro/branches/5.1/examples/nihgui.cpp allegro/branches/5.1/include/allegro5/bitmap.h allegro/branches/5.1/src/tls.c Modified: allegro/branches/5.1/addons/image/bmp.c =================================================================== --- allegro/branches/5.1/addons/image/bmp.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/bmp.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -340,6 +340,7 @@ int i; unsigned char c[4]; unsigned char r, g, b, a; + bool premul = !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); for (i = 0; i < length; i++) { al_fread(f, c, 4); @@ -347,6 +348,12 @@ g = c[1]; b = c[0]; a = c[3]; + + if (premul) { + r = r * a / 255; + g = g * a / 255; + b = b * a / 255; + } data[0] = r; data[1] = g; Modified: allegro/branches/5.1/addons/image/gdiplus.cpp =================================================================== --- allegro/branches/5.1/addons/image/gdiplus.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/gdiplus.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -243,17 +243,43 @@ if (a_lock) { unsigned char *in = (unsigned char *)gdi_lock->Scan0; unsigned char *out = (unsigned char *)a_lock->data; + bool premul = + !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); - if (gdi_lock->Stride == a_lock->pitch) { - memcpy(out, in, h * gdi_lock->Stride); + if (premul) { } + int in_inc = gdi_lock->Stride - (w*4); + int out_inc = a_lock->pitch - (w*4); + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + unsigned char r, g, b, a; + b = *in++; + g = *in++; + r = *in++; + a = *in++; + b = b * a / 255; + g = g * a / 255; + r = r * a / 255; + *out++ = b; + *out++ = g; + *out++ = r; + *out++ = a; + } + in += in_inc; + out += out_inc; + } else { - uint32_t rows = h; - while (rows--) { - memcpy(out, in, w * 4); - in += gdi_lock->Stride; - out += a_lock->pitch; + if (gdi_lock->Stride == a_lock->pitch) { + memcpy(out, in, h * gdi_lock->Stride); } + else { + uint32_t rows = h; + while (rows--) { + memcpy(out, in, w * 4); + in += gdi_lock->Stride; + out += a_lock->pitch; + } + } } al_unlock_bitmap(a_bmp); } Modified: allegro/branches/5.1/addons/image/iphone.m =================================================================== --- allegro/branches/5.1/addons/image/iphone.m 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/iphone.m 2010-11-27 20:12:24 UTC (rev 13932) @@ -25,6 +25,7 @@ UIImage *uiimage = [UIImage imageWithData:nsdata]; int w = uiimage.size.width; int h = uiimage.size.height; + bool premul = !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); /* Now we need to draw the image into a memory buffer. */ pixels = al_malloc(w * h * 4); @@ -43,40 +44,33 @@ ALLEGRO_LOCKED_REGION *lock = al_lock_bitmap(bmp, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_WRITEONLY); - /* For whatever reason, there is no way in the current Quartz API - * to read non-premultiplied pixels from an image. Since by default, - * all of Allegro's image loader do not load premultiplied alpha images, - * we de-multiply the alpha here by default. If the user asks for - * premultiplied alpha, we can skip this step and do a faster memcpy - * of the data directly into the lock buffer. - */ - for (int i = 0; i < h; i++) { - unsigned char *src_ptr = (unsigned char *)pixels + w * 4 * i; - unsigned char *dest_ptr = (unsigned char *)lock->data + lock->pitch * i; - for (int x = 0; x < w; x++) { - unsigned char r, g, b, a; - r = *src_ptr++; - g = *src_ptr++; - b = *src_ptr++; - a = *src_ptr++; - // NOTE: avoid divide by zero by adding a fraction - float alpha_mul = 255.0f / (a+0.001f); - r *= alpha_mul; - g *= alpha_mul; - b *= alpha_mul; - *dest_ptr++ = r; - *dest_ptr++ = g; - *dest_ptr++ = b; - *dest_ptr++ = a; - } + if (!premul) { + for (int i = 0; i < h; i++) { + unsigned char *src_ptr = (unsigned char *)pixels + w * 4 * i; + unsigned char *dest_ptr = (unsigned char *)lock->data + + lock->pitch * i; + for (int x = 0; x < w; x++) { + unsigned char r, g, b, a; + r = *src_ptr++; + g = *src_ptr++; + b = *src_ptr++; + a = *src_ptr++; + // NOTE: avoid divide by zero by adding a fraction + float alpha_mul = 255.0f / (a+0.001f); + r *= alpha_mul; + g *= alpha_mul; + b *= alpha_mul; + *dest_ptr++ = r; + *dest_ptr++ = g; + *dest_ptr++ = b; + *dest_ptr++ = a; + } } - // FIXME: when PREMULTIPLY_ALPHA (?) load flag is added, run the above - // code or the below commented out code conditionally. - /* - for (int i = 0; i < h; i++) { - memcpy(lock->data + lock->pitch * i, pixels + w * 4 * i, w * 4); + else { + for (int i = 0; i < h; i++) { + memcpy(lock->data + lock->pitch * i, pixels + w * 4 * i, w * 4); + } } - */ al_unlock_bitmap(bmp); done: al_free(pixels); Modified: allegro/branches/5.1/addons/image/macosx.m =================================================================== --- allegro/branches/5.1/addons/image/macosx.m 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/macosx.m 2010-11-27 20:12:24 UTC (rev 13932) @@ -19,6 +19,7 @@ /* Note: buffer is now owned (and later freed) by the data object. */ NSData *nsdata = [NSData dataWithBytesNoCopy:buffer length:size]; NSImage *image = [[NSImage alloc] initWithData:nsdata]; + bool premul = !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); if (!image) return NULL; @@ -69,35 +70,36 @@ if (bmp) { ALLEGRO_LOCKED_REGION *lock = al_lock_bitmap(bmp, ALLEGRO_PIXEL_FORMAT_ABGR_8888, ALLEGRO_LOCK_WRITEONLY); - int i, x; - // See iphone.m around line 46 for the reasoning behind this code. - for (i = 0; i < h; i++) { - unsigned char *src_ptr = (unsigned char *)pixels + w * 4 * i; - unsigned char *dest_ptr = (unsigned char *)lock->data + lock->pitch * i; - for (x = 0; x < w; x++) { - unsigned char r, g, b, a; - r = *src_ptr++; - g = *src_ptr++; - b = *src_ptr++; - a = *src_ptr++; - // NOTE: avoid divide by zero by adding a fraction - float alpha_mul = 255.0f / (a+0.001f); - r *= alpha_mul; - g *= alpha_mul; - b *= alpha_mul; - *dest_ptr++ = r; - *dest_ptr++ = g; - *dest_ptr++ = b; - *dest_ptr++ = a; - } + int i; + if (!premul) { + int x; + for (i = 0; i < h; i++) { + unsigned char *src_ptr = (unsigned char *)pixels + w * 4 * i; + unsigned char *dest_ptr = (unsigned char *)lock->data + + lock->pitch * i; + for (x = 0; x < w; x++) { + unsigned char r, g, b, a; + r = *src_ptr++; + g = *src_ptr++; + b = *src_ptr++; + a = *src_ptr++; + // NOTE: avoid divide by zero by adding a fraction + float alpha_mul = 255.0f / (a+0.001f); + r *= alpha_mul; + g *= alpha_mul; + b *= alpha_mul; + *dest_ptr++ = r; + *dest_ptr++ = g; + *dest_ptr++ = b; + *dest_ptr++ = a; + } + } } - // FIXME: when PREMULTIPLY_ALPHA (?) load flag is added, run the above - // code or the below commented out code conditionally. - /* - for (i = 0; i < h; i++) { - memcpy(lock->data + lock->pitch * i, pixels + w * 4 * i, w * 4); + else { + for (i = 0; i < h; i++) { + memcpy(lock->data + lock->pitch * i, pixels + w * 4 * i, w * 4); + } } - */ al_unlock_bitmap(bmp); } al_free(pixels); Modified: allegro/branches/5.1/addons/image/png.c =================================================================== --- allegro/branches/5.1/addons/image/png.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/png.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -100,6 +100,7 @@ ALLEGRO_LOCKED_REGION *lock; unsigned char *buf; unsigned char *rgba; + bool premul = !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); ASSERT(png_ptr && info_ptr); @@ -246,11 +247,22 @@ else { for (i = 0; i < width; i++) { uint32_t pix = bmp_read32(ptr); + int r = pix & 0xff; + int g = (pix >> 8) & 0xff; + int b = (pix >> 16) & 0xff; + int a = (pix >> 24) & 0xff; ptr += 4; - *(rgba++) = pix & 0xff; - *(rgba++) = (pix >> 8) & 0xff; - *(rgba++) = (pix >> 16) & 0xff; - *(rgba++) = (pix >> 24) & 0xff; + + if (premul) { + r = r * a / 255; + g = g * a / 255; + b = b * a / 255; + } + + *(rgba++) = r; + *(rgba++) = g; + *(rgba++) = b; + *(rgba++) = a; } } rgba = rgba_row_start + lock->pitch; Modified: allegro/branches/5.1/addons/image/tga.c =================================================================== --- allegro/branches/5.1/addons/image/tga.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/image/tga.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -248,6 +248,7 @@ ALLEGRO_BITMAP *bmp; ALLEGRO_LOCKED_REGION *lr; unsigned char *buf; + bool premul = !(al_get_new_bitmap_flags() & ALLEGRO_NO_PREMULTIPLIED_ALPHA); ASSERT(f); id_length = al_fgetc(f); @@ -410,6 +411,12 @@ int g = buf[i * 4 + 1]; int r = buf[i * 4 + 2]; int a = buf[i * 4 + 3]; + + if (premul) { + r = r * a / 255; + g = g * a / 255; + b = b * a / 255; + } unsigned char *dest = (unsigned char*)lr->data + lr->pitch*true_y + true_x*4; Modified: allegro/branches/5.1/addons/ttf/ttf.c =================================================================== --- allegro/branches/5.1/addons/ttf/ttf.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/addons/ttf/ttf.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -188,11 +188,12 @@ unsigned char *dptr = (unsigned char *)lr->data + lr->pitch * y; int bit = 0; for (x = 0; x < face->glyph->bitmap.width; x++) { - bool set = (*ptr >> (7-bit)) & 1; - *(dptr++) = 255; - *(dptr++) = 255; - *(dptr++) = 255; - *(dptr++) = set ? 255 : 0; + unsigned char set = ((*ptr >> (7-bit)) & 1) ? 255 : 0; + float setf = set / 255.0f; + *(dptr++) = 255 * setf; + *(dptr++) = 255 * setf; + *(dptr++) = 255 * setf; + *(dptr++) = set; bit++; if (bit >= 8) { bit = 0; @@ -208,9 +209,10 @@ unsigned char *dptr = (unsigned char *)lr->data + lr->pitch * y; for (x = 0; x < face->glyph->bitmap.width; x++) { unsigned char c = *ptr; - *(dptr++) = 255; - *(dptr++) = 255; - *(dptr++) = 255; + float cf = c / 255.0f; + *(dptr++) = 255 * cf; + *(dptr++) = 255 * cf; + *(dptr++) = 255 * cf; *(dptr++) = c; ptr++; } Modified: allegro/branches/5.1/demos/a5teroids/src/GUI.cpp =================================================================== --- allegro/branches/5.1/demos/a5teroids/src/GUI.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/demos/a5teroids/src/GUI.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -47,9 +47,9 @@ 0); al_draw_bitmap(logo, (BB_W-lw)/2, (BB_H-lh)/4, 0); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(myfont, al_map_rgb(255, 255, 0), BB_W/2, BB_H/2, ALLEGRO_ALIGN_CENTRE, "z/y to start"); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); for (unsigned int i = 0; i < widgets.size(); i++) { widgets[i]->render(i == selected); Modified: allegro/branches/5.1/demos/a5teroids/src/a5teroids.cpp =================================================================== --- allegro/branches/5.1/demos/a5teroids/src/a5teroids.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/demos/a5teroids/src/a5teroids.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -3,7 +3,7 @@ ALLEGRO_VOICE *voice; ALLEGRO_MIXER *mixer; -static int check_arg(int argc, const char **argv, const char *arg) +static int check_arg(int argc, char **argv, const char *arg) { for (int i = 1; i < argc; i++) { if (!strcmp(argv[i], arg)) @@ -47,7 +47,7 @@ entities.clear(); } -int main(int argc, const char **argv) +int main(int argc, char **argv) { if (check_arg(argc, argv, "-fullscreen")) useFullScreenMode = true; Modified: allegro/branches/5.1/demos/a5teroids/src/render.cpp =================================================================== --- allegro/branches/5.1/demos/a5teroids/src/render.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/demos/a5teroids/src/render.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -100,7 +100,7 @@ if (e->isHighlighted()) { al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_ONE); e->render_four(al_map_rgb(150, 150, 150)); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); } } Modified: allegro/branches/5.1/demos/speed/a4_aux.c =================================================================== --- allegro/branches/5.1/demos/speed/a4_aux.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/demos/speed/a4_aux.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -282,7 +282,7 @@ */ void solid_mode() { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); } Modified: allegro/branches/5.1/examples/ex_bitmap_flip.c =================================================================== --- allegro/branches/5.1/examples/ex_bitmap_flip.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_bitmap_flip.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -120,7 +120,7 @@ al_start_timer(timer); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); while (!done) { ALLEGRO_EVENT event; Modified: allegro/branches/5.1/examples/ex_bitmap_target.c =================================================================== --- allegro/branches/5.1/examples/ex_bitmap_target.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_bitmap_target.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -33,7 +33,7 @@ vsnprintf(message, sizeof message, format, list); va_end(list); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_text(myfont, al_map_rgb(0, 0, 0), x + 2, y + 2, 0, message); al_draw_text(myfont, al_map_rgb(255, 255, 255), x, y, 0, message); Modified: allegro/branches/5.1/examples/ex_blend.c =================================================================== --- allegro/branches/5.1/examples/ex_blend.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_blend.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -41,7 +41,7 @@ vsnprintf(message, sizeof message, format, list); va_end(list); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); h = al_get_font_line_height(ex.myfont); for (j = 0; j < 2; j++) { @@ -153,12 +153,12 @@ } if (ex.mode >= 1 && ex.mode <= 5) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_set_target_bitmap(target); al_draw_bitmap_region(ex.offscreen, x, y, 430, 430, x, y, 0); } if (ex.mode >= 6 && ex.mode <= 10) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_set_target_bitmap(target); al_draw_bitmap_region(ex.memory, x, y, 430, 430, x, y, 0); } Modified: allegro/branches/5.1/examples/ex_blend2.cpp =================================================================== --- allegro/branches/5.1/examples/ex_blend2.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_blend2.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -276,7 +276,7 @@ /* Display results. */ al_restore_state(&state); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_bitmap(target, 40, 20, 0); al_draw_bitmap(target_bmp, 400, 20, 0); Modified: allegro/branches/5.1/examples/ex_blend_bench.c =================================================================== --- allegro/branches/5.1/examples/ex_blend_bench.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_blend_bench.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -84,7 +84,7 @@ } al_set_target_bitmap(b1); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); step(mode, b2); /* Display the blended bitmap to the screen so we can see something. */ Modified: allegro/branches/5.1/examples/ex_blit.c =================================================================== --- allegro/branches/5.1/examples/ex_blit.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_blit.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -69,7 +69,7 @@ va_start(list, format); vsnprintf(message, sizeof message, format, list); va_end(list); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(ex.font, ex.text, ex.text_x, ex.text_y, 0, "%s", message); ex.text_y += th; } Modified: allegro/branches/5.1/examples/ex_clip.c =================================================================== --- allegro/branches/5.1/examples/ex_clip.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_clip.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -79,7 +79,7 @@ vsnprintf(message, sizeof message, format, list); va_end(list); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(ex.font, ex.text, ex.text_x, ex.text_y, 0, "%s", message); ex.text_y += th; Modified: allegro/branches/5.1/examples/ex_display_options.c =================================================================== --- allegro/branches/5.1/examples/ex_display_options.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_display_options.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -105,7 +105,7 @@ al_draw_filled_rectangle(x, y, x + 300, y + font_h, c); } c = al_map_rgb_f(0, 0, 0); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, c, x, y, 0, "%s %d x %d (%d, %d)", i < modes_count ? "Fullscreen" : "Windowed", mode.width, Modified: allegro/branches/5.1/examples/ex_draw.c =================================================================== --- allegro/branches/5.1/examples/ex_draw.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_draw.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -82,7 +82,7 @@ vsnprintf(message, sizeof message, format, list); va_end(list); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(ex.font, ex.text, ex.text_x, ex.text_y, 0, "%s", message); al_restore_state(&state); @@ -157,7 +157,7 @@ /* Draw the test scene. */ - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); for (i = 0; i < rects_num; i++) { ALLEGRO_COLOR rgba = ex.foreground; rgba.a *= 0.5; Modified: allegro/branches/5.1/examples/ex_draw_bitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_draw_bitmap.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_draw_bitmap.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -179,7 +179,7 @@ ALLEGRO_COLOR tint = example.white; if (example.blending == 0) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); tint = example.half_white; } else if (example.blending == 1) { @@ -198,7 +198,7 @@ al_draw_tinted_bitmap(example.bitmap, tint, s->x, s->y, 0); } - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); if (example.show_help) { for (i = 0; i < 5; i++) al_draw_text(example.font, example.white, 0, h - 5 * fh + i * fh, 0, text[i]); Modified: allegro/branches/5.1/examples/ex_expose.c =================================================================== --- allegro/branches/5.1/examples/ex_expose.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_expose.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -75,10 +75,10 @@ if (event.type == ALLEGRO_EVENT_TIMER) { /* Slowly restore the original bitmap. */ int x, y; - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); for (y = 0; y < H; y += 200) { for (x = 0; x < W; x += 320) { - al_draw_tinted_bitmap(bitmap, al_map_rgba_f(1, 1, 1, 0.1), x, y, 0); + al_draw_tinted_bitmap(bitmap, al_map_rgba_f(1, 1, 1, 0), x, y, 0); } } al_flip_display(); Modified: allegro/branches/5.1/examples/ex_haiku.c =================================================================== --- allegro/branches/5.1/examples/ex_haiku.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_haiku.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -555,7 +555,7 @@ for (i = 0; i < NUM_TOKENS; i++) draw_token(&tokens[i]); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); for (i = 0; i < NUM_TYPES; i++) draw_token(&buttons[i]); Modified: allegro/branches/5.1/examples/ex_icon.c =================================================================== --- allegro/branches/5.1/examples/ex_icon.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_icon.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -43,7 +43,7 @@ } al_set_target_backbuffer(display); - al_set_window_title(display, "<-- Changing icon example"); + al_set_window_title(display, "Changing icon example"); timer = al_create_timer(0.5); queue = al_create_event_queue(); Modified: allegro/branches/5.1/examples/ex_joystick_hotplugging.c =================================================================== --- allegro/branches/5.1/examples/ex_joystick_hotplugging.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_joystick_hotplugging.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -118,6 +118,7 @@ } } else if (event.type == ALLEGRO_EVENT_JOYSTICK_CONFIGURATION) { + int old = al_get_num_joysticks(); al_reconfigure_joysticks(); num_joysticks = al_get_num_joysticks(); log_printf("after reconfiguration num joysticks = %d\n", @@ -126,6 +127,9 @@ log_printf("current joystick is: %s\n", al_get_joystick_active(curr_joy) ? "active" : "inactive"); } + if (old < num_joysticks) { + curr_joy = al_get_joystick(0); + } } else if (event.type == ALLEGRO_EVENT_JOYSTICK_AXIS) { log_printf("axis event from %p\n", event.joystick.id); Modified: allegro/branches/5.1/examples/ex_lines.c =================================================================== --- allegro/branches/5.1/examples/ex_lines.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_lines.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -63,7 +63,7 @@ al_set_target_bitmap(dbuf); fade(); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_ZERO); draw_clip_rect(); red_dot(x, y); @@ -91,7 +91,7 @@ al_set_target_bitmap(dbuf); fade(); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_ZERO); draw_clip_rect(); red_dot(x, y); Modified: allegro/branches/5.1/examples/ex_logo.c =================================================================== --- allegro/branches/5.1/examples/ex_logo.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_logo.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -211,7 +211,7 @@ th = al_get_font_line_height(font) + 3; for (i = 0; param_names[i]; i++) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, label, 2, 2 + i * th, 0, "%s", param_names[i]); } for (i = 0; param_names[i]; i++) { @@ -219,20 +219,20 @@ // FIXME: additive blending seems broken here when using // memory blenders (i.e. no FBO available) // al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE, white) - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_filled_rectangle(75, y, 375, y + th - 2, al_map_rgba_f(1, 1, 1, 0.5)); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, i == selection ? light : normal, 75, y, 0, "%s", param_values[i]); if (i == selection && editing && (((int)(al_get_time() * 2)) & 1)) { int x = 75 + al_get_text_width(font, param_values[i]); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_line(x, y, x, y + th, white, 0); } } - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, normal, 400, 2, 0, "%s", "R - Randomize"); al_draw_textf(font, normal, 400, 2 + th, 0, "%s", "S - Save as logo.png"); @@ -371,7 +371,7 @@ w = al_get_bitmap_width(logo); h = al_get_bitmap_height(logo); al_store_state(&state, ALLEGRO_STATE_BLENDER); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_tinted_bitmap(logo, al_map_rgba_f(1, 1, 1, 1 - f), logo_x, logo_y, 0); al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ONE); for (j = -2; j <= 2; j += 2) { Modified: allegro/branches/5.1/examples/ex_membmp.c =================================================================== --- allegro/branches/5.1/examples/ex_membmp.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_membmp.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -55,7 +55,7 @@ al_get_bitmap_height(al_get_target_bitmap()), 0); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); /* Note this makes the memory buffer case much slower due to repeated * locking of the backbuffer. Officially you can't use al_lock_bitmap Modified: allegro/branches/5.1/examples/ex_mixer_pp.c =================================================================== --- allegro/branches/5.1/examples/ex_mixer_pp.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_mixer_pp.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -72,6 +72,7 @@ al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); al_draw_filled_rectangle(0, 0, al_get_bitmap_width(dbuf), al_get_bitmap_height(dbuf), al_map_rgba_f(0.8, 0.3, 0.1, 0.06)); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_tinted_scaled_rotated_bitmap(bmp, al_map_rgba_f(0.8, 0.3, 0.1, 0.2), sw/2.0, sh/2.0, dx, dy - disp, scale, scale, theta, 0); @@ -80,6 +81,7 @@ al_set_target_backbuffer(display); al_draw_bitmap(dbuf, 0, 0, 0); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); al_draw_line(10, dh - db_l, 10, dh, al_map_rgb_f(1, 0.6, 0.2), 6); al_draw_line(20, dh - db_r, 20, dh, al_map_rgb_f(1, 0.6, 0.2), 6); Modified: allegro/branches/5.1/examples/ex_mouse_cursor.c =================================================================== --- allegro/branches/5.1/examples/ex_mouse_cursor.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_mouse_cursor.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -54,7 +54,7 @@ al_clear_to_color(al_map_rgb(128, 128, 128)); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); th = al_get_font_line_height(font); for (i = 0; i < NUM_CURSORS; i++) { al_draw_text(font, al_map_rgba_f(0, 0, 0, 1), Modified: allegro/branches/5.1/examples/ex_mouse_events.c =================================================================== --- allegro/branches/5.1/examples/ex_mouse_events.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_mouse_events.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -95,7 +95,7 @@ draw_mouse_button(i, buttons[i]); } al_draw_bitmap(cursor, mx, my, 0); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, black, 5, 5, 0, "dx %i, dy %i, dz %i, dw %i", mmx, mmy, mmz, mmw); al_draw_textf(font, black, 5, 25, 0, "x %i, y %i, z %i, w %i", mx, my, mz, mw); al_draw_textf(font, black, 5, 45, 0, "p = %g", p); Modified: allegro/branches/5.1/examples/ex_native_filechooser.c =================================================================== --- allegro/branches/5.1/examples/ex_native_filechooser.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_native_filechooser.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -150,7 +150,7 @@ path = al_get_native_file_dialog_path(dialog, i); name = al_path_cstr(path, ALLEGRO_NATIVE_PATH_SEP); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, info, x, y + i * th, ALLEGRO_ALIGN_CENTRE, name, 0, 0); } } @@ -310,7 +310,7 @@ float y = 0; redraw = false; al_clear_to_color(background); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, cur_dialog ? inactive : active, x, y, ALLEGRO_ALIGN_CENTRE, "Open"); al_draw_textf(font, cur_dialog ? inactive : active, x, h - 30, ALLEGRO_ALIGN_CENTRE, message_log ? "Close Message Log" : "Open Message Log"); Modified: allegro/branches/5.1/examples/ex_premulalpha.c =================================================================== --- allegro/branches/5.1/examples/ex_premulalpha.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_premulalpha.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -90,24 +90,24 @@ redraw = false; al_clear_to_color(al_map_rgb_f(0.5, 0.6, 1)); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, color, x, y, 0, "not premultiplied"); al_draw_textf(font, color, x, y + th, 0, "no filtering"); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_scaled_rotated_bitmap(tex1, 4, 4, x + 320, y, 8, 8, a, 0); y += 120; - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, color, x, y, 0, "not premultiplied"); al_draw_textf(font, color, x, y + th, 0, "mag linear filtering"); al_draw_textf(font, color2, x + 400, y, 0, "wrong dark border"); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_scaled_rotated_bitmap(tex2, 4, 4, x + 320, y, 8, 8, a, 0); y += 120; - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, color, x, y, 0, "premultiplied alpha"); al_draw_textf(font, color, x, y + th, 0, "no filtering"); al_draw_textf(font, color, x + 400, y, 0, "no difference"); @@ -116,7 +116,7 @@ y += 120; - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(font, color, x, y, 0, "premultiplied alpha"); al_draw_textf(font, color, x, y + th, 0, "mag linear filtering"); al_draw_textf(font, color3, x + 400, y, 0, "correct color"); Modified: allegro/branches/5.1/examples/ex_prim.c =================================================================== --- allegro/branches/5.1/examples/ex_prim.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_prim.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -722,7 +722,7 @@ al_draw_bitmap(Buffer, 0, 0, 0); } - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(Font, solid_white, ScreenW / 2, ScreenH - 20, ALLEGRO_ALIGN_CENTRE, "%s", ScreenName[cur_screen]); al_draw_textf(Font, solid_white, 0, 0, 0, "FPS: %f", (float)frames_done / (al_get_time() - time_diff)); al_draw_textf(Font, solid_white, 0, 20, 0, "Change Screen (Up/Down). Esc to Quit."); Modified: allegro/branches/5.1/examples/ex_rotate.c =================================================================== --- allegro/branches/5.1/examples/ex_rotate.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_rotate.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -137,7 +137,7 @@ al_clear_to_color(al_map_rgba_f(0, 0, 1, 1)); if (trans_mode) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); trans = al_map_rgba_f(1, 1, 1, 0.5); } Modified: allegro/branches/5.1/examples/ex_scale.c =================================================================== --- allegro/branches/5.1/examples/ex_scale.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_scale.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -138,7 +138,7 @@ al_clear_to_color(al_map_rgba_f(0, 0, 1, 1)); if (trans_mode) { - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); tint = al_map_rgba_f(1, 1, 1, 0.5); } Modified: allegro/branches/5.1/examples/ex_stream_seek.c =================================================================== --- allegro/branches/5.1/examples/ex_stream_seek.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_stream_seek.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -116,7 +116,7 @@ al_clear_to_color(al_map_rgb(64, 64, 128)); /* render "music player" */ - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(basic_font, c, 0, 0, 0, "Playing %s", stream_filename); print_time(8, 24, pos); al_draw_textf(basic_font, c, 100, 24, 0, "/"); Modified: allegro/branches/5.1/examples/ex_windows.c =================================================================== --- allegro/branches/5.1/examples/ex_windows.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/ex_windows.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -72,12 +72,12 @@ for (;;) { for (i = 0; i < 2; i++) { al_set_target_backbuffer(displays[i]); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); if (i == 0) al_clear_to_color(al_map_rgb(255, 0, 255)); else al_clear_to_color(al_map_rgb(155, 255, 0)); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_textf(myfont, al_map_rgb(0, 0, 0), 50, 50, ALLEGRO_ALIGN_CENTRE, "Click me.."); al_flip_display(); } Modified: allegro/branches/5.1/examples/nihgui.cpp =================================================================== --- allegro/branches/5.1/examples/nihgui.cpp 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/examples/nihgui.cpp 2010-11-27 20:12:24 UTC (rev 13932) @@ -373,7 +373,7 @@ const Theme & theme = this->dialog->get_theme(); SaveState state; - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); if (centred) { al_draw_text(theme.font, theme.fg, (this->x1 + this->x2 + 1)/2, this->y1, ALLEGRO_ALIGN_CENTRE, this->text.c_str()); @@ -432,7 +432,7 @@ this->x2, this->y2, bg); al_draw_rectangle(this->x1 + 0.5, this->y1 + 0.5, this->x2 - 0.5, this->y2 - 0.5, fg, 0); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); al_draw_text(theme.font, fg, (this->x1 + this->x2 + 1)/2, this->y1, ALLEGRO_ALIGN_CENTRE, this->text.c_str()); } @@ -524,7 +524,7 @@ al_draw_filled_rectangle(x1 + 1, y1 + 1, x2 - 1, y2 - 1, theme.bg); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); const int font_height = al_get_font_line_height(theme.font); for (unsigned i = 0; i < items.size(); i++) { int yi = y1 + i * font_height; @@ -757,7 +757,7 @@ al_draw_filled_rectangle(x1, y1, x2, y2, theme.bg); - al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA); + al_set_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_INVERSE_ALPHA); if (!focused) { al_draw_ustr(theme.font, theme.fg, x1, y1, 0, UString(text, left_pos)); Modified: allegro/branches/5.1/include/allegro5/bitmap.h =================================================================== --- allegro/branches/5.1/include/allegro5/bitmap.h 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/include/allegro5/bitmap.h 2010-11-27 20:12:24 UTC (rev 13932) @@ -50,15 +50,16 @@ /* * Bitmap flags */ -#define ALLEGRO_MEMORY_BITMAP 0x0001 -#define ALLEGRO_KEEP_BITMAP_FORMAT 0x0002 -#define ALLEGRO_FORCE_LOCKING 0x0004 -#define ALLEGRO_NO_PRESERVE_TEXTURE 0x0008 -#define ALLEGRO_ALPHA_TEST 0x0010 -#define _ALLEGRO_INTERNAL_OPENGL 0x0020 -#define ALLEGRO_MIN_LINEAR 0x0040 -#define ALLEGRO_MAG_LINEAR 0x0080 -#define ALLEGRO_MIPMAP 0x0100 +#define ALLEGRO_MEMORY_BITMAP 0x0001 +#define ALLEGRO_KEEP_BITMAP_FORMAT 0x0002 +#define ALLEGRO_FORCE_LOCKING 0x0004 +#define ALLEGRO_NO_PRESERVE_TEXTURE 0x0008 +#define ALLEGRO_ALPHA_TEST 0x0010 +#define _ALLEGRO_INTERNAL_OPENGL 0x0020 +#define ALLEGRO_MIN_LINEAR 0x0040 +#define ALLEGRO_MAG_LINEAR 0x0080 +#define ALLEGRO_MIPMAP 0x0100 +#define ALLEGRO_NO_PREMULTIPLIED_ALPHA 0x0200 /* Flags for the blitting functions */ Modified: allegro/branches/5.1/src/tls.c =================================================================== --- allegro/branches/5.1/src/tls.c 2010-11-26 16:33:40 UTC (rev 13931) +++ allegro/branches/5.1/src/tls.c 2010-11-27 20:12:24 UTC (rev 13932) @@ -72,10 +72,10 @@ static void initialize_blender(ALLEGRO_BLENDER *b) { b->blend_op = ALLEGRO_ADD; - b->blend_source = ALLEGRO_ALPHA; + b->blend_source = ALLEGRO_ONE, b->blend_dest = ALLEGRO_INVERSE_ALPHA; b->blend_alpha_op = ALLEGRO_ADD; - b->blend_alpha_source = ALLEGRO_ALPHA; + b->blend_alpha_source = ALLEGRO_ONE; b->blend_alpha_dest = ALLEGRO_INVERSE_ALPHA; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-27 22:50:01
|
Revision: 13938 http://alleg.svn.sourceforge.net/alleg/?rev=13938&view=rev Author: tjaden Date: 2010-11-27 22:49:55 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Define al_show_native_message_box to be usuable without installing Allegro. I have looked over the three implementations and from what I can tell they satisfy this requirement already. Modified Paths: -------------- allegro/branches/5.1/addons/native_dialog/dialog.c allegro/branches/5.1/addons/native_dialog/gtk_dialog.c allegro/branches/5.1/addons/native_dialog/osx_dialog.m allegro/branches/5.1/addons/native_dialog/win_dialog.c allegro/branches/5.1/docs/src/refman/native_dialog.txt Modified: allegro/branches/5.1/addons/native_dialog/dialog.c =================================================================== --- allegro/branches/5.1/addons/native_dialog/dialog.c 2010-11-27 22:33:29 UTC (rev 13937) +++ allegro/branches/5.1/addons/native_dialog/dialog.c 2010-11-27 22:49:55 UTC (rev 13938) @@ -90,6 +90,12 @@ ALLEGRO_NATIVE_DIALOG *fc; int r; + /* Note: the message box code cannot assume that Allegro is installed. + * al_malloc and ustr functions are okay (with the assumption that the + * user doesn't change the memory management functions in another thread + * while this message box is open). + */ + fc = al_malloc(sizeof *fc); memset(fc, 0, sizeof *fc); Modified: allegro/branches/5.1/addons/native_dialog/gtk_dialog.c =================================================================== --- allegro/branches/5.1/addons/native_dialog/gtk_dialog.c 2010-11-27 22:33:29 UTC (rev 13937) +++ allegro/branches/5.1/addons/native_dialog/gtk_dialog.c 2010-11-27 22:49:55 UTC (rev 13938) @@ -257,6 +257,8 @@ /* Message box */ /*---------------------------------------------------------------------------*/ +/* Note: the message box code cannot assume that Allegro is installed. */ + static void msgbox_response(GtkDialog *dialog, gint response_id, gpointer user_data) { Modified: allegro/branches/5.1/addons/native_dialog/osx_dialog.m =================================================================== --- allegro/branches/5.1/addons/native_dialog/osx_dialog.m 2010-11-27 22:33:29 UTC (rev 13937) +++ allegro/branches/5.1/addons/native_dialog/osx_dialog.m 2010-11-27 22:49:55 UTC (rev 13938) @@ -121,6 +121,8 @@ (void)display; + /* Note: the message box code cannot assume that Allegro is installed. */ + /* Since this might be run from a separate thread, we setup * release pool, or we get memory leaks */ Modified: allegro/branches/5.1/addons/native_dialog/win_dialog.c =================================================================== --- allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-27 22:33:29 UTC (rev 13937) +++ allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-27 22:49:55 UTC (rev 13938) @@ -141,6 +141,8 @@ UINT type = 0; int result; + /* Note: the message box code cannot assume that Allegro is installed. */ + if (fd->flags & ALLEGRO_MESSAGEBOX_QUESTION) type |= MB_ICONQUESTION; if (fd->flags & ALLEGRO_MESSAGEBOX_WARN) type |= MB_ICONWARNING; if (fd->flags & ALLEGRO_MESSAGEBOX_ERROR) type |= MB_ICONERROR; Modified: allegro/branches/5.1/docs/src/refman/native_dialog.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/native_dialog.txt 2010-11-27 22:33:29 UTC (rev 13937) +++ allegro/branches/5.1/docs/src/refman/native_dialog.txt 2010-11-27 22:49:55 UTC (rev 13938) @@ -104,6 +104,9 @@ : Instead of the "OK" button display Yes/No buttons. Ignored if `buttons` is not NULL. +[al_show_native_message_box] may be called without Allegro being installed. +This is useful to report an error to initialise Allegro itself. + Returns: - 0 if the dialog window was closed without activating a button. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2010-11-27 23:58:39
|
Revision: 13939 http://alleg.svn.sourceforge.net/alleg/?rev=13939&view=rev Author: trentg Date: 2010-11-27 23:58:32 +0000 (Sat, 27 Nov 2010) Log Message: ----------- Revert the joystick driver used on OS X 10.4 to the pre-hotplugging version. Select 10.4 or greater joystick driver at runtime. Should be tested on 10.4. Modified Paths: -------------- allegro/branches/5.1/cmake/FileList.cmake allegro/branches/5.1/src/macosx/hidjoy-10.4.m allegro/branches/5.1/src/macosx/hidjoy.m Modified: allegro/branches/5.1/cmake/FileList.cmake =================================================================== --- allegro/branches/5.1/cmake/FileList.cmake 2010-11-27 22:49:55 UTC (rev 13938) +++ allegro/branches/5.1/cmake/FileList.cmake 2010-11-27 23:58:32 UTC (rev 13939) @@ -121,6 +121,7 @@ set(ALLEGRO_SRC_MACOSX_FILES src/macosx/hidjoy.m + src/macosx/hidjoy-10.4.m src/macosx/hidman.m src/macosx/keybd.m src/macosx/qzmouse.m Modified: allegro/branches/5.1/src/macosx/hidjoy-10.4.m =================================================================== --- allegro/branches/5.1/src/macosx/hidjoy-10.4.m 2010-11-27 22:49:55 UTC (rev 13938) +++ allegro/branches/5.1/src/macosx/hidjoy-10.4.m 2010-11-27 23:58:32 UTC (rev 13939) @@ -299,8 +299,21 @@ //[elements release]; } -ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver(void) +// FIXME! +static const char *get_joystick_name(ALLEGRO_JOYSTICK *joy_) +{ + (void)joy_; + return "Joystick"; +} + +static bool get_joystick_active(ALLEGRO_JOYSTICK *joy_) { + (void)joy_; + return true; +} + +ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver_10_4(void) +{ static ALLEGRO_JOYSTICK_DRIVER* vt = NULL; if (vt == NULL) { vt = al_malloc(sizeof(*vt)); @@ -313,6 +326,8 @@ vt->get_joystick = get_joystick; vt->release_joystick = release_joystick; vt->get_joystick_state = get_joystick_state; + vt->get_name = get_joystick_name; + vt->get_active = get_joystick_active; } return vt; } Modified: allegro/branches/5.1/src/macosx/hidjoy.m =================================================================== --- allegro/branches/5.1/src/macosx/hidjoy.m 2010-11-27 22:49:55 UTC (rev 13938) +++ allegro/branches/5.1/src/macosx/hidjoy.m 2010-11-27 23:58:32 UTC (rev 13939) @@ -26,10 +26,7 @@ #error something is wrong with the makefile #endif -// 10.4 OS will use the older driver that doesn't support hotplugging -#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 -#include "hidjoy-10.4.m" -#else +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 #import <IOKit/hid/IOHIDBase.h> @@ -682,7 +679,7 @@ return joy->cfg_state == JOY_STATE_ALIVE || joy->cfg_state == JOY_STATE_DYING; } -ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver(void) +ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver_10_5(void) { static ALLEGRO_JOYSTICK_DRIVER* vt = NULL; if (vt == NULL) { @@ -702,6 +699,23 @@ return vt; } +ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver_10_4(void); + +ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver(void) +{ + SInt32 major, minor; + + Gestalt(gestaltSystemVersionMajor, &major); + Gestalt(gestaltSystemVersionMinor, &minor); + + if (major >= 10 && minor >= 5) { + return _al_osx_get_joystick_driver_10_5(); + } + else { + return _al_osx_get_joystick_driver_10_4(); + } +} + #endif // Leopard+ /* Local variables: */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2010-11-29 02:08:23
|
Revision: 13948 http://alleg.svn.sourceforge.net/alleg/?rev=13948&view=rev Author: trentg Date: 2010-11-29 02:08:17 +0000 (Mon, 29 Nov 2010) Log Message: ----------- Made the OS X joystick driver and native dialog addon compile and work as best as possible without access to an actual 10.4 machine Modified Paths: -------------- allegro/branches/5.1/addons/native_dialog/osx_dialog.m allegro/branches/5.1/src/macosx/hidjoy-10.4.m allegro/branches/5.1/src/macosx/hidjoy.m Modified: allegro/branches/5.1/addons/native_dialog/osx_dialog.m =================================================================== --- allegro/branches/5.1/addons/native_dialog/osx_dialog.m 2010-11-28 04:16:24 UTC (rev 13947) +++ allegro/branches/5.1/addons/native_dialog/osx_dialog.m 2010-11-29 02:08:17 UTC (rev 13948) @@ -163,9 +163,9 @@ @interface LogView : NSTextView #endif { +@public ALLEGRO_NATIVE_DIALOG *textlog; } -@property ALLEGRO_NATIVE_DIALOG *textlog; - (void)keyDown: (NSEvent*)event; - (BOOL)windowShouldClose: (id)sender; - (void)emitCloseEventWithKeypress: (BOOL)keypress; @@ -175,7 +175,6 @@ @implementation LogView -@synthesize textlog; - (void)keyDown: (NSEvent*)event { @@ -192,8 +191,8 @@ - (BOOL)windowShouldClose: (id)sender { (void)sender; - if ([self textlog]->is_active) { - if (!([self textlog]->flags & ALLEGRO_TEXTLOG_NO_CLOSE)) { + if (self->textlog->is_active) { + if (!(self->textlog->flags & ALLEGRO_TEXTLOG_NO_CLOSE)) { [self emitCloseEventWithKeypress: NO]; } } @@ -205,9 +204,9 @@ ALLEGRO_EVENT event; event.user.type = ALLEGRO_EVENT_NATIVE_DIALOG_CLOSE; event.user.timestamp = al_get_time(); - event.user.data1 = (intptr_t)[self textlog]; + event.user.data1 = (intptr_t)self->textlog; event.user.data2 = (intptr_t)keypress; - al_emit_user_event(&[self textlog]->tl_events, &event, NULL); + al_emit_user_event(&self->textlog->tl_events, &event, NULL); } + (void)appendText: (NSValue*)param @@ -272,7 +271,7 @@ rect = [[scrollView contentView] frame]; LogView *view = [[LogView alloc] initWithFrame: rect]; - [view setTextlog: textlog]; + view->textlog = textlog; [view setHorizontallyResizable: YES]; [view setVerticallyResizable: YES]; [view setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable]; Modified: allegro/branches/5.1/src/macosx/hidjoy-10.4.m =================================================================== --- allegro/branches/5.1/src/macosx/hidjoy-10.4.m 2010-11-28 04:16:24 UTC (rev 13947) +++ allegro/branches/5.1/src/macosx/hidjoy-10.4.m 2010-11-29 02:08:17 UTC (rev 13948) @@ -129,7 +129,10 @@ ALLEGRO_JOYSTICK_OSX* joy = (ALLEGRO_JOYSTICK_OSX*) target; IOHIDQueueInterface** queue = (IOHIDQueueInterface**) sender; AbsoluteTime past = {0,0}; - ALLEGRO_EVENT_SOURCE* src = al_get_joystick_event_source(); + ALLEGRO_EVENT_SOURCE *src = al_get_joystick_event_source(); + if (src == NULL) { + return; + } _al_event_source_lock(src); while (result == kIOReturnSuccess) { IOHIDEventStruct event; Modified: allegro/branches/5.1/src/macosx/hidjoy.m =================================================================== --- allegro/branches/5.1/src/macosx/hidjoy.m 2010-11-28 04:16:24 UTC (rev 13947) +++ allegro/branches/5.1/src/macosx/hidjoy.m 2010-11-29 02:08:17 UTC (rev 13948) @@ -699,7 +699,10 @@ return vt; } +#endif // Leopard+ + ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver_10_4(void); +ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver_10_5(void); ALLEGRO_JOYSTICK_DRIVER* _al_osx_get_joystick_driver(void) { @@ -716,8 +719,6 @@ } } -#endif // Leopard+ - /* Local variables: */ /* c-basic-offset: 3 */ /* indent-tabs-mode: nil */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-29 06:15:35
|
Revision: 13951 http://alleg.svn.sourceforge.net/alleg/?rev=13951&view=rev Author: tjaden Date: 2010-11-29 06:15:29 +0000 (Mon, 29 Nov 2010) Log Message: ----------- When checking for OpenGL 1.4, test against a slightly smaller floating point value, otherwise the check may fail! Add a warning to the documentation for al_get_opengl_version(). Modified Paths: -------------- allegro/branches/5.1/docs/src/refman/opengl.txt allegro/branches/5.1/src/opengl/ogl_bitmap.c allegro/branches/5.1/src/opengl/ogl_draw.c Modified: allegro/branches/5.1/docs/src/refman/opengl.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 02:31:02 UTC (rev 13950) +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 06:15:29 UTC (rev 13951) @@ -128,6 +128,10 @@ A valid OpenGL context must exist for this function to work, which means you may *not* call it before [al_create_display]. +As usual, be careful when comparing floating point values. +`al_get_opengl_version() >= 1.4` may well evaluate to false even +if you do have OpenGL 1.4 or higher. + ## API: al_set_current_opengl_context Make the OpenGL context associated with the given display current for the Modified: allegro/branches/5.1/src/opengl/ogl_bitmap.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 02:31:02 UTC (rev 13950) +++ allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 06:15:29 UTC (rev 13951) @@ -182,7 +182,7 @@ /* (And not in OpenGL ES) */ #if !defined ALLEGRO_GP2XWIZ #ifndef ALLEGRO_IPHONE - if (ogl_disp->ogl_extras->ogl_info.version >= 1.4) { + if (ogl_disp->ogl_extras->ogl_info.version >= 1.39999) { #else if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { #endif @@ -789,7 +789,7 @@ ALLEGRO_DEBUG("Unlocking backbuffer\n"); /* glWindowPos2i may not be available. */ - if (al_get_opengl_version() >= 1.4) { + if (al_get_opengl_version() >= 1.39999) { glWindowPos2i(bitmap->lock_x, gl_y); } else { Modified: allegro/branches/5.1/src/opengl/ogl_draw.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 02:31:02 UTC (rev 13950) +++ allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 06:15:29 UTC (rev 13951) @@ -51,7 +51,7 @@ return true; } #else - if (d->ogl_extras->ogl_info.version >= 1.4) { + if (d->ogl_extras->ogl_info.version >= 1.39999) { glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Jon R. <wo...@cc...> - 2010-11-29 07:23:32
|
How about you do something like if (floatCompare(version, 1.4)){ ... } Where `floatCompare' tests within some small epsilon. That way you don't have to confuse people with the 1.3999 thing. On 11/28/2010 11:15 PM, tj...@us... wrote: > Revision: 13951 > http://alleg.svn.sourceforge.net/alleg/?rev=13951&view=rev > Author: tjaden > Date: 2010-11-29 06:15:29 +0000 (Mon, 29 Nov 2010) > > Log Message: > ----------- > When checking for OpenGL 1.4, test against a slightly smaller floating > point value, otherwise the check may fail! > > Add a warning to the documentation for al_get_opengl_version(). > > Modified Paths: > -------------- > allegro/branches/5.1/docs/src/refman/opengl.txt > allegro/branches/5.1/src/opengl/ogl_bitmap.c > allegro/branches/5.1/src/opengl/ogl_draw.c > > Modified: allegro/branches/5.1/docs/src/refman/opengl.txt > =================================================================== > --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 02:31:02 UTC (rev 13950) > +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 06:15:29 UTC (rev 13951) > @@ -128,6 +128,10 @@ > A valid OpenGL context must exist for this function to work, which > means you may *not* call it before [al_create_display]. > > +As usual, be careful when comparing floating point values. > +`al_get_opengl_version() >= 1.4` may well evaluate to false even > +if you do have OpenGL 1.4 or higher. > + > ## API: al_set_current_opengl_context > > Make the OpenGL context associated with the given display current for the > > Modified: allegro/branches/5.1/src/opengl/ogl_bitmap.c > =================================================================== > --- allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 02:31:02 UTC (rev 13950) > +++ allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 06:15:29 UTC (rev 13951) > @@ -182,7 +182,7 @@ > /* (And not in OpenGL ES) */ > #if !defined ALLEGRO_GP2XWIZ > #ifndef ALLEGRO_IPHONE > - if (ogl_disp->ogl_extras->ogl_info.version >= 1.4) { > + if (ogl_disp->ogl_extras->ogl_info.version >= 1.39999) { > #else > if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { > #endif > @@ -789,7 +789,7 @@ > ALLEGRO_DEBUG("Unlocking backbuffer\n"); > > /* glWindowPos2i may not be available. */ > - if (al_get_opengl_version() >= 1.4) { > + if (al_get_opengl_version() >= 1.39999) { > glWindowPos2i(bitmap->lock_x, gl_y); > } > else { > > Modified: allegro/branches/5.1/src/opengl/ogl_draw.c > =================================================================== > --- allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 02:31:02 UTC (rev 13950) > +++ allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 06:15:29 UTC (rev 13951) > @@ -51,7 +51,7 @@ > return true; > } > #else > - if (d->ogl_extras->ogl_info.version >= 1.4) { > + if (d->ogl_extras->ogl_info.version >= 1.39999) { > glEnable(GL_BLEND); > glBlendFuncSeparate(blend_modes[src_color], > blend_modes[dst_color], blend_modes[src_alpha], > > > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. > > ------------------------------------------------------------------------------ > Increase Visibility of Your 3D Game App & Earn a Chance To Win $500! > Tap into the largest installed PC base & get more eyes on your game by > optimizing for Intel(R) Graphics Technology. Get started today with the > Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs. > http://p.sf.net/sfu/intelisp-dev2dev > _______________________________________________ > Alleg-commits mailing list > All...@li... > https://lists.sourceforge.net/lists/listinfo/alleg-commits |
From: <tj...@us...> - 2010-11-29 08:10:36
|
Revision: 13953 http://alleg.svn.sourceforge.net/alleg/?rev=13953&view=rev Author: tjaden Date: 2010-11-29 08:10:29 +0000 (Mon, 29 Nov 2010) Log Message: ----------- The problem with comparing a "float" OpenGL version number with a literal "1.4", is that the float is promoted to a slightly different double. Write the literals in OpenGL version checks with the "f" suffix. Update the warning for al_get_opengl_version. Modified Paths: -------------- allegro/branches/5.1/addons/primitives/prim_opengl.c allegro/branches/5.1/docs/src/refman/opengl.txt allegro/branches/5.1/src/opengl/extensions.c allegro/branches/5.1/src/opengl/ogl_bitmap.c allegro/branches/5.1/src/opengl/ogl_draw.c Modified: allegro/branches/5.1/addons/primitives/prim_opengl.c =================================================================== --- allegro/branches/5.1/addons/primitives/prim_opengl.c 2010-11-29 06:15:57 UTC (rev 13952) +++ allegro/branches/5.1/addons/primitives/prim_opengl.c 2010-11-29 08:10:29 UTC (rev 13953) @@ -45,14 +45,14 @@ #if !defined ALLEGRO_GP2XWIZ { #ifndef ALLEGRO_IPHONE - if (ogl_disp->ogl_extras->ogl_info.version >= 1.4) { + if (ogl_disp->ogl_extras->ogl_info.version >= 1.4f) { #else - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { + if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { #endif glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { + if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); Modified: allegro/branches/5.1/docs/src/refman/opengl.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 06:15:57 UTC (rev 13952) +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 08:10:29 UTC (rev 13953) @@ -131,6 +131,9 @@ As usual, be careful when comparing floating point values. `al_get_opengl_version() >= 1.4` may well evaluate to false even if you do have OpenGL 1.4 or higher. +You should at least write the literal as "1.4f" to ensure you perform +a single precision floating point comparison, rather than implicitly +promoting the return value of [al_get_opengl_version] to a double. ## API: al_set_current_opengl_context Modified: allegro/branches/5.1/src/opengl/extensions.c =================================================================== --- allegro/branches/5.1/src/opengl/extensions.c 2010-11-29 06:15:57 UTC (rev 13952) +++ allegro/branches/5.1/src/opengl/extensions.c 2010-11-29 08:10:29 UTC (rev 13953) @@ -383,7 +383,7 @@ #endif #ifndef ALLEGRO_IPHONE - if (al_get_opengl_version() >= 3) { + if (al_get_opengl_version() >= 3.0f) { int i; GLint ext_cnt; glGetIntegerv(GL_NUM_EXTENSIONS, &ext_cnt); Modified: allegro/branches/5.1/src/opengl/ogl_bitmap.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 06:15:57 UTC (rev 13952) +++ allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 08:10:29 UTC (rev 13953) @@ -182,14 +182,14 @@ /* (And not in OpenGL ES) */ #if !defined ALLEGRO_GP2XWIZ #ifndef ALLEGRO_IPHONE - if (ogl_disp->ogl_extras->ogl_info.version >= 1.39999) { + if (ogl_disp->ogl_extras->ogl_info.version >= 1.4f) { #else - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { + if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { #endif glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0) { + if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); @@ -791,7 +791,7 @@ ALLEGRO_DEBUG("Unlocking backbuffer\n"); /* glWindowPos2i may not be available. */ - if (al_get_opengl_version() >= 1.39999) { + if (al_get_opengl_version() >= 1.4f) { glWindowPos2i(bitmap->lock_x, gl_y); } else { Modified: allegro/branches/5.1/src/opengl/ogl_draw.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 06:15:57 UTC (rev 13952) +++ allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 08:10:29 UTC (rev 13953) @@ -34,7 +34,7 @@ al_get_separate_blender(&op, &src_color, &dst_color, &op_alpha, &src_alpha, &dst_alpha); #if defined ALLEGRO_IPHONE || defined ALLEGRO_GP2XWIZ - if (al_get_opengl_version() >= 2.0) { + if (al_get_opengl_version() >= 2.0f) { glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], @@ -51,12 +51,12 @@ return true; } #else - if (d->ogl_extras->ogl_info.version >= 1.39999) { + if (d->ogl_extras->ogl_info.version >= 1.4f) { glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (d->ogl_extras->ogl_info.version >= 2.0) { + if (d->ogl_extras->ogl_info.version >= 2.0f) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-30 00:57:10
|
Revision: 13957 http://alleg.svn.sourceforge.net/alleg/?rev=13957&view=rev Author: tjaden Date: 2010-11-30 00:57:03 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Change al_get_opengl_version to return a packed integer. This is consistent with the other version querying functions, and eliminates the common mistake of comparing the float result with a double literal. Modified Paths: -------------- allegro/branches/5.1/addons/primitives/prim_opengl.c allegro/branches/5.1/docs/src/refman/opengl.txt allegro/branches/5.1/include/allegro5/allegro_opengl.h allegro/branches/5.1/include/allegro5/internal/aintern_opengl.h allegro/branches/5.1/include/allegro5/opengl/GLext/gl_ext_list.h allegro/branches/5.1/src/opengl/extensions.c allegro/branches/5.1/src/opengl/ogl_bitmap.c allegro/branches/5.1/src/opengl/ogl_draw.c allegro/branches/5.1/src/win/wgl_disp.c allegro/branches/5.1/src/x/xdisplay.c Modified: allegro/branches/5.1/addons/primitives/prim_opengl.c =================================================================== --- allegro/branches/5.1/addons/primitives/prim_opengl.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/addons/primitives/prim_opengl.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -45,14 +45,14 @@ #if !defined ALLEGRO_GP2XWIZ { #ifndef ALLEGRO_IPHONE - if (ogl_disp->ogl_extras->ogl_info.version >= 1.4f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_1_4) { #else - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { #endif glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); Modified: allegro/branches/5.1/docs/src/refman/opengl.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-30 00:57:03 UTC (rev 13957) @@ -121,20 +121,13 @@ ## API: al_get_opengl_version Returns the OpenGL version number of the client -(the computer the program is running on), for the current DISPLAY. -"1.0" is returned as 1.0, "1.2.1" is returned as 1.21, -and "1.2.2" as 1.22, etc. +(the computer the program is running on), for the current display. +"1.0" is returned as 0x01000000, "1.2.1" is returned as 0x01020100, +and "1.2.2" as 0x01020200, etc. A valid OpenGL context must exist for this function to work, which means you may *not* call it before [al_create_display]. -As usual, be careful when comparing floating point values. -`al_get_opengl_version() >= 1.4` may well evaluate to false even -if you do have OpenGL 1.4 or higher. -You should at least write the literal as "1.4f" to ensure you perform -a single precision floating point comparison, rather than implicitly -promoting the return value of [al_get_opengl_version] to a double. - ## API: al_set_current_opengl_context Make the OpenGL context associated with the given display current for the Modified: allegro/branches/5.1/include/allegro5/allegro_opengl.h =================================================================== --- allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-30 00:57:03 UTC (rev 13957) @@ -110,7 +110,7 @@ */ -AL_FUNC(float, al_get_opengl_version, (void)); +AL_FUNC(uint32_t, al_get_opengl_version, (void)); AL_FUNC(int, al_have_opengl_extension, (const char *extension)); AL_FUNC(void*, al_get_opengl_proc_address, (const char *name)); AL_FUNC(ALLEGRO_OGL_EXT_LIST*, al_get_opengl_extension_list, (void)); Modified: allegro/branches/5.1/include/allegro5/internal/aintern_opengl.h =================================================================== --- allegro/branches/5.1/include/allegro5/internal/aintern_opengl.h 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/include/allegro5/internal/aintern_opengl.h 2010-11-30 00:57:03 UTC (rev 13957) @@ -4,6 +4,26 @@ #include "allegro5/internal/aintern_bitmap.h" #include "allegro5/internal/aintern_display.h" + +enum { + _ALLEGRO_OPENGL_VERSION_0 = 0, /* dummy */ + _ALLEGRO_OPENGL_VERSION_1_0 = 0x01000000, + _ALLEGRO_OPENGL_VERSION_1_1 = 0x01010000, + _ALLEGRO_OPENGL_VERSION_1_2 = 0x01020000, + _ALLEGRO_OPENGL_VERSION_1_2_1 = 0x01020100, + _ALLEGRO_OPENGL_VERSION_1_3 = 0x01030000, + _ALLEGRO_OPENGL_VERSION_1_4 = 0x01040000, + _ALLEGRO_OPENGL_VERSION_1_5 = 0x01050000, + _ALLEGRO_OPENGL_VERSION_2_0 = 0x02000000, + _ALLEGRO_OPENGL_VERSION_2_1 = 0x02010000, + _ALLEGRO_OPENGL_VERSION_3_0 = 0x03000000, + _ALLEGRO_OPENGL_VERSION_3_1 = 0x03010000, + _ALLEGRO_OPENGL_VERSION_3_2 = 0x03020000, + _ALLEGRO_OPENGL_VERSION_3_3 = 0x03030000, + _ALLEGRO_OPENGL_VERSION_4_0 = 0x04000000 +}; + + typedef struct ALLEGRO_BITMAP_OGL { ALLEGRO_BITMAP bitmap; /* This must be the first member. */ @@ -32,7 +52,7 @@ typedef struct OPENGL_INFO { - float version; /* OpenGL version */ + uint32_t version; /* OpenGL version */ int num_texture_units; /* Number of texture units */ int max_texture_size; /* Maximum texture size */ int is_voodoo3_and_under; /* Special cases for Voodoo 1-3 */ Modified: allegro/branches/5.1/include/allegro5/opengl/GLext/gl_ext_list.h =================================================================== --- allegro/branches/5.1/include/allegro5/opengl/GLext/gl_ext_list.h 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/include/allegro5/opengl/GLext/gl_ext_list.h 2010-11-30 00:57:03 UTC (rev 13957) @@ -1,61 +1,61 @@ AGL_EXT(ARB_imaging, 0) -AGL_EXT(ARB_multitexture, 1.21) -AGL_EXT(ARB_transpose_matrix, 1.3) -AGL_EXT(ARB_multisample, 1.3) -AGL_EXT(ARB_texture_env_add, 1.3) -AGL_EXT(ARB_texture_cube_map, 1.3) -AGL_EXT(ARB_texture_compression, 1.3) -AGL_EXT(ARB_texture_border_clamp, 1.3) -AGL_EXT(ARB_point_parameters, 1.4) +AGL_EXT(ARB_multitexture, 1_2_1) +AGL_EXT(ARB_transpose_matrix, 1_3) +AGL_EXT(ARB_multisample, 1_3) +AGL_EXT(ARB_texture_env_add, 1_3) +AGL_EXT(ARB_texture_cube_map, 1_3) +AGL_EXT(ARB_texture_compression, 1_3) +AGL_EXT(ARB_texture_border_clamp, 1_3) +AGL_EXT(ARB_point_parameters, 1_4) AGL_EXT(ARB_vertex_blend, 0) -AGL_EXT(ARB_texture_env_combine, 1.3) -AGL_EXT(ARB_texture_env_crossbar, 1.4) -AGL_EXT(ARB_texture_env_dot3, 1.3) -AGL_EXT(ARB_texture_mirrored_repeat, 1.4) -AGL_EXT(ARB_depth_texture, 1.4) -AGL_EXT(ARB_shadow, 1.4) +AGL_EXT(ARB_texture_env_combine, 1_3) +AGL_EXT(ARB_texture_env_crossbar, 1_4) +AGL_EXT(ARB_texture_env_dot3, 1_3) +AGL_EXT(ARB_texture_mirrored_repeat, 1_4) +AGL_EXT(ARB_depth_texture, 1_4) +AGL_EXT(ARB_shadow, 1_4) AGL_EXT(ARB_shadow_ambient, 0) -AGL_EXT(ARB_window_pos, 1.4) +AGL_EXT(ARB_window_pos, 1_4) AGL_EXT(ARB_vertex_program, 0) AGL_EXT(ARB_fragment_program, 0) -AGL_EXT(ARB_vertex_buffer_object, 1.5) -AGL_EXT(ARB_occlusion_query, 1.5) +AGL_EXT(ARB_vertex_buffer_object, 1_5) +AGL_EXT(ARB_occlusion_query, 1_5) AGL_EXT(ARB_shader_objects, 0) /* Those were promoted to Core in */ AGL_EXT(ARB_vertex_shader, 0) /* 2.0 with modifications. */ AGL_EXT(ARB_fragment_shader, 0) /* */ AGL_EXT(ARB_shading_language_100, 0) /* */ -AGL_EXT(ARB_texture_non_power_of_two,2.0) -AGL_EXT(ARB_point_sprite, 2.0) +AGL_EXT(ARB_texture_non_power_of_two,2_0) +AGL_EXT(ARB_point_sprite, 2_0) AGL_EXT(ARB_fragment_program_shadow, 0) -AGL_EXT(ARB_draw_buffers, 2.0) -AGL_EXT(ARB_texture_rectangle, 3.1) -AGL_EXT(ARB_color_buffer_float, 3.0) -AGL_EXT(ARB_half_float_pixel, 3.0) -AGL_EXT(ARB_texture_float, 3.0) -AGL_EXT(ARB_pixel_buffer_object, 2.1) +AGL_EXT(ARB_draw_buffers, 2_0) +AGL_EXT(ARB_texture_rectangle, 3_1) +AGL_EXT(ARB_color_buffer_float, 3_0) +AGL_EXT(ARB_half_float_pixel, 3_0) +AGL_EXT(ARB_texture_float, 3_0) +AGL_EXT(ARB_pixel_buffer_object, 2_1) AGL_EXT(ARB_instanced_arrays, 0) -AGL_EXT(ARB_draw_instanced, 3.1) +AGL_EXT(ARB_draw_instanced, 3_1) AGL_EXT(ARB_geometry_shader4, 0) -AGL_EXT(ARB_texture_buffer_object, 3.1) -AGL_EXT(ARB_depth_buffer_float, 3.0) -AGL_EXT(ARB_framebuffer_object, 3.0) -AGL_EXT(ARB_framebuffer_sRGB, 3.0) -AGL_EXT(ARB_half_float_vertex, 3.0) -AGL_EXT(ARB_map_buffer_range, 3.0) -AGL_EXT(ARB_texture_compression_rgtc,3.0) -AGL_EXT(ARB_texture_rg, 3.0) -AGL_EXT(ARB_vertex_array_object, 3.0) -AGL_EXT(ARB_copy_buffer, 3.1) +AGL_EXT(ARB_texture_buffer_object, 3_1) +AGL_EXT(ARB_depth_buffer_float, 3_0) +AGL_EXT(ARB_framebuffer_object, 3_0) +AGL_EXT(ARB_framebuffer_sRGB, 3_0) +AGL_EXT(ARB_half_float_vertex, 3_0) +AGL_EXT(ARB_map_buffer_range, 3_0) +AGL_EXT(ARB_texture_compression_rgtc,3_0) +AGL_EXT(ARB_texture_rg, 3_0) +AGL_EXT(ARB_vertex_array_object, 3_0) +AGL_EXT(ARB_copy_buffer, 3_1) AGL_EXT(ARB_compatibility, 0) -AGL_EXT(ARB_uniform_buffer_object, 3.1) +AGL_EXT(ARB_uniform_buffer_object, 3_1) AGL_EXT(ARB_shader_texture_lod, 0) -AGL_EXT(ARB_depth_clamp, 3.2) -AGL_EXT(ARB_draw_elements_base_vertex, 3.2) -AGL_EXT(ARB_fragment_coord_conventions, 3.2) -AGL_EXT(ARB_provoking_vertex, 3.2) -AGL_EXT(ARB_seamless_cube_map, 3.2) -AGL_EXT(ARB_sync, 3.2) -AGL_EXT(ARB_texture_multisample, 3.2) +AGL_EXT(ARB_depth_clamp, 3_2) +AGL_EXT(ARB_draw_elements_base_vertex, 3_2) +AGL_EXT(ARB_fragment_coord_conventions, 3_2) +AGL_EXT(ARB_provoking_vertex, 3_2) +AGL_EXT(ARB_seamless_cube_map, 3_2) +AGL_EXT(ARB_sync, 3_2) +AGL_EXT(ARB_texture_multisample, 3_2) AGL_EXT(ARB_vertex_array_bgra, 0) AGL_EXT(ARB_draw_buffers_blend, 0) AGL_EXT(ARB_sample_shading, 0) @@ -64,32 +64,32 @@ AGL_EXT(ARB_texture_query_lod, 0) AGL_EXT(ARB_shading_language_include, 0) AGL_EXT(ARB_texture_compression_bptc, 0) -AGL_EXT(ARB_blend_func_extended, 3.3) -AGL_EXT(ARB_explicit_attrib_location, 3.3) -AGL_EXT(ARB_occlusion_query2, 3.3) -AGL_EXT(ARB_sampler_objects, 3.3) -AGL_EXT(ARB_shader_bit_encoding, 3.3) -AGL_EXT(ARB_texture_rgb10_a2ui, 3.3) -AGL_EXT(ARB_texture_swizzle, 3.3) -AGL_EXT(ARB_timer_query, 3.3) -AGL_EXT(ARB_vertex_type_2_10_10_10_rev, 3.3) -AGL_EXT(ARB_draw_indirect, 4.0) -AGL_EXT(ARB_gpu_shader5, 4.0) -AGL_EXT(ARB_gpu_shader_fp64, 4.0) -AGL_EXT(ARB_shader_subroutine, 4.0) -AGL_EXT(ARB_tessellation_shader, 4.0) -AGL_EXT(ARB_texture_buffer_object_rgb32, 4.0) -AGL_EXT(ARB_transform_feedback2, 4.0) -AGL_EXT(ARB_transform_feedback3, 4.0) +AGL_EXT(ARB_blend_func_extended, 3_3) +AGL_EXT(ARB_explicit_attrib_location, 3_3) +AGL_EXT(ARB_occlusion_query2, 3_3) +AGL_EXT(ARB_sampler_objects, 3_3) +AGL_EXT(ARB_shader_bit_encoding, 3_3) +AGL_EXT(ARB_texture_rgb10_a2ui, 3_3) +AGL_EXT(ARB_texture_swizzle, 3_3) +AGL_EXT(ARB_timer_query, 3_3) +AGL_EXT(ARB_vertex_type_2_10_10_10_rev, 3_3) +AGL_EXT(ARB_draw_indirect, 4_0) +AGL_EXT(ARB_gpu_shader5, 4_0) +AGL_EXT(ARB_gpu_shader_fp64, 4_0) +AGL_EXT(ARB_shader_subroutine, 4_0) +AGL_EXT(ARB_tessellation_shader, 4_0) +AGL_EXT(ARB_texture_buffer_object_rgb32, 4_0) +AGL_EXT(ARB_transform_feedback2, 4_0) +AGL_EXT(ARB_transform_feedback3, 4_0) AGL_EXT(EXT_abgr, 0) -AGL_EXT(EXT_blend_color, 1.1) -AGL_EXT(EXT_polygon_offset, 1.1) -AGL_EXT(EXT_texture, 1.1) -AGL_EXT(EXT_texture3D, 1.2) +AGL_EXT(EXT_blend_color, 1_1) +AGL_EXT(EXT_polygon_offset, 1_1) +AGL_EXT(EXT_texture, 1_1) +AGL_EXT(EXT_texture3D, 1_2) AGL_EXT(SGIS_texture_filter4, 0) -AGL_EXT(EXT_subtexture, 1.1) -AGL_EXT(EXT_copy_texture, 1.1) +AGL_EXT(EXT_subtexture, 1_1) +AGL_EXT(EXT_copy_texture, 1_1) AGL_EXT(EXT_histogram, 0) AGL_EXT(EXT_convolution, 0) AGL_EXT(SGI_color_matrix, 0) @@ -99,23 +99,23 @@ AGL_EXT(SGIS_texture4D, 0) AGL_EXT(SGI_texture_color_table, 0) AGL_EXT(EXT_cmyka, 0) -AGL_EXT(EXT_texture_object, 1.1) +AGL_EXT(EXT_texture_object, 1_1) AGL_EXT(SGIS_detail_texture, 0) AGL_EXT(SGIS_sharpen_texture, 0) -AGL_EXT(EXT_packed_pixels, 1.2) -AGL_EXT(SGIS_texture_lod, 1.2) -AGL_EXT(SGIS_multisample, 1.3) -AGL_EXT(EXT_rescale_normal, 1.2) -AGL_EXT(EXT_vertex_array, 1.1) +AGL_EXT(EXT_packed_pixels, 1_2) +AGL_EXT(SGIS_texture_lod, 1_2) +AGL_EXT(SGIS_multisample, 1_3) +AGL_EXT(EXT_rescale_normal, 1_2) +AGL_EXT(EXT_vertex_array, 1_1) AGL_EXT(EXT_misc_attribute, 0) -AGL_EXT(SGIS_generate_mipmap, 1.4) +AGL_EXT(SGIS_generate_mipmap, 1_4) AGL_EXT(SGIX_clipmap, 0) AGL_EXT(SGIX_shadow, 0) -AGL_EXT(SGIS_texture_edge_clamp, 1.2) +AGL_EXT(SGIS_texture_edge_clamp, 1_2) AGL_EXT(SGIS_texture_border_clamp, 0) AGL_EXT(EXT_blend_minmax, 0) AGL_EXT(EXT_blend_subtract, 0) -AGL_EXT(EXT_blend_logic_op, 1.1) +AGL_EXT(EXT_blend_logic_op, 1_1) AGL_EXT(SGIX_interlace, 0) AGL_EXT(SGIS_texture_select, 0) AGL_EXT(SGIX_sprite, 0) @@ -159,7 +159,7 @@ AGL_EXT(SGIX_blend_alpha_minmax, 0) AGL_EXT(EXT_scene_marker, 0) AGL_EXT(SGIX_pixel_texture_bits, 0) -AGL_EXT(EXT_bgra, 1.2) +AGL_EXT(EXT_bgra, 1_2) AGL_EXT(SGIX_async, 0) AGL_EXT(SGIX_async_pixel, 0) AGL_EXT(SGIX_async_histogram, 0) @@ -169,12 +169,12 @@ AGL_EXT(EXT_pixel_transform, 0) AGL_EXT(EXT_pixel_transform_color_table, 0) AGL_EXT(EXT_shared_texture_palette, 0) -AGL_EXT(EXT_separate_specular_color, 1.2) -AGL_EXT(EXT_secondary_color, 1.4) +AGL_EXT(EXT_separate_specular_color, 1_2) +AGL_EXT(EXT_secondary_color, 1_4) AGL_EXT(EXT_texture_env, 0) AGL_EXT(EXT_texture_perturb_normal, 0) -AGL_EXT(EXT_multi_draw_arrays, 1.4) -AGL_EXT(EXT_fog_coord, 1.4) +AGL_EXT(EXT_multi_draw_arrays, 1_4) +AGL_EXT(EXT_fog_coord, 1_4) AGL_EXT(REND_screen_coordinates, 0) AGL_EXT(EXT_coordinate_frame, 0) AGL_EXT(EXT_texture_env_combine, 0) @@ -184,16 +184,16 @@ AGL_EXT(SUN_global_alpha, 0) AGL_EXT(SUN_triangle_list, 0) AGL_EXT(SUN_vertex, 0) -AGL_EXT(EXT_blend_func_separate, 1.4) +AGL_EXT(EXT_blend_func_separate, 1_4) AGL_EXT(INGR_color_clamp, 0) AGL_EXT(INGR_interlace_read, 0) -AGL_EXT(EXT_stencil_wrap, 1.4) +AGL_EXT(EXT_stencil_wrap, 1_4) AGL_EXT(EXT_422_pixels, 0) AGL_EXT(NV_texgen_reflection, 0) AGL_EXT(SGIX_texture_range, 0) AGL_EXT(SUN_convolution_border_modes, 0) AGL_EXT(EXT_texture_env_add, 0) -AGL_EXT(EXT_texture_lod_bias, 1.4) +AGL_EXT(EXT_texture_lod_bias, 1_4) AGL_EXT(EXT_texture_filter_anisotropic, 0) AGL_EXT(EXT_vertex_weighting, 0) AGL_EXT(NV_light_max_exponent, 0) @@ -201,7 +201,7 @@ AGL_EXT(NV_register_combiners, 0) AGL_EXT(NV_fog_distance, 0) AGL_EXT(NV_texgen_emboss, 0) -AGL_EXT(NV_blend_square, 1.4) +AGL_EXT(NV_blend_square, 1_4) AGL_EXT(NV_texture_env_combine4, 0) AGL_EXT(MESA_resize_buffers, 0) AGL_EXT(MESA_window_pos, 0) @@ -221,7 +221,7 @@ AGL_EXT(IBM_static_data, 0) AGL_EXT(IBM_texture_mirrored_repeat, 0) AGL_EXT(NV_evaluators, 0) -AGL_EXT(NV_packed_depth_stencil, 3.0) +AGL_EXT(NV_packed_depth_stencil, 3_0) AGL_EXT(NV_register_combiners2, 0) AGL_EXT(NV_texture_compression_vtc, 0) AGL_EXT(NV_texture_rectangle, 0) @@ -249,13 +249,13 @@ AGL_EXT(NV_point_sprite, 0) AGL_EXT(NV_texture_shader3, 0) AGL_EXT(NV_vertex_program1_1, 0) -AGL_EXT(EXT_shadow_funcs, 1.5) +AGL_EXT(EXT_shadow_funcs, 1_5) AGL_EXT(EXT_stencil_two_side, 0) AGL_EXT(ATI_text_fragment_shader, 0) AGL_EXT(APPLE_client_storage, 0) AGL_EXT(APPLE_element_array, 0) AGL_EXT(APPLE_fence, 0) -AGL_EXT(APPLE_vertex_array_object, 3.0) +AGL_EXT(APPLE_vertex_array_object, 3_0) AGL_EXT(APPLE_vertex_array_range, 0) AGL_EXT(APPLE_ycbcr_422, 0) AGL_EXT(S3_s3tc, 0) @@ -264,13 +264,13 @@ AGL_EXT(ATI_texture_float, 0) AGL_EXT(NV_float_buffer, 0) AGL_EXT(NV_fragment_program, 0) -AGL_EXT(NV_half_float, 3.0) +AGL_EXT(NV_half_float, 3_0) AGL_EXT(NV_pixel_data_range, 0) -AGL_EXT(NV_primitive_restart, 3.1) +AGL_EXT(NV_primitive_restart, 3_1) AGL_EXT(NV_texture_expand_normal, 0) AGL_EXT(NV_vertex_program2, 0) AGL_EXT(ATI_map_object_buffer, 0) -AGL_EXT(ATI_separate_stencil, 2.0) +AGL_EXT(ATI_separate_stencil, 2_0) AGL_EXT(ATI_vertex_attrib_array_object, 0) AGL_EXT(OES_byte_coordinates, 0) AGL_EXT(OES_fixed_point, 0) @@ -290,13 +290,13 @@ AGL_EXT(NV_vertex_program2_option, 0) AGL_EXT(NV_vertex_program3, 0) AGL_EXT(EXT_texture_compression_dxt1, 0) -AGL_EXT(EXT_framebuffer_object, 3.0) +AGL_EXT(EXT_framebuffer_object, 3_0) AGL_EXT(GREMEDY_string_marker, 0) AGL_EXT(EXT_packed_depth_stencil, 0) AGL_EXT(EXT_stencil_clear_tag, 0) -AGL_EXT(EXT_texture_sRGB, 2.1) -AGL_EXT(EXT_framebuffer_blit, 3.0) -AGL_EXT(EXT_framebuffer_multisample, 3.0) +AGL_EXT(EXT_texture_sRGB, 2_1) +AGL_EXT(EXT_framebuffer_blit, 3_0) +AGL_EXT(EXT_framebuffer_multisample, 3_0) AGL_EXT(MESAX_texture_stack, 0) AGL_EXT(EXT_timer_query, 0) AGL_EXT(EXT_gpu_program_parameters, 0) @@ -305,19 +305,19 @@ AGL_EXT(EXT_texture_rectangle, 0) #endif AGL_EXT(EXT_bindable_uniform, 0) -AGL_EXT(EXT_draw_buffers2, 3.0) +AGL_EXT(EXT_draw_buffers2, 3_0) AGL_EXT(EXT_draw_instanced, 0) -AGL_EXT(EXT_framebuffer_sRGB, 3.0) +AGL_EXT(EXT_framebuffer_sRGB, 3_0) AGL_EXT(EXT_geometry_shader4, 0) -AGL_EXT(EXT_gpu_shader4, 3.0) -AGL_EXT(EXT_packed_float, 3.0) -AGL_EXT(EXT_texture_array, 3.0) +AGL_EXT(EXT_gpu_shader4, 3_0) +AGL_EXT(EXT_packed_float, 3_0) +AGL_EXT(EXT_texture_array, 3_0) AGL_EXT(EXT_texture_buffer_object, 0) AGL_EXT(EXT_texture_compression_latc, 0) -AGL_EXT(EXT_texture_compression_rgtc,3.0) -AGL_EXT(EXT_texture_integer, 3.0) -AGL_EXT(EXT_texture_shared_exponent, 3.0) -AGL_EXT(NV_depth_buffer_float, 3.0) +AGL_EXT(EXT_texture_compression_rgtc,3_0) +AGL_EXT(EXT_texture_integer, 3_0) +AGL_EXT(EXT_texture_shared_exponent, 3_0) +AGL_EXT(NV_depth_buffer_float, 3_0) AGL_EXT(NV_fragment_program4, 0) AGL_EXT(NV_framebuffer_multisample_coverage, 0) AGL_EXT(NV_geometry_program4, 0) @@ -326,10 +326,10 @@ AGL_EXT(NV_transform_feedback, 0) AGL_EXT(NV_vertex_program4, 0) AGL_EXT(GREMEDY_frame_terminator, 0) -AGL_EXT(NV_conditional_render, 3.0) +AGL_EXT(NV_conditional_render, 3_0) AGL_EXT(NV_present_video, 0) AGL_EXT(EXT_direct_state_access, 0) -AGL_EXT(EXT_transform_feedback, 3.0) +AGL_EXT(EXT_transform_feedback, 3_0) AGL_EXT(EXT_texture_swizzle, 0) AGL_EXT(NV_explicit_multisample, 0) AGL_EXT(NV_transform_feedback2, 0) Modified: allegro/branches/5.1/src/opengl/extensions.c =================================================================== --- allegro/branches/5.1/src/opengl/extensions.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -93,50 +93,78 @@ +#ifndef ALLEGRO_IPHONE +static uint32_t parse_opengl_version(const char *s) +{ + char *p = (char *) s; + int v[4] = {0, 0, 0, 0}; + int n; + uint32_t ver; + + /* e.g. "4.0.0 Vendor blah blah" */ + for (n = 0; n < 4; n++) { + char *end; + long l; + + errno = 0; + l = strtol(p, &end, 10); + if (errno) + break; + v[n] = _ALLEGRO_CLAMP(0, l, 255); + if (*end != '.') + break; + p = end + 1; /* skip dot */ + } + + ver = (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3]; + ALLEGRO_DEBUG("Parsed '%s' as 0x%08x\n", s, ver); + return ver; +} +#endif + + + /* Reads version info out of glGetString(GL_VERSION) */ -static float _al_ogl_version(void) +static uint32_t _al_ogl_version(void) { #ifndef ALLEGRO_IPHONE ALLEGRO_CONFIG *cfg; const char *str; - int major, minor1, minor2; cfg = al_get_system_config(); if (cfg) { char const *value = al_get_config_value(cfg, "opengl", "force_opengl_version"); if (value) { - float v = strtod(value, NULL); - ALLEGRO_WARN("OpenGL version forced to %.1f.\n", v); + uint32_t v = parse_opengl_version(value); + ALLEGRO_INFO("OpenGL version forced to %d.%d.%d.%d.\n", + (v >> 24) & 0xff, + (v >> 16) & 0xff, + (v >> 8) & 0xff, + (v & 0xff)); return v; } } str = (const char *)glGetString(GL_VERSION); if (str) { - float v; - major = minor1 = minor2 = 0; - sscanf(str, "%d.%d.%d", &major, &minor1, &minor2); - v = major; - v += minor1 / 10.f; - if (minor2 > 0) - v += minor2 / pow(10, 2 + floor(log10(minor2))); - return v; + return parse_opengl_version(str); } else { /* The OpenGL driver does not return a version * number. However it probably supports at least OpenGL 1.0 */ - return 1.0; + return _ALLEGRO_OPENGL_VERSION_1_0; } #else + /* XXX this is asking for trouble, and should be documented */ const char *s = (char *)glGetString(GL_VERSION); if (strstr(s, "2.0")) - return 2.0; + return _ALLEGRO_OPENGL_VERSION_2_0; else if (strstr(s, "1.1")) - return 1.5; + return _ALLEGRO_OPENGL_VERSION_1_5; /* 1.5 */ else - return 1.3; + return _ALLEGRO_OPENGL_VERSION_1_3; #endif } @@ -179,13 +207,13 @@ /* Function: al_get_opengl_version */ -float al_get_opengl_version(void) +uint32_t al_get_opengl_version(void) { ALLEGRO_DISPLAY *ogl_disp; ogl_disp = al_get_current_display(); if (!ogl_disp || !ogl_disp->ogl_extras) - return 0.0f; + return 0x0; return ogl_disp->ogl_extras->ogl_info.version; } @@ -383,7 +411,7 @@ #endif #ifndef ALLEGRO_IPHONE - if (al_get_opengl_version() >= 3.0f) { + if (al_get_opengl_version() >= _ALLEGRO_OPENGL_VERSION_3_0) { int i; GLint ext_cnt; glGetIntegerv(GL_NUM_EXTENSIONS, &ext_cnt); @@ -444,7 +472,7 @@ static bool _ogl_is_extension_with_version_supported( - const char *extension, ALLEGRO_DISPLAY *disp, float ver) + const char *extension, ALLEGRO_DISPLAY *disp, uint32_t ver) { ALLEGRO_CONFIG *cfg; char const *value; @@ -471,8 +499,9 @@ /* If the extension is included in the OpenGL version, there is no * need to check the extensions list. */ - if (disp->ogl_extras->ogl_info.version >= ver && ver > 0) + if (ver > 0 && disp->ogl_extras->ogl_info.version >= ver) { return true; + } return _ogl_is_extension_supported(extension, disp); } @@ -613,7 +642,11 @@ /* Read OpenGL properties */ info->version = _al_ogl_version(); - ALLEGRO_INFO("Assumed OpenGL version: %f\n", info->version); + ALLEGRO_INFO("Assumed OpenGL version: %d.%d.%d.%d\n", + (info->version >> 24) & 0xff, + (info->version >> 16) & 0xff, + (info->version >> 8) & 0xff, + (info->version ) & 0xff); return; } @@ -710,7 +743,8 @@ /* Fill the list. */ #define AGL_EXT(name, ver) { \ ext_list->ALLEGRO_GL_##name = \ - _ogl_is_extension_with_version_supported("GL_" #name, gl_disp, ver); \ + _ogl_is_extension_with_version_supported("GL_" #name, gl_disp, \ + _ALLEGRO_OPENGL_VERSION_##ver); \ } #include "allegro5/opengl/GLext/gl_ext_list.h" #undef AGL_EXT @@ -718,14 +752,16 @@ #ifdef ALLEGRO_UNIX #define AGL_EXT(name, ver) { \ ext_list->ALLEGRO_GLX_##name = \ - _ogl_is_extension_with_version_supported("GLX_" #name, gl_disp, ver); \ + _ogl_is_extension_with_version_supported("GLX_" #name, gl_disp, \ + _ALLEGRO_OPENGL_VERSION_##ver); \ } #include "allegro5/opengl/GLext/glx_ext_list.h" #undef AGL_EXT #elif defined ALLEGRO_WINDOWS #define AGL_EXT(name, ver) { \ ext_list->ALLEGRO_WGL_##name = \ - _ogl_is_extension_with_version_supported("WGL_" #name, gl_disp, ver); \ + _ogl_is_extension_with_version_supported("WGL_" #name, gl_disp, \ + _ALLEGRO_OPENGL_VERSION_##ver); \ } #include "allegro5/opengl/GLext/wgl_ext_list.h" #undef AGL_EXT @@ -794,7 +830,7 @@ } else if (!strstr((const char *)glGetString(GL_EXTENSIONS), "GL_ARB_texture_non_power_of_two") - && gl_disp->ogl_extras->ogl_info.version >= 2.0f) { + && gl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { ext_list->ALLEGRO_GL_ARB_texture_non_power_of_two = 0; } } @@ -804,7 +840,7 @@ int *s = gl_disp->extra_settings.settings; glGetIntegerv(GL_MAX_TEXTURE_SIZE, s + ALLEGRO_MAX_BITMAP_SIZE); - if (gl_disp->ogl_extras->ogl_info.version >= 2.0) + if (gl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) s[ALLEGRO_SUPPORT_SEPARATE_ALPHA] = 1; s[ALLEGRO_SUPPORT_NPOT_BITMAP] = Modified: allegro/branches/5.1/src/opengl/ogl_bitmap.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/src/opengl/ogl_bitmap.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -182,14 +182,14 @@ /* (And not in OpenGL ES) */ #if !defined ALLEGRO_GP2XWIZ #ifndef ALLEGRO_IPHONE - if (ogl_disp->ogl_extras->ogl_info.version >= 1.4f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_1_4) { #else - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { #endif glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (ogl_disp->ogl_extras->ogl_info.version >= 2.0f) { + if (ogl_disp->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); @@ -791,7 +791,7 @@ ALLEGRO_DEBUG("Unlocking backbuffer\n"); /* glWindowPos2i may not be available. */ - if (al_get_opengl_version() >= 1.4f) { + if (al_get_opengl_version() >= _ALLEGRO_OPENGL_VERSION_1_4) { glWindowPos2i(bitmap->lock_x, gl_y); } else { Modified: allegro/branches/5.1/src/opengl/ogl_draw.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -34,7 +34,7 @@ al_get_separate_blender(&op, &src_color, &dst_color, &op_alpha, &src_alpha, &dst_alpha); #if defined ALLEGRO_IPHONE || defined ALLEGRO_GP2XWIZ - if (al_get_opengl_version() >= 2.0f) { + if (al_get_opengl_version() >= _ALLEGRO_OPENGL_VERSION_2_0) { glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], @@ -51,12 +51,12 @@ return true; } #else - if (d->ogl_extras->ogl_info.version >= 1.4f) { + if (d->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_1_4) { glEnable(GL_BLEND); glBlendFuncSeparate(blend_modes[src_color], blend_modes[dst_color], blend_modes[src_alpha], blend_modes[dst_alpha]); - if (d->ogl_extras->ogl_info.version >= 2.0f) { + if (d->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_2_0) { glBlendEquationSeparate( blend_equations[op], blend_equations[op_alpha]); Modified: allegro/branches/5.1/src/win/wgl_disp.c =================================================================== --- allegro/branches/5.1/src/win/wgl_disp.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/src/win/wgl_disp.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -980,7 +980,7 @@ _al_ogl_manage_extensions(disp); _al_ogl_set_extensions(disp->ogl_extras->extension_api); - if (disp->ogl_extras->ogl_info.version < 1.2) { + if (disp->ogl_extras->ogl_info.version < _ALLEGRO_OPENGL_VERSION_1_2) { ALLEGRO_EXTRA_DISPLAY_SETTINGS *eds = _al_get_new_display_settings(); if (eds->required & (1<<ALLEGRO_COMPATIBLE_DISPLAY)) { ALLEGRO_WARN("Allegro requires at least OpenGL version 1.2 to work.\n"); Modified: allegro/branches/5.1/src/x/xdisplay.c =================================================================== --- allegro/branches/5.1/src/x/xdisplay.c 2010-11-29 21:11:38 UTC (rev 13956) +++ allegro/branches/5.1/src/x/xdisplay.c 2010-11-30 00:57:03 UTC (rev 13957) @@ -457,10 +457,10 @@ ALLEGRO_INFO("Vendor: %s\n", (const char*)glGetString(GL_VENDOR)); ALLEGRO_INFO("Renderer: %s\n", (const char*)glGetString(GL_RENDERER)); - if (display->ogl_extras->ogl_info.version < 1.2) { + if (display->ogl_extras->ogl_info.version < _ALLEGRO_OPENGL_VERSION_1_2) { ALLEGRO_EXTRA_DISPLAY_SETTINGS *eds = _al_get_new_display_settings(); if (eds->required & (1<<ALLEGRO_COMPATIBLE_DISPLAY)) { - ALLEGRO_ERROR("Allegro requires at least OpenGL version 1.2 to work."); + ALLEGRO_ERROR("Allegro requires at least OpenGL version 1.2 to work.\n"); xdpy_destroy_display(display); _al_mutex_unlock(&system->lock); return NULL; @@ -471,7 +471,7 @@ // Apparently, you can get a OpenGL 3.0 context without specifically creating // it with glXCreateContextAttribsARB, and not every OpenGL 3.0 is evil, but we // can't tell the difference at this stage. - else if (display->ogl_extras->ogl_info.version > 2.1) { + else if (display->ogl_extras->ogl_info.version > _ALLEGRO_OPENGL_VERSION_2_1) { /* We don't have OpenGL3 a driver. */ display->extra_settings.settings[ALLEGRO_COMPATIBLE_DISPLAY] = 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-30 00:57:54
|
Revision: 13958 http://alleg.svn.sourceforge.net/alleg/?rev=13958&view=rev Author: tjaden Date: 2010-11-30 00:57:47 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Make al_have_opengl_extension return bool. Modified Paths: -------------- allegro/branches/5.1/docs/src/refman/opengl.txt allegro/branches/5.1/include/allegro5/allegro_opengl.h allegro/branches/5.1/src/opengl/extensions.c Modified: allegro/branches/5.1/docs/src/refman/opengl.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-30 00:57:03 UTC (rev 13957) +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-30 00:57:47 UTC (rev 13958) @@ -105,19 +105,13 @@ Example: - int packedpixels = al_have_opengl_extension("GL_EXT_packed_pixels"); + bool packedpixels = al_have_opengl_extension("GL_EXT_packed_pixels"); -If _packedpixels_ is TRUE then you can safely use the constants related +If _packedpixels_ is true then you can safely use the constants related to the packed pixels extension. -Parameters: +Returns true if the extension is available; false otherwise. -extension - The name of the extension that is needed - -*Return value:* - -TRUE if the extension is available FALSE otherwise. - ## API: al_get_opengl_version Returns the OpenGL version number of the client Modified: allegro/branches/5.1/include/allegro5/allegro_opengl.h =================================================================== --- allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-30 00:57:03 UTC (rev 13957) +++ allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-30 00:57:47 UTC (rev 13958) @@ -111,7 +111,7 @@ AL_FUNC(uint32_t, al_get_opengl_version, (void)); -AL_FUNC(int, al_have_opengl_extension, (const char *extension)); +AL_FUNC(bool, al_have_opengl_extension, (const char *extension)); AL_FUNC(void*, al_get_opengl_proc_address, (const char *name)); AL_FUNC(ALLEGRO_OGL_EXT_LIST*, al_get_opengl_extension_list, (void)); AL_FUNC(GLuint, al_get_opengl_texture, (ALLEGRO_BITMAP *bitmap)); Modified: allegro/branches/5.1/src/opengl/extensions.c =================================================================== --- allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 00:57:03 UTC (rev 13957) +++ allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 00:57:47 UTC (rev 13958) @@ -399,7 +399,7 @@ -static int _ogl_is_extension_supported(const char *extension, +static bool _ogl_is_extension_supported(const char *extension, ALLEGRO_DISPLAY *disp) { int ret = 0; @@ -510,7 +510,7 @@ /* Function: al_have_opengl_extension */ -int al_have_opengl_extension(const char *extension) +bool al_have_opengl_extension(const char *extension) { ALLEGRO_DISPLAY *disp; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2010-11-30 04:42:38
|
Revision: 13963 http://alleg.svn.sourceforge.net/alleg/?rev=13963&view=rev Author: trentg Date: 2010-11-30 04:42:32 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Added function al_get_opengl_variant that returns either ALLEGRO_DESKTOP_OPENGL or ALLEGRO_OPENGL_ES. Added documentation for it. Made al_get_opengl_version return an OpenGL ES version rather than an attempted estimate at a desktop-gl version. Modified Paths: -------------- allegro/branches/5.1/docs/src/refman/opengl.txt allegro/branches/5.1/include/allegro5/allegro_opengl.h allegro/branches/5.1/src/opengl/extensions.c Modified: allegro/branches/5.1/docs/src/refman/opengl.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-30 04:09:21 UTC (rev 13962) +++ allegro/branches/5.1/docs/src/refman/opengl.txt 2010-11-30 04:42:32 UTC (rev 13963) @@ -134,7 +134,21 @@ Then [al_get_backbuffer] only returns NULL, so it would not work to pass that to [al_set_target_bitmap]. +## API: al_get_opengl_variant +Returns the variant or type of OpenGL used on the running platform. This +function can be called before creating a display or setting properties for +new displays. Possible values are: + + ALLEGRO_DESKTOP_OPENGL + Regular OpenGL as seen on desktop/laptop computers. + + ALLEGRO_OPENGL_ES + Trimmed down version of OpenGL used on many small consumer electronic + devices such as handheld (and sometimes full size) consoles. + +See also: [al_get_opengl_version] + ## OpenGL configuration You can disable the detection of any OpenGL extension by Allegro with Modified: allegro/branches/5.1/include/allegro5/allegro_opengl.h =================================================================== --- allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-30 04:09:21 UTC (rev 13962) +++ allegro/branches/5.1/include/allegro5/allegro_opengl.h 2010-11-30 04:42:32 UTC (rev 13963) @@ -30,6 +30,8 @@ #include <OpenGLES/ES1/gl.h> #include <OpenGLES/ES1/glext.h> +#include <OpenGLES/ES2/gl.h> +#include <OpenGLES/ES2/glext.h> /* Apple defines OES versions for these - however the separated alpha ones * don't seem to work on the device and just crash. @@ -109,6 +111,12 @@ * Public OpenGL-related API */ +/* Enum: ALLEGRO_OPENGL_VARIANT + */ +typedef enum ALLEGRO_OPENGL_VARIANT { + ALLEGRO_DESKTOP_OPENGL = 0, + ALLEGRO_OPENGL_ES +} ALLEGRO_OPENGL_VARIANT; AL_FUNC(uint32_t, al_get_opengl_version, (void)); AL_FUNC(bool, al_have_opengl_extension, (const char *extension)); @@ -122,6 +130,7 @@ AL_FUNC(void, al_get_opengl_texture_position, (ALLEGRO_BITMAP *bitmap, int *u, int *v)); AL_FUNC(void, al_set_current_opengl_context, (ALLEGRO_DISPLAY *display)); +AL_FUNC(int, al_get_opengl_variant, (void)); #ifdef __cplusplus } Modified: allegro/branches/5.1/src/opengl/extensions.c =================================================================== --- allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 04:09:21 UTC (rev 13962) +++ allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 04:42:32 UTC (rev 13963) @@ -162,9 +162,9 @@ if (strstr(s, "2.0")) return _ALLEGRO_OPENGL_VERSION_2_0; else if (strstr(s, "1.1")) - return _ALLEGRO_OPENGL_VERSION_1_5; /* 1.5 */ + return _ALLEGRO_OPENGL_VERSION_1_1; else - return _ALLEGRO_OPENGL_VERSION_1_3; + return _ALLEGRO_OPENGL_VERSION_0; #endif } @@ -219,7 +219,21 @@ } +/* NOTE: al_get_opengl_variant is pretty simple right now but may + * eventually need driver support. + */ +/* Function: al_get_opengl_variant + */ +int al_get_opengl_variant(void) +{ +#if defined ALLEGRO_IPHONE || defined ALLEGRO_GP2XWIZ + return ALLEGRO_OPENGL_ES; +#else + return ALLEGRO_DESKTOP_OPENGL; +#endif +} + /* Create the extension list */ static ALLEGRO_OGL_EXT_LIST *create_extension_list(void) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-30 06:28:05
|
Revision: 13964 http://alleg.svn.sourceforge.net/alleg/?rev=13964&view=rev Author: tjaden Date: 2010-11-30 06:27:58 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Replace remaining uses of the old TRACE macro, and delete it. Modified Paths: -------------- allegro/branches/5.1/addons/acodec/wav.c allegro/branches/5.1/addons/audio/audio_io.c allegro/branches/5.1/addons/audio/kcm_sample.c allegro/branches/5.1/addons/audio/kcm_voice.c allegro/branches/5.1/addons/audio/oss.c allegro/branches/5.1/addons/image/jpg.c allegro/branches/5.1/addons/image/png.c allegro/branches/5.1/addons/native_dialog/win_dialog.c allegro/branches/5.1/include/allegro5/debug.h allegro/branches/5.1/include/allegro5/internal/aintern_pixels.h allegro/branches/5.1/src/bitmap_io.c allegro/branches/5.1/src/opengl/extensions.c allegro/branches/5.1/src/tri_soft.c allegro/branches/5.1/src/win/wsystem.c allegro/branches/5.1/src/win/wthread.c allegro/branches/5.1/src/win/wwindow.c allegro/branches/5.1/src/x/xkeyboard.c Modified: allegro/branches/5.1/addons/acodec/wav.c =================================================================== --- allegro/branches/5.1/addons/acodec/wav.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/acodec/wav.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -498,7 +498,8 @@ } } else { - TRACE("Unknown audio depth (%d) when saving wav ALLEGRO_FILE.\n", spl->depth); + ALLEGRO_ERROR("Unknown audio depth (%d) when saving wav ALLEGRO_FILE.\n", + spl->depth); return false; } Modified: allegro/branches/5.1/addons/audio/audio_io.c =================================================================== --- allegro/branches/5.1/addons/audio/audio_io.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/audio/audio_io.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -8,7 +8,9 @@ #include "allegro5/internal/aintern_audio.h" #include "allegro5/internal/aintern_vector.h" +ALLEGRO_DEBUG_CHANNEL("audio") + #define MAX_EXTENSION_LENGTH (32) typedef struct ACODEC_TABLE ACODEC_TABLE; @@ -301,7 +303,7 @@ return (ent->stream_loader)(filename, buffer_count, samples); } - TRACE("Error creating ALLEGRO_AUDIO_STREAM from '%s'.\n", filename); + ALLEGRO_ERROR("Error creating ALLEGRO_AUDIO_STREAM from '%s'.\n", filename); return NULL; } Modified: allegro/branches/5.1/addons/audio/kcm_sample.c =================================================================== --- allegro/branches/5.1/addons/audio/kcm_sample.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/audio/kcm_sample.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -24,7 +24,9 @@ #include "allegro5/internal/aintern_audio.h" #include "allegro5/internal/aintern_vector.h" +ALLEGRO_DEBUG_CHANNEL("audio") + static ALLEGRO_VOICE *allegro_voice = NULL; static ALLEGRO_MIXER *allegro_mixer = NULL; static ALLEGRO_MIXER *default_mixer = NULL; @@ -83,7 +85,7 @@ allegro_voice = al_create_voice(voice_frequency, voice_depth, ALLEGRO_CHANNEL_CONF_2); if (!allegro_voice) { - TRACE("al_create_voice failed\n"); + ALLEGRO_ERROR("al_create_voice failed\n"); goto Error; } } @@ -92,13 +94,13 @@ allegro_mixer = al_create_mixer(mixer_frequency, mixer_depth, ALLEGRO_CHANNEL_CONF_2); if (!allegro_mixer) { - TRACE("al_create_voice failed\n"); + ALLEGRO_ERROR("al_create_voice failed\n"); goto Error; } } if (!al_attach_mixer_to_voice(allegro_mixer, allegro_voice)) { - TRACE("al_attach_mixer_to_voice failed\n"); + ALLEGRO_ERROR("al_attach_mixer_to_voice failed\n"); goto Error; } @@ -218,11 +220,11 @@ *id = 0; *slot = al_create_sample_instance(NULL); if (!*slot) { - TRACE("al_create_sample failed\n"); + ALLEGRO_ERROR("al_create_sample failed\n"); goto Error; } if (!al_attach_sample_instance_to_mixer(*slot, default_mixer)) { - TRACE("al_attach_mixer_to_sample failed\n"); + ALLEGRO_ERROR("al_attach_mixer_to_sample failed\n"); goto Error; } } @@ -274,11 +276,11 @@ *slot = al_create_sample_instance(NULL); if (!*slot) { - TRACE("al_create_sample failed\n"); + ALLEGRO_ERROR("al_create_sample failed\n"); goto Error; } if (!al_attach_sample_instance_to_mixer(*slot, default_mixer)) { - TRACE("al_attach_mixer_to_sample failed\n"); + ALLEGRO_ERROR("al_attach_mixer_to_sample failed\n"); goto Error; } } @@ -349,7 +351,7 @@ ALLEGRO_SAMPLE *spl, float gain, float pan, float speed, int loop) { if (!al_set_sample(splinst, spl)) { - TRACE("al_set_sample failed\n"); + ALLEGRO_ERROR("al_set_sample failed\n"); return false; } @@ -361,7 +363,7 @@ } if (!al_play_sample_instance(splinst)) { - TRACE("al_play_sample_instance failed\n"); + ALLEGRO_ERROR("al_play_sample_instance failed\n"); return false; } Modified: allegro/branches/5.1/addons/audio/kcm_voice.c =================================================================== --- allegro/branches/5.1/addons/audio/kcm_voice.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/audio/kcm_voice.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -14,7 +14,9 @@ #include "allegro5/internal/aintern_audio.h" #include "allegro5/internal/aintern_audio_cfg.h" +ALLEGRO_DEBUG_CHANNEL("audio") + /* forward declarations */ static void stream_read(void *source, void **vbuf, unsigned int *samples, ALLEGRO_AUDIO_DEPTH buffer_depth, size_t dest_maxc); @@ -116,7 +118,7 @@ ASSERT(spl); if (voice->attached_stream) { - TRACE( + ALLEGRO_WARN( "Attempted to attach to a voice that already has an attachment\n"); _al_set_error(ALLEGRO_INVALID_OBJECT, "Attempted to attach to a voice that already has an attachment"); @@ -124,7 +126,7 @@ } if (spl->parent.u.ptr) { - TRACE("Attempted to attach a sample that is already attached\n"); + ALLEGRO_WARN("Attempted to attach a sample that is already attached\n"); _al_set_error(ALLEGRO_INVALID_OBJECT, "Attempted to attach a sample that is already attached"); return false; @@ -134,7 +136,7 @@ voice->frequency != spl->spl_data.frequency || voice->depth != spl->spl_data.depth) { - TRACE("Sample settings do not match voice settings\n"); + ALLEGRO_WARN("Sample settings do not match voice settings\n"); _al_set_error(ALLEGRO_INVALID_OBJECT, "Sample settings do not match voice settings"); return false; @@ -164,7 +166,7 @@ _al_kcm_stream_set_mutex(spl, NULL); spl->parent.u.voice = NULL; - TRACE("Unable to load sample into voice\n"); + ALLEGRO_ERROR("Unable to load sample into voice\n"); ret = false; } else { @@ -458,10 +460,12 @@ bool playing = al_get_voice_playing(voice); if (playing == val) { - if (playing) - TRACE("Voice is already playing\n"); - else - TRACE("Voice is already stopped\n"); + if (playing) { + ALLEGRO_DEBUG("Voice is already playing\n"); + } + else { + ALLEGRO_DEBUG("Voice is already stopped\n"); + } return true; } @@ -472,7 +476,7 @@ return voice->driver->stop_voice(voice) == 0; } else { - TRACE("Voice has no sample or mixer attached\n"); + ALLEGRO_DEBUG("Voice has no sample or mixer attached\n"); return false; } } Modified: allegro/branches/5.1/addons/audio/oss.c =================================================================== --- allegro/branches/5.1/addons/audio/oss.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/audio/oss.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -418,8 +418,8 @@ audio_buf_info bi; if (ioctl(oss_voice->fd, SNDCTL_DSP_GETOSPACE, &bi) == -1) { - TRACE(PREFIX_E "Error SNDCTL_DSP_GETOSPACE.\n"); - TRACE(PREFIX_E "errno: %i -- %s\n", errno, strerror(errno)); + ALLEGRO_ERROR("Error SNDCTL_DSP_GETOSPACE, errno=%i (%s)\n", + errno, strerror(errno)); return NULL; } Modified: allegro/branches/5.1/addons/image/jpg.c =================================================================== --- allegro/branches/5.1/addons/image/jpg.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/image/jpg.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -20,6 +20,9 @@ #include <jpeglib.h> #include <jerror.h> +ALLEGRO_DEBUG_CHANNEL("image") + + struct my_src_mgr { struct jpeg_source_mgr pub; @@ -382,7 +385,7 @@ fp = al_fopen(filename, "wb"); if (!fp) { - TRACE("Unable to open file %s for writing\n", filename); + ALLEGRO_ERROR("Unable to open file %s for writing\n", filename); return false; } Modified: allegro/branches/5.1/addons/image/png.c =================================================================== --- allegro/branches/5.1/addons/image/png.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/image/png.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -11,7 +11,9 @@ #include "iio.h" +ALLEGRO_DEBUG_CHANNEL("image") + double _al_png_screen_gamma = -1.0; int _al_png_compression_level = Z_BEST_COMPRESSION; @@ -511,7 +513,7 @@ fp = al_fopen(filename, "wb"); if (!fp) { - TRACE("Unable to open file %s for writing\n", filename); + ALLEGRO_ERROR("Unable to open file %s for writing\n", filename); return false; } Modified: allegro/branches/5.1/addons/native_dialog/win_dialog.c =================================================================== --- allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -20,6 +20,9 @@ /* We use RichEdit by default. */ #include <richedit.h> +ALLEGRO_DEBUG_CHANNEL("win_dialog") + + /* Non-zero if text log window class was registered. */ static int wlog_class_registered = 0; @@ -90,9 +93,11 @@ if (!ret) { DWORD err = GetLastError(); - char buf[1000]; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, buf, sizeof(buf), NULL); - TRACE("al_show_native_file_dialog failed or cancelled: %s\n", buf); + if (err != ERROR_SUCCESS) { + char buf[1000]; + FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, buf, sizeof(buf), NULL); + ALLEGRO_ERROR("al_show_native_file_dialog failed: %s\n", buf); + } return false; } Modified: allegro/branches/5.1/include/allegro5/debug.h =================================================================== --- allegro/branches/5.1/include/allegro5/debug.h 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/include/allegro5/debug.h 2010-11-30 06:27:58 UTC (rev 13964) @@ -40,9 +40,7 @@ #define ALLEGRO_TRACE_CHANNEL_LEVEL(channel, level) \ !_al_trace_prefix(channel, level, __FILE__, __LINE__, __func__) \ ? (void)0 : al_trace - #define TRACE al_trace #else - #define TRACE 1 ? (void) 0 : al_trace #define ALLEGRO_TRACE_CHANNEL_LEVEL(channel, x) 1 ? (void) 0 : al_trace #define ALLEGRO_DEBUG_CHANNEL(x) #endif Modified: allegro/branches/5.1/include/allegro5/internal/aintern_pixels.h =================================================================== --- allegro/branches/5.1/include/allegro5/internal/aintern_pixels.h 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/include/allegro5/internal/aintern_pixels.h 2010-11-30 06:27:58 UTC (rev 13964) @@ -236,13 +236,13 @@ case ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA: \ case ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA: \ case ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA: \ - TRACE("INLINE_GET got fake _gp_pixel format: %d\n", format); \ + ALLEGRO_ERROR("INLINE_GET got fake _gp_pixel format: %d\n", format); \ abort(); \ break; \ \ case ALLEGRO_NUM_PIXEL_FORMATS: \ default: \ - TRACE("INLINE_GET got non _gp_pixel format: %d\n", format); \ + ALLEGRO_ERROR("INLINE_GET got non _gp_pixel format: %d\n", format); \ abort(); \ break; \ } \ @@ -436,12 +436,12 @@ case ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA: \ case ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA: \ case ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA: \ - TRACE("INLINE_PUT got fake _pp_pixel format: %d\n", format); \ + ALLEGRO_ERROR("INLINE_PUT got fake _pp_pixel format: %d\n", format); \ abort(); \ break; \ \ case ALLEGRO_NUM_PIXEL_FORMATS: \ - TRACE("INLINE_PUT got non _pp_pixel format: %d\n", format); \ + ALLEGRO_ERROR("INLINE_PUT got non _pp_pixel format: %d\n", format); \ abort(); \ break; \ } \ Modified: allegro/branches/5.1/src/bitmap_io.c =================================================================== --- allegro/branches/5.1/src/bitmap_io.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/bitmap_io.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -246,7 +246,7 @@ if (h) return h->saver(filename, bitmap); else { - TRACE("No handler for image %s found\n", filename); + ALLEGRO_WARN("No handler for image %s found\n", filename); return false; } } @@ -273,7 +273,7 @@ if (h) return h->fs_saver(fp, bitmap); else { - TRACE("No handler for image %s found\n", ident); + ALLEGRO_WARN("No handler for image %s found\n", ident); return false; } } Modified: allegro/branches/5.1/src/opengl/extensions.c =================================================================== --- allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/opengl/extensions.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -691,7 +691,7 @@ /* Print out GLU version */ //buf = gluGetString(GLU_VERSION); - //TRACE(PREFIX_I "GLU Version : %s\n", buf); + //ALLEGRO_INFO("GLU Version : %s\n", buf); #ifdef ALLEGRO_HAVE_DYNAMIC_LINK /* Get glXGetProcAddress entry */ Modified: allegro/branches/5.1/src/tri_soft.c =================================================================== --- allegro/branches/5.1/src/tri_soft.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/tri_soft.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -25,6 +25,8 @@ #include "allegro5/internal/aintern_tri_soft.h" #include <math.h> +ALLEGRO_DEBUG_CHANNEL("tri_soft") + #define MIN _ALLEGRO_MIN #define MAX _ALLEGRO_MAX Modified: allegro/branches/5.1/src/win/wsystem.c =================================================================== --- allegro/branches/5.1/src/win/wsystem.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/win/wsystem.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -533,8 +533,6 @@ vt->import_symbol = win_import_symbol; vt->close_library = win_close_library; - TRACE("ALLEGRO_SYSTEM_INTERFACE created.\n"); - return vt; } Modified: allegro/branches/5.1/src/win/wthread.c =================================================================== --- allegro/branches/5.1/src/win/wthread.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/win/wthread.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -28,7 +28,9 @@ #error something is wrong with the makefile #endif +ALLEGRO_DEBUG_CHANNEL("system") + /* COINIT_MULTITHREADED is not defined in objbase.h for MSVC */ #define _COINIT_MULTITHREADED 0 @@ -56,13 +58,13 @@ ole32, "CoInitializeEx"); } else { - TRACE("WARNING: OLE32.DLL can't be loaded.\n"); + ALLEGRO_WARN("OLE32.DLL can't be loaded.\n"); } if (_CoInitializeEx == NULL) { - TRACE("Microsoft Distributed COM is not installed on this system. If you have problems "); - TRACE("with this application, please install the DCOM update. You can find it on the "); - TRACE("Microsoft homepage\n"); + ALLEGRO_WARN("Microsoft Distributed COM is not installed on this system. If you have problems "); + ALLEGRO_WARN("with this application, please install the DCOM update. You can find it on the "); + ALLEGRO_WARN("Microsoft homepage\n"); } } Modified: allegro/branches/5.1/src/win/wwindow.c =================================================================== --- allegro/branches/5.1/src/win/wwindow.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/win/wwindow.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -33,10 +33,6 @@ #include "allegro5/platform/aintwin.h" -#define PREFIX_I "al-newin INFO: " -#define PREFIX_W "al-newin WARNING: " -#define PREFIX_E "al-newin ERROR: " - ALLEGRO_DEBUG_CHANNEL("wwindow") static WNDCLASS window_class; @@ -947,7 +943,7 @@ { ASSERT(_al_win_msg_call_proc); if (!PostMessage(wnd, _al_win_msg_call_proc, (WPARAM)proc, (LPARAM)param)) { - TRACE(PREFIX_E "_al_win_wnd_schedule_proc failed.\n"); + ALLEGRO_ERROR("_al_win_wnd_schedule_proc failed.\n"); } } Modified: allegro/branches/5.1/src/x/xkeyboard.c =================================================================== --- allegro/branches/5.1/src/x/xkeyboard.c 2010-11-30 04:42:32 UTC (rev 13963) +++ allegro/branches/5.1/src/x/xkeyboard.c 2010-11-30 06:27:58 UTC (rev 13964) @@ -722,7 +722,7 @@ /* TODO: is this needed? modifiers = XSetLocaleModifiers("@im=none"); if (modifiers == NULL) { - TRACE(PREFIX_W "XSetLocaleModifiers failed.\n"); + ALLEGRO_WARN("XSetLocaleModifiers failed.\n"); } */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-11-30 22:09:02
|
Revision: 13967 http://alleg.svn.sourceforge.net/alleg/?rev=13967&view=rev Author: tjaden Date: 2010-11-30 22:08:55 +0000 (Tue, 30 Nov 2010) Log Message: ----------- Prevent 'DLL hijacking' security issue on Windows. Pass absolute file names to LoadLibrary calls, to prevent it loading DLLs from risky places such as the current directory or directories on the PATH. Modified Paths: -------------- allegro/branches/5.1/addons/audio/dsound.cpp allegro/branches/5.1/addons/native_dialog/win_dialog.c allegro/branches/5.1/include/allegro5/platform/aintwin.h allegro/branches/5.1/src/opengl/ogl_draw.c allegro/branches/5.1/src/win/d3d_disp.cpp allegro/branches/5.1/src/win/wjoydxnu.c allegro/branches/5.1/src/win/wsystem.c Modified: allegro/branches/5.1/addons/audio/dsound.cpp =================================================================== --- allegro/branches/5.1/addons/audio/dsound.cpp 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/addons/audio/dsound.cpp 2010-11-30 22:08:55 UTC (rev 13967) @@ -21,6 +21,7 @@ ALLEGRO_DEBUG_CHANNEL("audio-dsound") #include "allegro5/internal/aintern_audio.h" +#include "allegro5/internal/aintern_system.h" /* This is used to stop MinGW from complaining about type-punning */ #define MAKE_UNION(ptr, t) \ @@ -34,10 +35,9 @@ /* DirectSound vars */ static const char* _al_dsound_module_name = "dsound.dll"; -static HMODULE _al_dsound_module = NULL; +static void *_al_dsound_module = NULL; static DIRECTSOUNDCREATE8PROC _al_dsound_create = (DIRECTSOUNDCREATE8PROC)NULL; static IDirectSound8 *device; -static HRESULT hr; static char ds_err_str[100]; static int buffer_size_in_samples = 4*1024; // default static int buffer_size; // in bytes @@ -131,6 +131,7 @@ DWORD block1_bytes, block2_bytes; const void *data; const int bytes_per_sample = ex_data->bits_per_sample / 8; + HRESULT hr; (void)self; @@ -191,18 +192,20 @@ audio data to the device yet, however. */ static int _dsound_open() { + HRESULT hr; + /* load DirectInput module */ - _al_dsound_module = LoadLibraryA(_al_dsound_module_name); + _al_dsound_module = _al_open_library(_al_dsound_module_name); if (_al_dsound_module == NULL) { ALLEGRO_ERROR("Failed to open '%s' library\n", _al_dsound_module_name); return 1; } /* import DirectInput create proc */ - _al_dsound_create = (DIRECTSOUNDCREATE8PROC)GetProcAddress(_al_dsound_module, "DirectSoundCreate8"); + _al_dsound_create = (DIRECTSOUNDCREATE8PROC)_al_import_symbol(_al_dsound_module, "DirectSoundCreate8"); if (_al_dsound_create == NULL) { ALLEGRO_ERROR("DirectSoundCreate8 not in %s\n", _al_dsound_module_name); - FreeLibrary(_al_dsound_module); + _al_close_library(_al_dsound_module); return 1; } @@ -212,7 +215,7 @@ hr = _al_dsound_create(NULL, &device, NULL); if (FAILED(hr)) { ALLEGRO_ERROR("DirectSoundCreate8 failed\n"); - FreeLibrary(_al_dsound_module); + _al_close_library(_al_dsound_module); return 1; } @@ -220,7 +223,7 @@ hr = device->SetCooperativeLevel(GetForegroundWindow(), DSSCL_PRIORITY); if (FAILED(hr)) { ALLEGRO_ERROR("SetCooperativeLevel failed\n"); - FreeLibrary(_al_dsound_module); + _al_close_library(_al_dsound_module); return 1; } @@ -234,7 +237,7 @@ { device->Release(); - FreeLibrary(_al_dsound_module); + _al_close_library(_al_dsound_module); } @@ -323,6 +326,7 @@ static int _dsound_load_voice(ALLEGRO_VOICE *voice, const void *data) { ALLEGRO_DS_DATA *ex_data = (ALLEGRO_DS_DATA *)voice->extra; + HRESULT hr; LPVOID ptr1, ptr2; DWORD block1_bytes, block2_bytes; MAKE_UNION(&ex_data->ds8_buffer, LPDIRECTSOUNDBUFFER8 *); @@ -379,6 +383,7 @@ static int _dsound_start_voice(ALLEGRO_VOICE *voice) { ALLEGRO_DS_DATA *ex_data = (ALLEGRO_DS_DATA *)voice->extra; + HRESULT hr; MAKE_UNION(&ex_data->ds8_buffer, LPDIRECTSOUNDBUFFER8 *); if (!voice->is_streaming) { @@ -475,6 +480,7 @@ { ALLEGRO_DS_DATA *ex_data = (ALLEGRO_DS_DATA *)voice->extra; DWORD play_pos; + HRESULT hr; hr = ex_data->ds8_buffer->GetCurrentPosition(&play_pos, NULL); if (FAILED(hr)) @@ -489,6 +495,7 @@ static int _dsound_set_voice_position(ALLEGRO_VOICE *voice, unsigned int val) { ALLEGRO_DS_DATA *ex_data = (ALLEGRO_DS_DATA *)voice->extra; + HRESULT hr; val *= ex_data->channels * (ex_data->bits_per_sample/8); Modified: allegro/branches/5.1/addons/native_dialog/win_dialog.c =================================================================== --- allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/addons/native_dialog/win_dialog.c 2010-11-30 22:08:55 UTC (rev 13967) @@ -27,7 +27,7 @@ static int wlog_class_registered = 0; /* Handle of RichEdit module */ -static HMODULE wlog_rich_edit_module = 0; +static void *wlog_rich_edit_module = 0; /* Name of the edit control. Depend on system resources. */ static wchar_t* wlog_edit_control = L"EDIT"; @@ -351,17 +351,17 @@ /* Load RichEdit control. */ if (!wlog_rich_edit_module) { - if ((wlog_rich_edit_module = LoadLibraryA("msftedit.dll"))) { + if ((wlog_rich_edit_module = _al_open_library("msftedit.dll"))) { /* 4.1 and emulation of 3.0, 2.0, 1.0 */ wlog_edit_control = L"RICHEDIT50W"; /*MSFTEDIT_CLASS*/ wlog_unicode = true; } - else if ((wlog_rich_edit_module = LoadLibraryA("riched20.dll"))) { + else if ((wlog_rich_edit_module = _al_open_library("riched20.dll"))) { /* 3.0, 2.0 */ wlog_edit_control = L"RichEdit20W"; /*RICHEDIT_CLASS*/ wlog_unicode = true; } - else if ((wlog_rich_edit_module = LoadLibraryA("riched32.dll"))) { + else if ((wlog_rich_edit_module = _al_open_library("riched32.dll"))) { /* 1.0 */ wlog_edit_control = L"RichEdit"; /*RICHEDIT_CLASS*/ wlog_unicode = false; @@ -379,7 +379,7 @@ (HINSTANCE)GetModuleHandle(NULL), textlog); if (!hWnd) { if (wlog_rich_edit_module) { - FreeLibrary(wlog_rich_edit_module); + _al_close_library(wlog_rich_edit_module); wlog_rich_edit_module = NULL; } UnregisterClassA("Allegro Text Log", (HINSTANCE)GetModuleHandle(NULL)); @@ -397,7 +397,7 @@ hWnd, NULL, (HINSTANCE)GetModuleHandle(NULL), NULL); if (!hLog) { if (wlog_rich_edit_module) { - FreeLibrary(wlog_rich_edit_module); + _al_close_library(wlog_rich_edit_module); wlog_rich_edit_module = NULL; } DestroyWindow(hWnd); @@ -468,7 +468,7 @@ /* Release RichEdit module. */ if (wlog_rich_edit_module) { - FreeLibrary(wlog_rich_edit_module); + _al_close_library(wlog_rich_edit_module); wlog_rich_edit_module = NULL; } Modified: allegro/branches/5.1/include/allegro5/platform/aintwin.h =================================================================== --- allegro/branches/5.1/include/allegro5/platform/aintwin.h 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/include/allegro5/platform/aintwin.h 2010-11-30 22:08:55 UTC (rev 13967) @@ -112,6 +112,9 @@ extern bool _al_win_disable_screensaver; +/* dynamic library loading */ +HMODULE _al_win_safe_load_library(const char *filename); + /* time */ void _al_win_init_time(void); void _al_win_shutdown_time(void); Modified: allegro/branches/5.1/src/opengl/ogl_draw.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/src/opengl/ogl_draw.c 2010-11-30 22:08:55 UTC (rev 13967) @@ -45,10 +45,10 @@ return true; } else { - glEnable(GL_BLEND); - glBlendFunc(blend_modes[src_color], blend_modes[dst_color]); - glBlendEquation(blend_equations[op]); - return true; + glEnable(GL_BLEND); + glBlendFunc(blend_modes[src_color], blend_modes[dst_color]); + glBlendEquation(blend_equations[op]); + return true; } #else if (d->ogl_extras->ogl_info.version >= _ALLEGRO_OPENGL_VERSION_1_4) { Modified: allegro/branches/5.1/src/win/d3d_disp.cpp =================================================================== --- allegro/branches/5.1/src/win/d3d_disp.cpp 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/src/win/d3d_disp.cpp 2010-11-30 22:08:55 UTC (rev 13967) @@ -788,7 +788,7 @@ D3DDISPLAYMODE d3d_dm; OSVERSIONINFO info; - _al_d3d_module = LoadLibraryA(_al_d3d_module_name); + _al_d3d_module = _al_win_safe_load_library(_al_d3d_module_name); if (_al_d3d_module == NULL) { ALLEGRO_ERROR("Failed to open '%s' library\n", _al_d3d_module_name); return false; Modified: allegro/branches/5.1/src/win/wjoydxnu.c =================================================================== --- allegro/branches/5.1/src/win/wjoydxnu.c 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/src/win/wjoydxnu.c 2010-11-30 22:08:55 UTC (rev 13967) @@ -1068,7 +1068,7 @@ ASSERT(!STOP_EVENT); /* load DirectInput module */ - _al_dinput_module = LoadLibraryA(_al_dinput_module_name); + _al_dinput_module = _al_win_safe_load_library(_al_dinput_module_name); if (_al_dinput_module == NULL) { ALLEGRO_ERROR("Failed to open '%s' library\n", _al_dinput_module_name); joystick_dinput = NULL; Modified: allegro/branches/5.1/src/win/wsystem.c =================================================================== --- allegro/branches/5.1/src/win/wsystem.c 2010-11-30 13:52:21 UTC (rev 13966) +++ allegro/branches/5.1/src/win/wsystem.c 2010-11-30 22:08:55 UTC (rev 13967) @@ -34,9 +34,10 @@ #endif #include <windows.h> +#include <mmsystem.h> +ALLEGRO_DEBUG_CHANNEL("system") -#include <mmsystem.h> /* FIXME: should we check for psapi _WIN32_IE and shlobj? { */ @@ -483,18 +484,147 @@ return true; } -static void *win_open_library(const char *filename) +static HMODULE load_library_at_path(ALLEGRO_PATH *path, const char *filename) { - HINSTANCE lib = LoadLibrary(filename); - if (!lib) { + const char *path_str; + HMODULE lib; + + al_set_path_filename(path, filename); + path_str = al_path_cstr(path, '\\'); + + lib = LoadLibraryA(path_str); + if (lib) { + ALLEGRO_INFO("Loaded %s\n", path_str); + } + else { DWORD error = GetLastError(); HRESULT hr = HRESULT_FROM_WIN32(error); /* XXX do something with it */ (void)hr; + ALLEGRO_WARN("Failed to load %s (error: %ld)\n", path_str, error); } + return lib; } +static bool is_build_config_name(const char *s) +{ + return s && + ( 0 == strcmp(s, "Debug") + || 0 == strcmp(s, "Release") + || 0 == strcmp(s, "RelWithDebInfo") + || 0 == strcmp(s, "Profile")); +} + +static bool same_dir(ALLEGRO_PATH *dir1, ALLEGRO_PATH *dir2) +{ + const char *s1; + const char *s2; + int i, n1, n2; + + n1 = al_get_path_num_components(dir1); + n2 = al_get_path_num_components(dir2); + if (n1 != n2) + return false; + + for (i = 0; i < n1; i++) { + s1 = al_get_path_component(dir1, i); + s2 = al_get_path_component(dir2, i); + if (strcmp(s1, s2) != 0) + return false; + } + + s1 = al_get_path_drive(dir1); + s2 = al_get_path_drive(dir2); + if (!s1 || !s2 || strcmp(s1, s2) != 0) + return false; + + return true; +} + +static HMODULE maybe_load_library_at_cwd(ALLEGRO_PATH *path) +{ + char cwd_buf[MAX_PATH]; + ALLEGRO_PATH *cwd; + const char *path_str; + HMODULE lib; + + if (!is_build_config_name(al_get_path_tail(path))) + return NULL; + + if (GetCurrentDirectoryA(sizeof(cwd_buf), cwd_buf) >= sizeof(cwd_buf)) { + ALLEGRO_WARN("GetCurrentDirectoryA failed\n"); + return NULL; + } + + al_drop_path_tail(path); + path_str = al_path_cstr(path, '\\'); + + cwd = al_create_path_for_directory(cwd_buf); + if (same_dir(path, cwd)) { + ALLEGRO_DEBUG("Assuming MSVC build directory, trying %s\n", path_str); + lib = LoadLibraryA(path_str); + } + al_destroy_path(cwd); + + return lib; +} + +/* + * Calling LoadLibrary with a relative file name is a security risk: + * see e.g. Microsoft Security Advisory (2269637) + * "Insecure Library Loading Could Allow Remote Code Execution" + */ +HMODULE _al_win_safe_load_library(const char *filename) +{ + char buf[MAX_PATH]; + HMODULE lib; + bool msvc_only = false; + + /* MSVC only: if the executable is in the build configuration directory, + * which is also just under the current directory, then also try to load the + * library from the current directory. This leads to less surprises when + * running example programs. + */ +#if defined(ALLEGRO_MSVC) + msvc_only = true; +#endif + + /* Try to load the library from the directory containing the running + * executable. + */ + if (GetModuleFileName(NULL, buf, sizeof(buf)) < sizeof(buf)) { + ALLEGRO_PATH *path = al_create_path(buf); + lib = load_library_at_path(path, filename); + if (!lib && msvc_only) { + lib = maybe_load_library_at_cwd(path); + } + al_destroy_path(path); + if (lib) + return lib; + } + + /* Try to load the library from the Windows system directory. */ + if (GetSystemDirectoryA(buf, sizeof(buf)) < sizeof(buf)) { + ALLEGRO_PATH *path = al_create_path_for_directory(buf); + lib = load_library_at_path(path, filename); + al_destroy_path(path); + if (lib) + return lib; + } + + /* Do NOT try to load the library from the current directory, or + * directories on the PATH. + */ + + return NULL; +} + +static void *win_open_library(const char *filename) +{ + return _al_win_safe_load_library(filename); +} + static void *win_import_symbol(void *library, const char *symbol) { ASSERT(library); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <el...@us...> - 2010-12-02 12:53:38
|
Revision: 13969 http://alleg.svn.sourceforge.net/alleg/?rev=13969&view=rev Author: elias Date: 2010-12-02 12:53:32 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Use better dependencies for re-generating the python wrapper from cmake. Modified Paths: -------------- allegro/branches/5.1/CMakeLists.txt allegro/branches/5.1/python/CMakeLists.txt Modified: allegro/branches/5.1/CMakeLists.txt =================================================================== --- allegro/branches/5.1/CMakeLists.txt 2010-12-01 00:06:38 UTC (rev 13968) +++ allegro/branches/5.1/CMakeLists.txt 2010-12-02 12:53:32 UTC (rev 13969) @@ -907,23 +907,24 @@ #-----------------------------------------------------------------------------# # -# Wrappers +# Documentation # #-----------------------------------------------------------------------------# -if(WANT_PYTHON_WRAPPER) - add_subdirectory(python) -endif(WANT_PYTHON_WRAPPER) +if(WANT_DOCS) + add_subdirectory(docs) +endif(WANT_DOCS) #-----------------------------------------------------------------------------# # -# Documentation +# Wrappers # #-----------------------------------------------------------------------------# -if(WANT_DOCS) - add_subdirectory(docs) -endif(WANT_DOCS) +if(WANT_PYTHON_WRAPPER) + add_subdirectory(python) +endif(WANT_PYTHON_WRAPPER) + #-----------------------------------------------------------------------------# # vim: set sts=4 sw=4 et: Modified: allegro/branches/5.1/python/CMakeLists.txt =================================================================== --- allegro/branches/5.1/python/CMakeLists.txt 2010-12-01 00:06:38 UTC (rev 13968) +++ allegro/branches/5.1/python/CMakeLists.txt 2010-12-02 12:53:32 UTC (rev 13969) @@ -1,8 +1,11 @@ include(FindPythonInterp) +# protos.timestamp is supposed to change whenever any function prototype +# changed. + add_custom_command( OUTPUT python_protos - DEPENDS ${ALLEGRO_INCLUDE_FILES} + DEPENDS ${CMAKE_BINARY_DIR}/docs/protos.timestamp COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/python/checkdocs.py -p python_protos -b ${CMAKE_BINARY_DIR} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-12-03 01:06:16
|
Revision: 13970 http://alleg.svn.sourceforge.net/alleg/?rev=13970&view=rev Author: tjaden Date: 2010-12-03 01:06:09 +0000 (Fri, 03 Dec 2010) Log Message: ----------- Add back ALLEGRO_VIDEO_BITMAP, but with a non-zero value so it can be tested for with al_get_bitmap_flags(b) & ALLEGRO_VIDEO_BITMAP. Make al_set_new_bitmap_flags assume ALLEGRO_VIDEO_BITMAP if ALLEGRO_MEMORY_BITMAP is not set, so al_set_new_bitmap_flags(0) still works as well. Modified Paths: -------------- allegro/branches/5.1/demos/speed/a4_aux.c allegro/branches/5.1/demos/speed/main.c allegro/branches/5.1/docs/src/refman/graphics.txt allegro/branches/5.1/examples/ex_bitmap.c allegro/branches/5.1/examples/ex_bitmap_target.c allegro/branches/5.1/examples/ex_blit.c allegro/branches/5.1/examples/ex_draw_bitmap.c allegro/branches/5.1/examples/ex_lockbitmap.c allegro/branches/5.1/examples/ex_pixelformat.cpp allegro/branches/5.1/examples/ex_subbitmap.c allegro/branches/5.1/include/allegro5/bitmap.h allegro/branches/5.1/src/bitmap.c allegro/branches/5.1/src/opengl/ogl_display.c allegro/branches/5.1/src/tls.c allegro/branches/5.1/tests/test_driver.c Modified: allegro/branches/5.1/demos/speed/a4_aux.c =================================================================== --- allegro/branches/5.1/demos/speed/a4_aux.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/demos/speed/a4_aux.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -258,7 +258,7 @@ ALLEGRO_BITMAP *bmp; oldflags = al_get_new_bitmap_flags(); - newflags = ALLEGRO_MEMORY_BITMAP; + newflags = (oldflags &~ ALLEGRO_VIDEO_BITMAP) | ALLEGRO_MEMORY_BITMAP; al_set_new_bitmap_flags(newflags); bmp = al_create_bitmap(w, h); al_set_new_bitmap_flags(oldflags); Modified: allegro/branches/5.1/demos/speed/main.c =================================================================== --- allegro/branches/5.1/demos/speed/main.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/demos/speed/main.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -277,7 +277,7 @@ return 1; } - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); font_video = al_load_bitmap_font("a4_font.tga"); if (!font_video) { fprintf(stderr, "Error loading a4_font.tga\n"); Modified: allegro/branches/5.1/docs/src/refman/graphics.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/graphics.txt 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/docs/src/refman/graphics.txt 2010-12-03 01:06:09 UTC (rev 13970) @@ -306,6 +306,12 @@ Sets the flags to use for newly created bitmaps. Valid flags are: +ALLEGRO_VIDEO_BITMAP +: Creates a bitmap that resides in the video card memory. These types of + bitmaps receive the greatest benefit from hardware acceleration. + [al_set_new_bitmap_flags] will implicitly set this flag unless + ALLEGRO_MEMORY_BITMAP is present. + ALLEGRO_MEMORY_BITMAP : Create a bitmap residing in system memory. Operations on, and with, memory bitmaps will not be hardware accelerated. Modified: allegro/branches/5.1/examples/ex_bitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_bitmap.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_bitmap.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -56,7 +56,7 @@ if (!membitmap) { abort_example("%s not found or failed to load\n", filename); } - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); printf("Loading took %.4f seconds\n", t1 - t0); Modified: allegro/branches/5.1/examples/ex_bitmap_target.c =================================================================== --- allegro/branches/5.1/examples/ex_bitmap_target.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_bitmap_target.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -169,7 +169,7 @@ while (!quit) { if (al_get_new_bitmap_flags() & ALLEGRO_FORCE_LOCKING) - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); else al_set_new_bitmap_flags(ALLEGRO_FORCE_LOCKING); run(); Modified: allegro/branches/5.1/examples/ex_blit.c =================================================================== --- allegro/branches/5.1/examples/ex_blit.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_blit.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -159,7 +159,7 @@ set_xy(x, y + ih); al_destroy_bitmap(temp); - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); /* Test 4. */ print("Screen -> Locked -> Screen (%.1f fps)", get_fps(3)); Modified: allegro/branches/5.1/examples/ex_draw_bitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_draw_bitmap.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_draw_bitmap.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -118,7 +118,7 @@ if (example.bitmap) al_destroy_bitmap(example.bitmap); al_set_new_bitmap_flags( - example.use_memory_bitmaps ? ALLEGRO_MEMORY_BITMAP : 0); + example.use_memory_bitmaps ? ALLEGRO_MEMORY_BITMAP : ALLEGRO_VIDEO_BITMAP); example.bitmap = al_create_bitmap(size, size); example.bitmap_size = size; al_set_target_bitmap(example.bitmap); Modified: allegro/branches/5.1/examples/ex_lockbitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_lockbitmap.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_lockbitmap.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -49,7 +49,7 @@ if (mode == 0) { log_printf("Locking video bitmap"); al_clear_to_color(al_map_rgb(0, 0, 0)); - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); bitmap = al_create_bitmap(3*256, 256); } else if (mode == 1) { Modified: allegro/branches/5.1/examples/ex_pixelformat.cpp =================================================================== --- allegro/branches/5.1/examples/ex_pixelformat.cpp 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_pixelformat.cpp 2010-12-03 01:06:09 UTC (rev 13970) @@ -143,7 +143,7 @@ if (use_memory) al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP); else - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); al_set_new_bitmap_format(formats[i].format); Modified: allegro/branches/5.1/examples/ex_subbitmap.c =================================================================== --- allegro/branches/5.1/examples/ex_subbitmap.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/examples/ex_subbitmap.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -264,7 +264,7 @@ use_memory = !use_memory; log_printf("Using a %s bitmap.\n", use_memory ? "memory" : "video"); al_set_new_bitmap_flags(use_memory ? - ALLEGRO_MEMORY_BITMAP : 0); + ALLEGRO_MEMORY_BITMAP : ALLEGRO_VIDEO_BITMAP); src_bmp = al_clone_bitmap(temp); al_destroy_bitmap(temp); redraw = true; Modified: allegro/branches/5.1/include/allegro5/bitmap.h =================================================================== --- allegro/branches/5.1/include/allegro5/bitmap.h 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/include/allegro5/bitmap.h 2010-12-03 01:06:09 UTC (rev 13970) @@ -60,7 +60,8 @@ ALLEGRO_MIN_LINEAR = 0x0040, ALLEGRO_MAG_LINEAR = 0x0080, ALLEGRO_MIPMAP = 0x0100, - ALLEGRO_NO_PREMULTIPLIED_ALPHA = 0x0200 + ALLEGRO_NO_PREMULTIPLIED_ALPHA = 0x0200, + ALLEGRO_VIDEO_BITMAP = 0x0400 }; Modified: allegro/branches/5.1/src/bitmap.c =================================================================== --- allegro/branches/5.1/src/bitmap.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/src/bitmap.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -761,7 +761,7 @@ */ al_store_state(&backup, ALLEGRO_STATE_BITMAP | ALLEGRO_STATE_BLENDER); - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); al_set_new_bitmap_format(bitmap->format); tmp = do_create_bitmap(bitmap->w, bitmap->h); Modified: allegro/branches/5.1/src/opengl/ogl_display.c =================================================================== --- allegro/branches/5.1/src/opengl/ogl_display.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/src/opengl/ogl_display.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -310,7 +310,7 @@ ALLEGRO_DEBUG("Creating backbuffer bitmap\n"); al_set_new_bitmap_format(format); - al_set_new_bitmap_flags(0); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP); backbuffer = _al_ogl_create_bitmap(disp, disp->w, disp->h); al_restore_state(&backup); Modified: allegro/branches/5.1/src/tls.c =================================================================== --- allegro/branches/5.1/src/tls.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/src/tls.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -89,6 +89,7 @@ tls->new_window_y = INT_MAX; initialize_blender(&tls->current_blender); + tls->new_bitmap_flags = ALLEGRO_VIDEO_BITMAP; tls->new_bitmap_format = ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA; tls->new_file_interface = &_al_file_interface_stdio; tls->fs_interface = &_al_fs_interface_stdio; @@ -603,6 +604,11 @@ if ((tls = tls_get()) == NULL) return; + + /* Assume ALLEGRO_VIDEO_BITMAP if ALLEGRO_MEMORY_BITMAP is not set. */ + if (!(flags & ALLEGRO_MEMORY_BITMAP)) + flags |= ALLEGRO_VIDEO_BITMAP; + tls->new_bitmap_flags = flags; } Modified: allegro/branches/5.1/tests/test_driver.c =================================================================== --- allegro/branches/5.1/tests/test_driver.c 2010-12-02 12:53:32 UTC (rev 13969) +++ allegro/branches/5.1/tests/test_driver.c 2010-12-03 01:06:09 UTC (rev 13970) @@ -1145,7 +1145,7 @@ reliable = (failed_tests == old_failed_tests); - al_set_new_bitmap_flags(0 | ALLEGRO_NO_PREMULTIPLIED_ALPHA); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP | ALLEGRO_NO_PREMULTIPLIED_ALPHA); do_test(cfg, testname, al_get_backbuffer(display), HW, reliable); } @@ -1274,7 +1274,7 @@ al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP | ALLEGRO_NO_PREMULTIPLIED_ALPHA); load_bitmaps(cfg, "bitmaps", SW); - al_set_new_bitmap_flags(0 | ALLEGRO_NO_PREMULTIPLIED_ALPHA); + al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP | ALLEGRO_NO_PREMULTIPLIED_ALPHA); load_bitmaps(cfg, "bitmaps", HW); load_fonts(cfg, "fonts"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tr...@us...> - 2010-12-03 13:29:15
|
Revision: 13973 http://alleg.svn.sourceforge.net/alleg/?rev=13973&view=rev Author: trentg Date: 2010-12-03 13:29:08 +0000 (Fri, 03 Dec 2010) Log Message: ----------- Added two function for the iPhone port: al_iphone_override_screen_scale and al_iphone_program_has_halted Modified Paths: -------------- allegro/branches/5.1/docs/src/refman/platform.txt allegro/branches/5.1/include/allegro5/internal/aintern_iphone.h allegro/branches/5.1/src/iphone/EAGLView.h allegro/branches/5.1/src/iphone/EAGLView.m allegro/branches/5.1/src/iphone/allegroAppDelegate.h allegro/branches/5.1/src/iphone/allegroAppDelegate.m allegro/branches/5.1/src/iphone/iphone_display.c Added Paths: ----------- allegro/branches/5.1/include/allegro5/allegro_iphone.h Modified: allegro/branches/5.1/docs/src/refman/platform.txt =================================================================== --- allegro/branches/5.1/docs/src/refman/platform.txt 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/docs/src/refman/platform.txt 2010-12-03 13:29:08 UTC (rev 13973) @@ -9,3 +9,35 @@ ### API: al_get_win_window_handle Returns the handle to the window that the passed display is using. + +## iPhone + +These functions are declared in the following header file: + + #include <allegro5/allegro_iphone.h> + +### API: al_iphone_program_has_halted + +Multitasking on iOS is different than on other platforms. When an +application receives a ALLEGRO_DISPLAY_SWITCH_OUT or ALLEGRO_DISPLAY_CLOSE +event on a multitasking-capable device, it should cease all activity and +do nothing but check for an ALLEGRO_DISPLAY_SWITCH_IN event. To let the +iPhone driver know that you've ceased all activity, call this function. Certain +operations, if done, will crash the program after this call, most notably any +function which uses OpenGL. This function is needed because the "switch out" +handler on iPhone can't return until these operations have stopped. + +### API: al_iphone_override_screen_scale + +Original iPhones and iPod Touches had a screen resolution of 320x480 +(in Portrait mode). When the iPhone 4 and iPod Touch 4th generation devices +came out, they were backwards compatible with all old iPhone apps. This +means that they assume a 480x320 screen resolution by default, while they +actually have a 960x640 pixel screen (exactly 2x on each dimension). An +API was added to allow access to the full (or in fact any fraction of) +resolution of the new devices. This function is normally called with a value +of "2.0" to get the native iPhone 4 screen resolution (you must also call +al_create_display with (960, 640), AFTER calling this function). It is not +limited to 2.0 scaling factors however. You can use 1.5 or 0.5 or other values +in between, however if it's not an exact multiple of the original iPhone +resolution, linear filtering will be applied to the screen. Added: allegro/branches/5.1/include/allegro5/allegro_iphone.h =================================================================== --- allegro/branches/5.1/include/allegro5/allegro_iphone.h (rev 0) +++ allegro/branches/5.1/include/allegro5/allegro_iphone.h 2010-12-03 13:29:08 UTC (rev 13973) @@ -0,0 +1,32 @@ +/* ______ ___ ___ + * /\ _ \ /\_ \ /\_ \ + * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ + * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ + * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ + * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ + * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ + * /\____/ + * \_/__/ + * + */ + + +#ifndef A5_IPHONE_ALLEGRO_H +#define A5_IPHONE_ALLEGRO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* + * Public iPhone-related API + */ + +AL_FUNC(void, al_iphone_program_has_halted, (void)); +AL_FUNC(void, al_iphone_override_screen_scale, (float scale)); + +#ifdef __cplusplus + } +#endif + +#endif /* A5_IPONE_ALLEGRO_H */ Modified: allegro/branches/5.1/include/allegro5/internal/aintern_iphone.h =================================================================== --- allegro/branches/5.1/include/allegro5/internal/aintern_iphone.h 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/include/allegro5/internal/aintern_iphone.h 2010-12-03 13:29:08 UTC (rev 13973) @@ -39,3 +39,4 @@ void _al_iphone_translate_from_screen(ALLEGRO_DISPLAY *d, int *x, int *y); void _al_iphone_translate_to_screen(ALLEGRO_DISPLAY *d, int *x, int *y); void _al_iphone_clip(ALLEGRO_BITMAP const *bitmap, int x_1, int y_1, int x_2, int y_2); +float _al_iphone_get_screen_scale(void); Modified: allegro/branches/5.1/src/iphone/EAGLView.h =================================================================== --- allegro/branches/5.1/src/iphone/EAGLView.h 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/src/iphone/EAGLView.h 2010-12-03 13:29:08 UTC (rev 13973) @@ -13,9 +13,7 @@ @interface EAGLView : UIView { @private - EAGLContext *context; - GLint backingWidth; - GLint backingHeight; + EAGLContext *context; ALLEGRO_DISPLAY *allegro_display; /* OpenGL names for the renderbuffer and framebuffers used to render to this view */ @@ -26,6 +24,8 @@ } @property (nonatomic, retain) EAGLContext *context; +@property GLint backingWidth; +@property GLint backingHeight; - (void)make_current; Modified: allegro/branches/5.1/src/iphone/EAGLView.m =================================================================== --- allegro/branches/5.1/src/iphone/EAGLView.m 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/src/iphone/EAGLView.m 2010-12-03 13:29:08 UTC (rev 13973) @@ -9,6 +9,8 @@ @implementation EAGLView @synthesize context; +@synthesize backingWidth; +@synthesize backingHeight; // You must implement this method @@ -74,6 +76,10 @@ - (BOOL)createFramebuffer { + if ([self respondsToSelector:@selector(contentScaleFactor)]) { + self.contentScaleFactor = _al_iphone_get_screen_scale(); + } + ALLEGRO_INFO("Creating GL framebuffer.\n"); glGenFramebuffersOES(1, &viewFramebuffer); glGenRenderbuffersOES(1, &viewRenderbuffer); @@ -137,6 +143,8 @@ // Enumerate through all the touch objects. for (UITouch *touch in touches) { CGPoint p = [touch locationInView:self]; + p.x *= _al_iphone_get_screen_scale(); + p.y *= _al_iphone_get_screen_scale(); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_BUTTON_DOWN, p.x, p.y, 1, allegro_display); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_AXES, @@ -151,6 +159,8 @@ // Enumerates through all touch objects for (UITouch *touch in touches) { CGPoint p = [touch locationInView:self]; + p.x *= _al_iphone_get_screen_scale(); + p.y *= _al_iphone_get_screen_scale(); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_AXES, p.x, p.y, 1, allegro_display); } @@ -163,6 +173,8 @@ // Enumerates through all touch object for (UITouch *touch in touches) { CGPoint p = [touch locationInView:self]; + p.x *= _al_iphone_get_screen_scale(); + p.y *= _al_iphone_get_screen_scale(); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_BUTTON_UP, p.x, p.y, 1, allegro_display); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_AXES, @@ -179,9 +191,15 @@ // Enumerates through all touch object for (UITouch *touch in touches) { CGPoint p = [touch locationInView:self]; + p.x *= _al_iphone_get_screen_scale(); + p.y *= _al_iphone_get_screen_scale(); _al_iphone_generate_mouse_event(ALLEGRO_EVENT_MOUSE_BUTTON_UP, p.x, p.y, 1, allegro_display); } } +-(BOOL)canBecomeFirstResponder { + return YES; +} + @end Modified: allegro/branches/5.1/src/iphone/allegroAppDelegate.h =================================================================== --- allegro/branches/5.1/src/iphone/allegroAppDelegate.h 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/src/iphone/allegroAppDelegate.h 2010-12-03 13:29:08 UTC (rev 13973) @@ -16,6 +16,7 @@ + (void)run:(int)argc:(char **)argv; - (void)add_view; - (void)set_allegro_display:(ALLEGRO_DISPLAY *)d; +- (void)display_splash_screen; - (void)orientation_change:(NSNotification *)notification; @end Modified: allegro/branches/5.1/src/iphone/allegroAppDelegate.m =================================================================== --- allegro/branches/5.1/src/iphone/allegroAppDelegate.m 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/src/iphone/allegroAppDelegate.m 2010-12-03 13:29:08 UTC (rev 13973) @@ -12,7 +12,30 @@ static allegroAppDelegate *global_delegate; static UIImageView *splashview; static UIWindow *splashwin; +static volatile bool waiting_for_program_halt = false; +static float scale_override = -1.0; +void al_iphone_program_has_halted(void) +{ + waiting_for_program_halt = false; +} + +float _al_iphone_get_screen_scale(void) +{ + if (scale_override > 0.0) { + return scale_override; + } + if ([[UIScreen mainScreen] respondsToSelector:NSSelectorFromString(@"scale")]) { + return [[UIScreen mainScreen] scale]; + } + return 1.0f; +} + +void al_iphone_override_screen_scale(float scale) +{ + scale_override = scale; +} + void _al_iphone_add_view(ALLEGRO_DISPLAY *display) { [global_delegate set_allegro_display:display]; @@ -34,7 +57,9 @@ { [global_delegate.view flip]; if (splashview) { + [splashview removeFromSuperview]; [splashview release]; + [splashwin removeFromSuperview]; [splashwin release]; splashview = nil; splashwin = nil; @@ -62,8 +87,8 @@ void _al_iphone_get_screen_size(int *w, int *h) { - *w = [[UIScreen mainScreen] bounds].size.width; - *h = [[UIScreen mainScreen] bounds].size.height; + *w = global_delegate.view.backingWidth; + *h = global_delegate.view.backingHeight; } @implementation allegroAppDelegate @@ -87,7 +112,7 @@ * view is first displayed in the user thread we switch from displaying the * splash screen to the first user frame, without any flicker. */ -static void display_splash_screen(void) +- (void)display_splash_screen { UIScreen *screen = [UIScreen mainScreen]; splashwin = [[UIWindow alloc] initWithFrame:[screen bounds]]; @@ -153,9 +178,9 @@ [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientation_change:) name:UIDeviceOrientationDidChangeNotification object:nil]; + [self display_splash_screen]; + _al_iphone_run_user_main(); - - display_splash_screen(); } - (void)applicationWillTerminate:(UIApplication *)application { @@ -183,6 +208,38 @@ _al_iphone_await_termination(); } +- (void)applicationDidEnterBackground:(UIApplication *)application { + ALLEGRO_DISPLAY *d = allegro_display; + ALLEGRO_EVENT event; + + waiting_for_program_halt = true; + + _al_event_source_lock(&d->es); + if (_al_event_source_needs_to_generate_event(&d->es)) { + event.display.type = ALLEGRO_EVENT_DISPLAY_SWITCH_OUT; + event.display.timestamp = al_current_time(); + _al_event_source_emit_event(&d->es, &event); + } + _al_event_source_unlock(&d->es); + + while (waiting_for_program_halt) { + // do nothing, this should be quick + } +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + ALLEGRO_DISPLAY *d = allegro_display; + ALLEGRO_EVENT event; + + _al_event_source_lock(&d->es); + if (_al_event_source_needs_to_generate_event(&d->es)) { + event.display.type = ALLEGRO_EVENT_DISPLAY_SWITCH_IN; + event.display.timestamp = al_current_time(); + _al_event_source_emit_event(&d->es, &event); + } + _al_event_source_unlock(&d->es); +} + - (void)set_allegro_display:(ALLEGRO_DISPLAY *)d { allegro_display = d; } @@ -196,6 +253,7 @@ [view set_allegro_display:allegro_display]; [window addSubview:view]; [window makeKeyAndVisible]; + [view becomeFirstResponder]; } - (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration Modified: allegro/branches/5.1/src/iphone/iphone_display.c =================================================================== --- allegro/branches/5.1/src/iphone/iphone_display.c 2010-12-03 06:14:31 UTC (rev 13972) +++ allegro/branches/5.1/src/iphone/iphone_display.c 2010-12-03 13:29:08 UTC (rev 13973) @@ -221,6 +221,7 @@ display->vt = _al_get_iphone_display_interface(); display->w = w; display->h = h; + display->flags = al_get_new_display_flags(); ALLEGRO_SYSTEM_IPHONE *system = (void *)al_get_system_driver(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-12-04 08:13:31
|
Revision: 13980 http://alleg.svn.sourceforge.net/alleg/?rev=13980&view=rev Author: tjaden Date: 2010-12-04 08:13:24 +0000 (Sat, 04 Dec 2010) Log Message: ----------- Make simultaneous trace messages never interfere with one another, i.e. all lines are logged atomically. To simplify this change, al_trace and al_register_trace_handler were removed. Both were undocumented, being inherited from A4. Modified Paths: -------------- allegro/branches/5.1/include/allegro5/debug.h allegro/branches/5.1/src/allegro.c Modified: allegro/branches/5.1/include/allegro5/debug.h =================================================================== --- allegro/branches/5.1/include/allegro5/debug.h 2010-12-04 08:12:50 UTC (rev 13979) +++ allegro/branches/5.1/include/allegro5/debug.h 2010-12-04 08:13:24 UTC (rev 13980) @@ -29,17 +29,15 @@ AL_FUNC(bool, _al_trace_prefix, (char const *channel, int level, char const *file, int line, char const *function)); -AL_PRINTFUNC(void, al_trace, (const char *msg, ...), 1, 2); +AL_PRINTFUNC(void, _al_trace_suffix, (const char *msg, ...), 1, 2); -AL_FUNC(void, al_register_trace_handler, (AL_METHOD(int, handler, (const char *msg)))); - #ifdef DEBUGMODE /* Must not be used with a trailing semicolon. */ #define ALLEGRO_DEBUG_CHANNEL(x) static char const *__al_debug_channel = x; #define ALLEGRO_TRACE_CHANNEL_LEVEL(channel, level) \ !_al_trace_prefix(channel, level, __FILE__, __LINE__, __func__) \ - ? (void)0 : al_trace + ? (void)0 : _al_trace_suffix #else #define ALLEGRO_TRACE_CHANNEL_LEVEL(channel, x) 1 ? (void) 0 : al_trace #define ALLEGRO_DEBUG_CHANNEL(x) Modified: allegro/branches/5.1/src/allegro.c =================================================================== --- allegro/branches/5.1/src/allegro.c 2010-12-04 08:12:50 UTC (rev 13979) +++ allegro/branches/5.1/src/allegro.c 2010-12-04 08:13:24 UTC (rev 13980) @@ -33,9 +33,7 @@ static FILE *trace_file = NULL; static _AL_MUTEX trace_mutex = _AL_MUTEX_UNINITED; -int (*_al_trace_handler)(const char *msg) = NULL; - typedef struct DEBUG_INFO { /* 0: debug, 1: info, 2: warn, 3: error */ @@ -231,6 +229,49 @@ +static void open_trace_file(void) +{ + const char *s; + + if (debug_trace_virgin) { + s = getenv("ALLEGRO_TRACE"); + + if (s) + trace_file = fopen(s, "w"); + else +#ifdef ALLEGRO_IPHONE + // Remember, we have no (accessible) filesystem on (not jailbroken) + // iphone. + // stderr will be redirected to xcode's debug console though, so + // it's as good to use as the NSLog stuff. + trace_file = stderr; +#else + trace_file = fopen("allegro.log", "w"); +#endif + + debug_trace_virgin = false; + } +} + + + +static void do_trace(const char *msg, ...) +{ + va_list ap; + + if (trace_file) { + va_start(ap, msg); + vfprintf(trace_file, msg, ap); + va_end(ap); + } +} + + + +/* _al_trace_prefix: + * Conditionally write the initial part of a trace message. If we do, return true + * and continue to hold the trace_mutex lock. + */ bool _al_trace_prefix(char const *channel, int level, char const *file, int line, char const *function) { @@ -272,22 +313,24 @@ /* Avoid interleaved output from different threads. */ _al_mutex_lock(&trace_mutex); - al_trace("%-8s ", channel); - if (level == 0) al_trace("D "); - if (level == 1) al_trace("I "); - if (level == 2) al_trace("W "); - if (level == 3) al_trace("E "); + open_trace_file(); + do_trace("%-8s ", channel); + if (level == 0) do_trace("D "); + if (level == 1) do_trace("I "); + if (level == 2) do_trace("W "); + if (level == 3) do_trace("E "); + #ifdef ALLEGRO_MSVC name = strrchr(file, '\\'); #else name = strrchr(file, '/'); #endif if (_al_debug_info.flags & 1) { - al_trace("%20s:%-4d ", name ? name + 1 : file, line); + do_trace("%20s:%-4d ", name ? name + 1 : file, line); } if (_al_debug_info.flags & 2) { - al_trace("%-32s ", function); + do_trace("%-32s ", function); } if (_al_debug_info.flags & 4) { double t = al_get_time(); @@ -297,75 +340,37 @@ */ if (t > 3600 * 24 * 365) t = 0; - al_trace("[%10.5f] ", t); + do_trace("[%10.5f] ", t); } - _al_mutex_unlock(&trace_mutex); - + /* Do not unlocked trace_mutex here; that is done by _al_trace_suffix. */ return true; } -/* al_trace: - * Outputs a trace message (uses ASCII strings). +/* _al_trace_suffix: + * Output the final part of a trace message, and release the trace_mutex lock. */ -void al_trace(const char *msg, ...) +void _al_trace_suffix(const char *msg, ...) { int olderr = errno; - char buf[512]; - char *s; - - /* todo, some day: use vsnprintf (C99) */ va_list ap; - va_start(ap, msg); - vsprintf(buf, msg, ap); - va_end(ap); - if (_al_trace_handler) { - if (_al_trace_handler(buf)) - return; - } - - if (debug_trace_virgin) { - s = getenv("ALLEGRO_TRACE"); - - if (s) - trace_file = fopen(s, "w"); - else -#ifdef ALLEGRO_IPHONE - // Remember, we have no (accessible) filesystem on (not jailbroken) - // iphone. - // stderr will be redirected to xcode's debug console though, so - // it's as good to use as the NSLog stuff. - trace_file = stderr; -#else - trace_file = fopen("allegro.log", "w"); -#endif - - debug_trace_virgin = false; - } - if (trace_file) { - fwrite(buf, sizeof(char), strlen(buf), trace_file); + va_start(ap, msg); + vfprintf(trace_file, msg, ap); + va_end(ap); fflush(trace_file); } + _al_mutex_unlock(&trace_mutex); + errno = olderr; } -/* al_register_trace_handler: - * Installs a user handler for trace output. - */ -void al_register_trace_handler(int (*handler)(const char *msg)) -{ - _al_trace_handler = handler; -} - - - /* Function: al_get_allegro_version */ uint32_t al_get_allegro_version(void) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-12-05 09:56:55
|
Revision: 13987 http://alleg.svn.sourceforge.net/alleg/?rev=13987&view=rev Author: tjaden Date: 2010-12-05 09:56:49 +0000 (Sun, 05 Dec 2010) Log Message: ----------- Install allegro_iphone.h if compiling for iPhone (untested). Modified Paths: -------------- allegro/branches/5.1/CMakeLists.txt allegro/branches/5.1/cmake/FileList.cmake Modified: allegro/branches/5.1/CMakeLists.txt =================================================================== --- allegro/branches/5.1/CMakeLists.txt 2010-12-05 09:50:40 UTC (rev 13986) +++ allegro/branches/5.1/CMakeLists.txt 2010-12-05 09:56:49 UTC (rev 13987) @@ -778,6 +778,11 @@ ${ALLEGRO_INCLUDE_ALLEGRO_WINDOWS_FILES} ) endif(WIN32) +if(IPHONE) + list(APPEND ALLEGRO_PUBLIC_HEADERS + ${ALLEGRO_INCLUDE_ALLEGRO_IPHONE_FILES} + ) +endif(IPHONE) if(SUPPORT_OPENGL) list(APPEND ALLEGRO_PUBLIC_HEADERS ${ALLEGRO_INCLUDE_ALLEGRO_OPENGL_FILES} Modified: allegro/branches/5.1/cmake/FileList.cmake =================================================================== --- allegro/branches/5.1/cmake/FileList.cmake 2010-12-05 09:50:40 UTC (rev 13986) +++ allegro/branches/5.1/cmake/FileList.cmake 2010-12-05 09:56:49 UTC (rev 13987) @@ -286,6 +286,10 @@ include/allegro5/allegro_windows.h ) +set(ALLEGRO_INCLUDE_ALLEGRO_IPHONE_FILES + include/allegro5/allegro_iphone.h + ) + set(ALLEGRO_INCLUDE_ALLEGRO_PLATFORM_FILES_GENERATED include/allegro5/platform/alplatf.h ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tj...@us...> - 2010-12-06 00:04:27
|
Revision: 14065 http://alleg.svn.sourceforge.net/alleg/?rev=14065&view=rev Author: tjaden Date: 2010-12-06 00:04:20 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Automatically add the version numbers on generated pkg-config files. Remove the version numbers on the source template files. Derive the ALLEGRO_DLL_SHORTVER automatically from the ALLEGRO_VERSION. It isn't used at this time, though. Thanks to Michael Swiger for the reminder. Modified Paths: -------------- allegro/branches/5.1/CMakeLists.txt Added Paths: ----------- allegro/branches/5.1/misc/allegro.pc.in allegro/branches/5.1/misc/allegro_acodec.pc.in allegro/branches/5.1/misc/allegro_audio.pc.in allegro/branches/5.1/misc/allegro_color.pc.in allegro/branches/5.1/misc/allegro_dialog.pc.in allegro/branches/5.1/misc/allegro_font.pc.in allegro/branches/5.1/misc/allegro_image.pc.in allegro/branches/5.1/misc/allegro_main.pc.in allegro/branches/5.1/misc/allegro_memfile.pc.in allegro/branches/5.1/misc/allegro_physfs.pc.in allegro/branches/5.1/misc/allegro_primitives.pc.in allegro/branches/5.1/misc/allegro_ttf.pc.in Removed Paths: ------------- allegro/branches/5.1/misc/allegro-5.0.pc.in allegro/branches/5.1/misc/allegro_acodec-5.0.pc.in allegro/branches/5.1/misc/allegro_audio-5.0.pc.in allegro/branches/5.1/misc/allegro_color-5.0.pc.in allegro/branches/5.1/misc/allegro_dialog-5.0.pc.in allegro/branches/5.1/misc/allegro_font-5.0.pc.in allegro/branches/5.1/misc/allegro_image-5.0.pc.in allegro/branches/5.1/misc/allegro_main-5.0.pc.in allegro/branches/5.1/misc/allegro_memfile-5.0.pc.in allegro/branches/5.1/misc/allegro_physfs-5.0.pc.in allegro/branches/5.1/misc/allegro_primitives-5.0.pc.in allegro/branches/5.1/misc/allegro_ttf-5.0.pc.in Modified: allegro/branches/5.1/CMakeLists.txt =================================================================== --- allegro/branches/5.1/CMakeLists.txt 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/CMakeLists.txt 2010-12-06 00:04:20 UTC (rev 14065) @@ -31,7 +31,7 @@ set(ALLEGRO_VERSION 5.1.0) string(REGEX MATCH "^[0-9]+[.][0-9]+" ALLEGRO_SOVERSION ${ALLEGRO_VERSION}) -set(ALLEGRO_DLL_SHORTVER 50) +string(REPLACE "." "" ALLEGRO_DLL_SHORTVER ${ALLEGRO_SOVERSION}) # Search in the `cmake' directory for additional CMake modules. list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) @@ -886,14 +886,14 @@ foreach(name ${PKG_CONFIG_FILES}) if (SHARED) - set(outname ${name}${lib_type}-5.0.pc) + set(outname ${name}${lib_type}-${ALLEGRO_SOVERSION}.pc) else (SHARED) # For static linking: get extra libraries to link with. get_target_property(link_with ${name} static_link_with) - set(outname ${name}${lib_type}-static-5.0.pc) + set(outname ${name}${lib_type}-static-${ALLEGRO_SOVERSION}.pc) endif (SHARED) configure_file( - misc/${name}-5.0.pc.in + misc/${name}.pc.in ${LIBRARY_OUTPUT_PATH}/pkgconfig/${outname} @ONLY ) Deleted: allegro/branches/5.1/misc/allegro-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,14 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro -Description: Allegro game programming library -Version: ${version} -Libs: -L${libdir} -lallegro${suffix} -Libs.private: @link_with@ -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro +Description: Allegro game programming library +Version: ${version} +Libs: -L${libdir} -lallegro${suffix} +Libs.private: @link_with@ +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_acodec-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_acodec-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_acodec-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_acodec -Description: Allegro game programming library, audio codec addon -Version: ${version} -Libs: -L${libdir} -lallegro_acodec${suffix} -Libs.private: @link_with@ -Requires: allegro_audio${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_acodec.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_acodec-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_acodec.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_acodec.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_acodec +Description: Allegro game programming library, audio codec addon +Version: ${version} +Libs: -L${libdir} -lallegro_acodec${suffix} +Libs.private: @link_with@ +Requires: allegro_audio${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_audio-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_audio-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_audio-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_audio -Description: Allegro game programming library, audio addon -Version: ${version} -Libs: -L${libdir} -lallegro_audio${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_audio.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_audio-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_audio.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_audio.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_audio +Description: Allegro game programming library, audio addon +Version: ${version} +Libs: -L${libdir} -lallegro_audio${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_color-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_color-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_color-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_color -Description: Allegro game programming library, colors addon -Version: ${version} -Libs: -L${libdir} -lallegro_color${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_color.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_color-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_color.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_color.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_color +Description: Allegro game programming library, colors addon +Version: ${version} +Libs: -L${libdir} -lallegro_color${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_dialog-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_dialog-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_dialog-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_dialog -Description: Allegro game programming library, native dialog addon -Version: ${version} -Libs: -L${libdir} -lallegro_dialog${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_dialog.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_dialog-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_dialog.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_dialog.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_dialog +Description: Allegro game programming library, native dialog addon +Version: ${version} +Libs: -L${libdir} -lallegro_dialog${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_font-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_font-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_font-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_font -Description: Allegro game programming library, font addon -Version: ${version} -Libs: -L${libdir} -lallegro_font${suffix} -Libs.private: @link_with@ -Requires: allegro_primitives${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_font.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_font-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_font.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_font.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_font +Description: Allegro game programming library, font addon +Version: ${version} +Libs: -L${libdir} -lallegro_font${suffix} +Libs.private: @link_with@ +Requires: allegro_primitives${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_image-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_image-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_image-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_image -Description: Allegro game programming library, image I/O addon -Version: ${version} -Libs: -L${libdir} -lallegro_image${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_image.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_image-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_image.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_image.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_image +Description: Allegro game programming library, image I/O addon +Version: ${version} +Libs: -L${libdir} -lallegro_image${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_main-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_main-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_main-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_main -Description: Allegro game programming library, magic main addon -Version: ${version} -Libs: -L${libdir} -lallegro_main${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_main.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_main-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_main.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_main.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_main +Description: Allegro game programming library, magic main addon +Version: ${version} +Libs: -L${libdir} -lallegro_main${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_memfile-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_memfile-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_memfile-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_memfile -Description: Allegro game programming library, memory files addon -Version: ${version} -Libs: -L${libdir} -lallegro_memfile${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_memfile.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_memfile-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_memfile.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_memfile.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_memfile +Description: Allegro game programming library, memory files addon +Version: ${version} +Libs: -L${libdir} -lallegro_memfile${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_physfs-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_physfs-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_physfs-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_physfs -Description: Allegro game programming library, PhysicsFS addon -Version: ${version} -Libs: -L${libdir} -lallegro_physfs${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_physfs.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_physfs-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_physfs.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_physfs.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_physfs +Description: Allegro game programming library, PhysicsFS addon +Version: ${version} +Libs: -L${libdir} -lallegro_physfs${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_primitives-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_primitives-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_primitives-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_primitives -Description: Allegro game programming library, primitives addon -Version: ${version} -Libs: -L${libdir} -lallegro_primitives${suffix} -Libs.private: @link_with@ -Requires: allegro${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_primitives.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_primitives-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_primitives.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_primitives.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_primitives +Description: Allegro game programming library, primitives addon +Version: ${version} +Libs: -L${libdir} -lallegro_primitives${suffix} +Libs.private: @link_with@ +Requires: allegro${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} Deleted: allegro/branches/5.1/misc/allegro_ttf-5.0.pc.in =================================================================== --- allegro/branches/5.1/misc/allegro_ttf-5.0.pc.in 2010-12-05 21:49:02 UTC (rev 14064) +++ allegro/branches/5.1/misc/allegro_ttf-5.0.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -1,15 +0,0 @@ -prefix=@prefix@ -exec_prefix=${prefix} -libdir=@libdir@ -includedir=@includedir@ -version=@ALLEGRO_VERSION@ -soversion=@ALLEGRO_SOVERSION@ -suffix=@lib_type@@lib_linkage@ - -Name: allegro_ttf -Description: Allegro game programming library, TrueType fonts addon -Version: ${version} -Libs: -L${libdir} -lallegro_ttf${suffix} -Libs.private: @link_with@ -Requires: allegro_font${suffix}-${soversion} >= ${version} -Cflags: -I${includedir} Copied: allegro/branches/5.1/misc/allegro_ttf.pc.in (from rev 14064, allegro/branches/5.1/misc/allegro_ttf-5.0.pc.in) =================================================================== --- allegro/branches/5.1/misc/allegro_ttf.pc.in (rev 0) +++ allegro/branches/5.1/misc/allegro_ttf.pc.in 2010-12-06 00:04:20 UTC (rev 14065) @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=${prefix} +libdir=@libdir@ +includedir=@includedir@ +version=@ALLEGRO_VERSION@ +soversion=@ALLEGRO_SOVERSION@ +suffix=@lib_type@@lib_linkage@ + +Name: allegro_ttf +Description: Allegro game programming library, TrueType fonts addon +Version: ${version} +Libs: -L${libdir} -lallegro_ttf${suffix} +Libs.private: @link_with@ +Requires: allegro_font${suffix}-${soversion} >= ${version} +Cflags: -I${includedir} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Thomas F. <th...@fj...> - 2010-12-06 00:08:35
|
On December 5, 2010, tj...@us... wrote: > Revision: 14065 > http://alleg.svn.sourceforge.net/alleg/?rev=14065&view=rev > Author: tjaden > Date: 2010-12-06 00:04:20 +0000 (Mon, 06 Dec 2010) > > Log Message: > ----------- > Automatically add the version numbers on generated pkg-config files. > Remove the version numbers on the source template files. > > Derive the ALLEGRO_DLL_SHORTVER automatically from the ALLEGRO_VERSION. > It isn't used at this time, though. > > Thanks to Michael Swiger for the reminder. > I wonder if the .pc files shouldn't keep the -v.v suffix. Now if you have 5.0 and 5.1 installed, one of them is going to overwrite the other isn't it? -- Thomas Fjellstrom th...@fj... |
From: Thomas F. <th...@fj...> - 2010-12-06 00:11:03
|
On December 5, 2010, Thomas Fjellstrom wrote: > On December 5, 2010, tj...@us... wrote: > > Revision: 14065 > > > > http://alleg.svn.sourceforge.net/alleg/?rev=14065&view=rev > > > > Author: tjaden > > Date: 2010-12-06 00:04:20 +0000 (Mon, 06 Dec 2010) > > > > Log Message: > > ----------- > > Automatically add the version numbers on generated pkg-config files. > > Remove the version numbers on the source template files. > > > > Derive the ALLEGRO_DLL_SHORTVER automatically from the ALLEGRO_VERSION. > > It isn't used at this time, though. > > > > Thanks to Michael Swiger for the reminder. > > I wonder if the .pc files shouldn't keep the -v.v suffix. Now if you have > 5.0 and 5.1 installed, one of them is going to overwrite the other isn't > it? Hah. I'm stupid. Nevermind. also sent to the wrong list. awesomesauce. -- Thomas Fjellstrom th...@fj... |
From: Peter W. <nov...@gm...> - 2010-12-06 00:13:23
|
On 2010-12-05, Thomas Fjellstrom <th...@fj...> wrote: > On December 5, 2010, tj...@us... wrote: > > Revision: 14065 > > http://alleg.svn.sourceforge.net/alleg/?rev=14065&view=rev > > Author: tjaden > > Date: 2010-12-06 00:04:20 +0000 (Mon, 06 Dec 2010) > > > > Log Message: > > ----------- > > Automatically add the version numbers on generated pkg-config files. > > Remove the version numbers on the source template files. > > > > Derive the ALLEGRO_DLL_SHORTVER automatically from the ALLEGRO_VERSION. > > It isn't used at this time, though. > > > > Thanks to Michael Swiger for the reminder. > > > > I wonder if the .pc files shouldn't keep the -v.v suffix. Now if you have 5.0 and > 5.1 installed, one of them is going to overwrite the other isn't it? The version suffixes are only removed on the .pc.in template files. The .pc files which are generated and installed still have the suffixes. Peter |
From: <th...@us...> - 2010-12-06 10:28:38
|
Revision: 14069 http://alleg.svn.sourceforge.net/alleg/?rev=14069&view=rev Author: thedmd Date: 2010-12-06 10:28:32 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Add double linked list implementation. Modified Paths: -------------- allegro/branches/5.1/cmake/FileList.cmake Added Paths: ----------- allegro/branches/5.1/include/allegro5/internal/aintern_list.h allegro/branches/5.1/src/list.c Modified: allegro/branches/5.1/cmake/FileList.cmake =================================================================== --- allegro/branches/5.1/cmake/FileList.cmake 2010-12-06 02:56:46 UTC (rev 14068) +++ allegro/branches/5.1/cmake/FileList.cmake 2010-12-06 10:28:32 UTC (rev 14069) @@ -15,6 +15,7 @@ src/fshook.c src/fshook_stdio.c src/inline.c + src/list.c src/joynu.c src/keybdnu.c src/libc.c @@ -228,6 +229,7 @@ include/allegro5/internal/aintern_events.h include/allegro5/internal/aintern_float.h include/allegro5/internal/aintern_fshook.h + include/allegro5/internal/aintern_list.h include/allegro5/internal/aintern_joystick.h include/allegro5/internal/aintern_keyboard.h include/allegro5/internal/aintern_mouse.h Added: allegro/branches/5.1/include/allegro5/internal/aintern_list.h =================================================================== --- allegro/branches/5.1/include/allegro5/internal/aintern_list.h (rev 0) +++ allegro/branches/5.1/include/allegro5/internal/aintern_list.h 2010-12-06 10:28:32 UTC (rev 14069) @@ -0,0 +1,75 @@ +#ifndef __al_included_allegro5_aintern_list_h +#define __al_included_allegro5_aintern_list_h + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct __AL_LIST _AL_LIST; +typedef struct __AL_LIST_ITEM _AL_LIST_ITEM; + +typedef void (*_AL_LIST_DTOR)(void* userdata); +typedef void (*_AL_LIST_ITEM_DTOR)(void* value, void* userdata); + +AL_FUNC(_AL_LIST*, _al_list_create, (void)); +AL_FUNC(_AL_LIST*, _al_list_create_static, (size_t capacity)); +AL_FUNC(void, _al_list_destroy, (_AL_LIST* list)); + +AL_FUNC(void, _al_list_set_dtor, (_AL_LIST* list, _AL_LIST_DTOR dtor)); +AL_FUNC(_AL_LIST_DTOR, _al_list_get_dtor, (_AL_LIST* list)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_push_front, (_AL_LIST* list, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_push_front_ex, (_AL_LIST* list, void* data, _AL_LIST_ITEM_DTOR dtor)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_push_back, (_AL_LIST* list, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_push_back_ex, (_AL_LIST* list, void* data, _AL_LIST_ITEM_DTOR dtor)); + +AL_FUNC(void, _al_list_pop_front, (_AL_LIST* list)); +AL_FUNC(void, _al_list_pop_back, (_AL_LIST* list)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_insert_after, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_insert_after_ex, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data, _AL_LIST_ITEM_DTOR dtor)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_insert_before, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_insert_before_ex, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data, _AL_LIST_ITEM_DTOR dtor)); + +AL_FUNC(void, _al_list_erase, (_AL_LIST* list, _AL_LIST_ITEM* item)); + +AL_FUNC(void, _al_list_clear, (_AL_LIST* list)); + +AL_FUNC(void, _al_list_remove, (_AL_LIST* list, void* data)); + +AL_FUNC(bool, _al_list_is_empty, (_AL_LIST* list)); + +AL_FUNC(bool, _al_list_contains, (_AL_LIST* list, void* data)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_find_first, (_AL_LIST* list, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_find_last, (_AL_LIST* list, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_find_after, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_find_before, (_AL_LIST* list, _AL_LIST_ITEM* where, void* data)); + +AL_FUNC(size_t, _al_list_size, (_AL_LIST* list)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_at, (_AL_LIST* list, size_t index)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_front, (_AL_LIST* list)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_back, (_AL_LIST* list)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_next, (_AL_LIST* list, _AL_LIST_ITEM* item)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_previous, (_AL_LIST* list, _AL_LIST_ITEM* item)); + +AL_FUNC(_AL_LIST_ITEM*, _al_list_next_circular, (_AL_LIST* list, _AL_LIST_ITEM* item)); +AL_FUNC(_AL_LIST_ITEM*, _al_list_previous_circular, (_AL_LIST* list, _AL_LIST_ITEM* item)); + +AL_FUNC(void*, _al_list_item_data, (_AL_LIST_ITEM* item)); + +AL_FUNC(void, _al_list_item_set_dtor, (_AL_LIST_ITEM* item, _AL_LIST_ITEM_DTOR dtor)); +AL_FUNC(_AL_LIST_ITEM_DTOR, _al_list_item_get_dtor, (_AL_LIST_ITEM* item)); + +AL_FUNC(void, _al_list_set_user_data, (_AL_LIST* list, void* user_data)); +AL_FUNC(void*, _al_list_get_user_data, (_AL_LIST* list)); + + +#ifdef __cplusplus +} +#endif + +#endif Added: allegro/branches/5.1/src/list.c =================================================================== --- allegro/branches/5.1/src/list.c (rev 0) +++ allegro/branches/5.1/src/list.c 2010-12-06 10:28:32 UTC (rev 14069) @@ -0,0 +1,776 @@ +/* ______ ___ ___ + * /\ _ \ /\_ \ /\_ \ + * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ + * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ + * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ + * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ + * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ + * /\____/ + * \_/__/ + * + * Double linked list. + * + * By Micha\xB3 Cicho\xF1. + * + * See readme.txt for copyright information. + * + * + * This is a simple general purpose double linked list. + * + * This module is NOT thread-safe. + */ + +/* Internal Title: Lists + */ + + +#include <stdlib.h> +#include <string.h> + +#include "allegro5/allegro.h" +#include "allegro5/internal/aintern.h" +#include "allegro5/internal/aintern_list.h" + + +ALLEGRO_DEBUG_CHANNEL("list") + + +/* Definition of list, holds root and size. */ +typedef struct __AL_LIST { + /* Root of the list. It is an element, but + * not visible one. Using it end and the + * beginning can be easily identified. */ + _AL_LIST_ITEM* root; + size_t size; + size_t capacity; + size_t item_size; + size_t item_size_with_extra; + _AL_LIST_ITEM* next_free; + void* user_data; + _AL_LIST_DTOR dtor; +} __AL_LIST; + +/* List item, holds user data and destructor. */ +typedef struct __AL_LIST_ITEM { + _AL_LIST* list; + _AL_LIST_ITEM* next; + _AL_LIST_ITEM* prev; + void* data; + _AL_LIST_ITEM_DTOR dtor; +} __AL_LIST_ITEM; + + +/* List of the internal functions. */ +static _AL_LIST* __al_list_do_create(size_t capacity, size_t item_extra_size); +static bool __al_list_is_static(_AL_LIST* list); + +static _AL_LIST_ITEM* __al_list_get_free_item(_AL_LIST* list); +static _AL_LIST_ITEM* __al_list_create_item(_AL_LIST* list); +static void __al_list_destroy_item(_AL_LIST* list, _AL_LIST_ITEM* item); + +static _AL_LIST_ITEM_DTOR* __al_list_item_dtor(_AL_LIST* list, _AL_LIST_ITEM* item); + + +/* Internal function: __al_list_do_create + * + * Create an instance of double linked list. + * + * Parameters: + * capacity [in] + * Maximum number of elements list can hold. If it is zero, list is + * created as fully dynamic linked list with unlimited item count. + * For any other positive number static linked list is created, + * memory for all elements is allocated once and then used. + * + * extra_item_size [in] + * Number of extra bytes which should be left after each list item. + * It is currently not used, so default value is zero. + * + * Returns: + * Pointer to new instance of double linked list. + * + * Remarks: + * There are two kind of double linked list supported: dynamic and static. + * For dynamic linked list each item is allocated while adding and freed + * while removing. This kind of list does not have capacity limit but + * suffer from memory allocation delay. + * Static linked list use one memory allocation and are hold as solid + * piece of memory. This kind of list have capacity, but adding and + * removing elements is very cheap operation. + */ +static _AL_LIST* __al_list_do_create(size_t capacity, size_t extra_item_size) +{ + size_t i; + size_t memory_size; + uint8_t* memory_ptr; + _AL_LIST* list = NULL; + _AL_LIST_ITEM* item = NULL; + _AL_LIST_ITEM* prev = NULL; + + + /* Calculate amount of memory needed for the list. + * Always at least one element is allocated together with list, + * which is intended to be a root. + */ + memory_size = sizeof(_AL_LIST) + (capacity + 1) * (sizeof(_AL_LIST_ITEM) + extra_item_size); + + memory_ptr = (uint8_t*)al_malloc(memory_size); + if (NULL == memory_ptr) { + ALLEGRO_ERROR("Out of memory."); + return NULL; + } + + list = (_AL_LIST*)memory_ptr; + memory_ptr += sizeof(_AL_LIST); + list->size = 0; + list->capacity = capacity; + list->item_size = sizeof(_AL_LIST_ITEM); + list->item_size_with_extra = sizeof(_AL_LIST_ITEM) + extra_item_size; + list->next_free = (_AL_LIST_ITEM*)memory_ptr; + list->user_data = NULL; + list->dtor = NULL; + + /* Initialize free item list. + */ + prev = NULL; + item = list->next_free; + for (i = 0; i <= list->capacity; ++i) { + + memory_ptr += list->item_size_with_extra; + item->list = list; + item->next = (_AL_LIST_ITEM*)memory_ptr; + prev = item; + item = item->next; + } + + /* Set proper free list tail value. */ + prev->next = NULL; + + /* Initialize root. */ + list->root = __al_list_get_free_item(list); + list->root->dtor = NULL; + list->root->next = list->root; + list->root->prev = list->root; + + return list; +} + + +/* Internal function: __al_list_is_static + * + * Returns true if 'list' point to static double linked list. + */ +static bool __al_list_is_static(_AL_LIST* list) +{ + return 0 != list->capacity; +} + + +/* Internal function: __al_list_get_free_item + * + * Returns free item from internal list. Call to this function + * is valid only for static lists. + */ +static _AL_LIST_ITEM* __al_list_get_free_item(_AL_LIST* list) +{ + _AL_LIST_ITEM* item; + + assert(__al_list_is_static(list)); + + item = list->next_free; + if (NULL != item) + list->next_free = item->next; + + return item; +} + + +/* Internal function: __al_list_create_item + * + * Create an instance of new double linked list item. + */ +static _AL_LIST_ITEM* __al_list_create_item(_AL_LIST* list) +{ + _AL_LIST_ITEM* item = NULL; + + if (__al_list_is_static(list)) { + + /* Items from internal list already are partially initialized. + * So we do not have to setup list pointer. + */ + item = __al_list_get_free_item(list); + } + else { + + item = (_AL_LIST_ITEM*)al_malloc(list->item_size_with_extra); + + item->list = list; + } + + return item; +} + + +/* Internal function: __al_list_destroy_item + * + * Destroys double linked list item. Item destructor is called + * when necessary. + */ +static void __al_list_destroy_item(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + assert(list == item->list); + + if (NULL != item->dtor) + item->dtor(item->data, list->user_data); + + if (__al_list_is_static(list)) { + item->next = list->next_free; + list->next_free = item; + } + else + al_free(item); +} + + +/* Internal function: _al_list_create + * + * Create new instance of dynamic double linked list. + * + * See: + * __al_list_do_create + */ +_AL_LIST* _al_list_create(void) +{ + return __al_list_do_create(0, 0); +} + + +/* Internal function: _al_list_create_static + * + * Create new instance of list item. Maximum number of list items is + * limited by capacity. + * + * See: + * __al_list_do_create + */ +_AL_LIST* _al_list_create_static(size_t capacity) +{ + if (capacity < 1) { + + ALLEGRO_ERROR("Cannot create static list without any capacity."); + return NULL; + } + + return __al_list_do_create(capacity, 0); +} + + +/* Internal function: _al_list_destroy + * + * Destroys instance of the list. All elements + * that list contain are also destroyed. + */ +void _al_list_destroy(_AL_LIST* list) +{ + if (NULL == list) + return; + + if (list->dtor) + list->dtor(list->user_data); + + _al_list_clear(list); + + al_free(list); +} + + +/* Internal function: _al_list_set_dtor + * + * Sets a destructor for the list. + */ +void _al_list_set_dtor(_AL_LIST* list, _AL_LIST_DTOR dtor) +{ + list->dtor = dtor; +} + + +/* Internal function: _al_list_get_dtor + * + * Returns destructor of the list. + */ +_AL_LIST_DTOR _al_list_get_dtor(_AL_LIST* list) +{ + return list->dtor; +} + + +/* Internal function: _al_list_push_front + * + * Create and push new item at the beginning of the list. + * + * Returns pointer to new item. + */ +_AL_LIST_ITEM* _al_list_push_front(_AL_LIST* list, void* data) +{ + return _al_list_insert_after(list, list->root, data); +} + + +/* Internal function: _al_list_push_front_ex + * + * Pretty the same as _al_list_push_front(), but also allow + * to provide custom destructor for the item. + */ +_AL_LIST_ITEM* _al_list_push_front_ex(_AL_LIST* list, void* data, _AL_LIST_ITEM_DTOR dtor) +{ + return _al_list_insert_after_ex(list, list->root, data, dtor); +} + + +/* Internal function: _al_list_push_back + * + * Create and push new item at the end of the list. + * + * Returns pointer to new item. + */ +_AL_LIST_ITEM* _al_list_push_back(_AL_LIST* list, void* data) +{ + return _al_list_insert_before(list, list->root, data); +} + + +/* Internal function: _al_list_push_back_ex + * + * Pretty the same as _al_list_push_back(), but also allow + * to provide custom destructor for the item. + */ +_AL_LIST_ITEM* _al_list_push_back_ex(_AL_LIST* list, void* data, _AL_LIST_ITEM_DTOR dtor) +{ + return _al_list_insert_before_ex(list, list->root, data, dtor); +} + + +/* Internal function: _al_list_pop_front + * + * Remove first item in the list. + */ +void _al_list_pop_front(_AL_LIST* list) +{ + if (list->size > 0) + _al_list_erase(list, list->root->next); +} + + +/* Internal function: _al_list_pop_back + * + * Remove last item in the list. + */ +void _al_list_pop_back(_AL_LIST* list) +{ + if (list->size > 0) + _al_list_erase(list, list->root->prev); +} + + +/* Internal function: _al_list_insert_after + * + * Create and insert new item after one specified by 'where'. + * + * Returns pointer to new item. + */ +_AL_LIST_ITEM* _al_list_insert_after(_AL_LIST* list, _AL_LIST_ITEM* where, void* data) +{ + return _al_list_insert_after_ex(list, where, data, NULL); +} + + +/* Internal function: _al_list_insert_after_ex + * + * Pretty the same as _al_list_insert_after(), but also allow + * to provide custom destructor for the item. + */ +_AL_LIST_ITEM* _al_list_insert_after_ex(_AL_LIST* list, _AL_LIST_ITEM* where, void* data, _AL_LIST_ITEM_DTOR dtor) +{ + _AL_LIST_ITEM* item; + + assert(list == where->list); + + item = __al_list_create_item(list); + if (NULL == item) + return NULL; + + item->data = data; + item->dtor = dtor; + + item->prev = where; + item->next = where->next; + + where->next->prev = item; + where->next = item; + + list->size++; + + return item; +} + + +/* Internal function: _al_list_insert_before + * + * Create and insert new item before one specified by 'where'. + * + * Returns pointer to new item. + */ +_AL_LIST_ITEM* _al_list_insert_before(_AL_LIST* list, _AL_LIST_ITEM* where, void* data) +{ + return _al_list_insert_before_ex(list, where, data, NULL); +} + + +/* Internal function: _al_list_insert_before_ex + * + * Pretty the same as _al_list_insert_before(), but also allow + * to provide custom destructor for the item. + */ +_AL_LIST_ITEM* _al_list_insert_before_ex(_AL_LIST* list, _AL_LIST_ITEM* where, void* data, _AL_LIST_ITEM_DTOR dtor) +{ + _AL_LIST_ITEM* item; + + assert(list == where->list); + + item = __al_list_create_item(list); + if (NULL == item) + return NULL; + + item->data = data; + item->dtor = dtor; + + item->next = where; + item->prev = where->prev; + + where->prev->next = item; + where->prev = item; + + list->size++; + + return item; +} + + +/* Internal function: _al_list_erase + * + * Remove specified item from the list. + */ +void _al_list_erase(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + if (NULL == item) + return; + + assert(list == item->list); + + item->prev->next = item->next; + item->next->prev = item->prev; + + list->size--; + + __al_list_destroy_item(list, item); +} + + +/* Internal function: _al_list_clear + * + * Remove all items from the list. + */ +void _al_list_clear(_AL_LIST* list) +{ + _AL_LIST_ITEM* item; + _AL_LIST_ITEM* next; + + item = _al_list_front(list); + + while (NULL != item) { + + next = _al_list_next(list, item); + + _al_list_erase(list, item); + + item = next; + } +} + + +/* Internal function: _al_list_remove + * + * Remove all occurrences of specified value in the list. + */ +void _al_list_remove(_AL_LIST* list, void* data) +{ + _AL_LIST_ITEM* item = NULL; + _AL_LIST_ITEM* next = NULL; + + item = _al_list_find_first(list, data); + + while (NULL != item) { + + next = _al_list_find_after(list, item, data); + + _al_list_erase(list, item); + + item = next; + } +} + + +/* Internal function: _al_list_is_empty + * + * Returns true if list is empty. + */ +bool _al_list_is_empty(_AL_LIST* list) +{ + return 0 == list->size; +} + + +/* Internal function: _al_list_contains + * + * Returns true if list contain specified value. + */ +bool _al_list_contains(_AL_LIST* list, void* data) +{ + return NULL != _al_list_find_first(list, data); +} + + +/* Internal function: _al_list_find_first + * + * Returns first occurrence of specified value in the list. + */ +_AL_LIST_ITEM* _al_list_find_first(_AL_LIST* list, void* data) +{ + return _al_list_find_after(list, list->root, data); +} + + +/* Internal function: _al_list_find_last + * + * Returns last occurrence of specified value in the list. + */ +_AL_LIST_ITEM* _al_list_find_last(_AL_LIST* list, void* data) +{ + return _al_list_find_before(list, list->root, data); +} + + +/* Internal function: _al_list_find_after + * + * Return occurrence of specified value in the list after 'where' item. + */ +_AL_LIST_ITEM* _al_list_find_after(_AL_LIST* list, _AL_LIST_ITEM* where, void* data) +{ + _AL_LIST_ITEM* item; + + assert(list == where->list); + + for (item = where->next; item != list->root; item = item->next) + if (item->data == data) + return item; + + return NULL; +} + + +/* Internal function: _al_list_find_before + * + * Return occurrence of specified value in the list before 'where' item. + */ +_AL_LIST_ITEM* _al_list_find_before(_AL_LIST* list, _AL_LIST_ITEM* where, void* data) +{ + _AL_LIST_ITEM* item; + + assert(list == where->list); + + for (item = where->prev; item != list->root; item = item->prev) + if (item->data == data) + return item; + + return NULL; +} + + +/* Internal function: _al_list_size + * + * Returns current size of the list. + */ +size_t _al_list_size(_AL_LIST* list) +{ + return list->size; +} + + +/* Internal function: _al_list_at + * + * Returns item located at specified index. + */ +_AL_LIST_ITEM* _al_list_at(_AL_LIST* list, size_t index) +{ + if (index >= list->size) + return NULL; + + if (index < list->size / 2) { + + _AL_LIST_ITEM* item = list->root->next; + + while (index--) + item = item->next; + + return item; + } + else { + + _AL_LIST_ITEM* item = list->root->prev; + + index = list->size - index; + + while (index--) + item = item->prev; + + return item; + } +} + + +/* Internal function: _al_list_front + * + * Returns first item in the list. + */ +_AL_LIST_ITEM* _al_list_front(_AL_LIST* list) +{ + if (list->size > 0) + return list->root->next; + else + return NULL; +} + + +/* Internal function: _al_list_back + * + * Returns last item in the list. + */ +_AL_LIST_ITEM* _al_list_back(_AL_LIST* list) +{ + if (list->size > 0) + return list->root->prev; + else + return NULL; +} + + +/* Internal function: _al_list_next + * + * Returns next element in the list. + */ +_AL_LIST_ITEM* _al_list_next(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + assert(list == item->list); + + if (item->next != item->list->root) + return item->next; + else + return NULL; +} + + +/* Internal function: _al_list_previous + * + * Returns previous element in the list. + */ +_AL_LIST_ITEM* _al_list_previous(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + assert(list == item->list); + + if (item->prev != item->list->root) + return item->prev; + else + return NULL; +} + + +/* Internal function: _al_list_next_circular + * + * Returns next element in the list. If end of the list is reached, + * first element is returned instead of NULL. + */ +_AL_LIST_ITEM* _al_list_next_circular(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + assert(list == item->list); + + if (item->next != item->list->root) + return item->next; + else + return list->root->next; +} + + +/* Internal function: _al_list_previous_circular + * + * Returns previous element in the list. If beginning of the list is reached, + * last element is returned instead of NULL. + */ +_AL_LIST_ITEM* _al_list_previous_circular(_AL_LIST* list, _AL_LIST_ITEM* item) +{ + assert(list == item->list); + + if (item->prev != item->list->root) + return item->prev; + else + return list->root->prev; +} + + +/* Internal function: _al_list_item_data + * + * Returns value associated with specified item. + */ +void* _al_list_item_data(_AL_LIST_ITEM* item) +{ + return item->data; +} + + +/* Internal function: _al_list_item_set_dtor + * + * Sets item destructor. + */ +void _al_list_item_set_dtor(_AL_LIST_ITEM* item, _AL_LIST_ITEM_DTOR dtor) +{ + item->dtor = dtor; +} + + +/* Internal function: _al_list_item_get_dtor + * + * Returns item destructor. + */ +_AL_LIST_ITEM_DTOR _al_list_item_get_dtor(_AL_LIST_ITEM* item) +{ + return item->dtor; +} + + +/* Internal function: _al_list_set_user_data + * + * Sets user data for list. This pointer is passed to list destructor. + */ +void _al_list_set_user_data(_AL_LIST* list, void* user_data) +{ + list->user_data = user_data; +} + + +/* Internal function: _al_list_get_user_data + * + * Returns user data for list. + */ +void* _al_list_get_user_data(_AL_LIST* list) +{ + return list->user_data; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |