Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/sdl/Makefile,v
retrieving revision 1.94
diff -u -p -r1.94 Makefile
--- Makefile 15 Dec 2013 01:57:55 -0000 1.94
+++ Makefile 15 Dec 2013 03:05:29 -0000
@@ -5,7 +5,7 @@ COMMENT= cross-platform multimedia libra
VERSION= 1.2.15
DISTNAME= SDL-${VERSION}
PKGNAME= ${DISTNAME:L}
-REVISION= 4
+REVISION= 5
CATEGORIES= devel
MASTER_SITES= ${HOMEPAGE}release/
Index: patches/patch-src_video_SDL_blit_N_c
===================================================================
RCS file: /cvs/ports/devel/sdl/patches/patch-src_video_SDL_blit_N_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_video_SDL_blit_N_c
--- patches/patch-src_video_SDL_blit_N_c 2 Mar 2012 09:10:38 -0000
1.1
+++ patches/patch-src_video_SDL_blit_N_c 15 Dec 2013 03:05:29 -0000
@@ -1,9 +1,10 @@
$OpenBSD: patch-src_video_SDL_blit_N_c,v 1.1 2012/03/02 09:10:38 dcoppa Exp $
-Fixed bug 1424 - Handling of alpha channel in Altivec accelerated blit
functions
+- Fixed bug 1424 - Handling of alpha channel in Altivec accelerated blit
functions
+- Use fast path for RGB 565 -> 32-bit XRGB 8888
---- src/video/SDL_blit_N.c.orig Wed Feb 22 19:36:49 2012
-+++ src/video/SDL_blit_N.c Wed Feb 22 19:38:46 2012
+--- src/video/SDL_blit_N.c.orig Thu Jan 19 01:30:06 2012
++++ src/video/SDL_blit_N.c Thu Oct 25 21:57:48 2012
@@ -689,6 +689,8 @@ static void ConvertAltivec32to32_noprefetch(SDL_BlitIn
while ((UNALIGNED_PTR(dst)) && (width)) {
bits = *(src++);
@@ -40,3 +41,21 @@ Fixed bug 1424 - Handling of alpha chann
*(dst++) = MAKE8888(dstfmt, r, g, b, a);
extrawidth--;
}
+@@ -2299,13 +2307,13 @@ static const struct blit_table normal_blit_2[] = {
+ 2, NULL, Blit_RGB555_32Altivec, NO_ALPHA | COPY_ALPHA | SET_ALPHA },
+ #endif
+ { 0x0000F800,0x000007E0,0x0000001F, 4, 0x00FF0000,0x0000FF00,0x000000FF,
+- 0, NULL, Blit_RGB565_ARGB8888, SET_ALPHA },
++ 0, NULL, Blit_RGB565_ARGB8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA },
+ { 0x0000F800,0x000007E0,0x0000001F, 4, 0x000000FF,0x0000FF00,0x00FF0000,
+- 0, NULL, Blit_RGB565_ABGR8888, SET_ALPHA },
++ 0, NULL, Blit_RGB565_ABGR8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA },
+ { 0x0000F800,0x000007E0,0x0000001F, 4, 0xFF000000,0x00FF0000,0x0000FF00,
+- 0, NULL, Blit_RGB565_RGBA8888, SET_ALPHA },
++ 0, NULL, Blit_RGB565_RGBA8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA },
+ { 0x0000F800,0x000007E0,0x0000001F, 4, 0x0000FF00,0x00FF0000,0xFF000000,
+- 0, NULL, Blit_RGB565_BGRA8888, SET_ALPHA },
++ 0, NULL, Blit_RGB565_BGRA8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA },
+
+ /* Default for 16-bit RGB source, used if no other blitter matches */
+ { 0,0,0, 0, 0,0,0, 0, NULL, BlitNtoN, 0 }
Index: patches/patch-src_video_x11_SDL_x11wm_c
===================================================================
RCS file: patches/patch-src_video_x11_SDL_x11wm_c
diff -N patches/patch-src_video_x11_SDL_x11wm_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_video_x11_SDL_x11wm_c 15 Dec 2013 03:05:29 -0000
@@ -0,0 +1,96 @@
+$OpenBSD$
+
+Use _NET_WM_ICON if possible for X11's SDL_WM_SetIcon() implementation.
+
+--- src/video/x11/SDL_x11wm.c.orig Thu Oct 25 21:58:52 2012
++++ src/video/x11/SDL_x11wm.c Thu Oct 25 22:01:06 2012
+@@ -43,6 +43,7 @@ static Uint8 reverse_byte(Uint8 x)
+
+ void X11_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask)
+ {
++ Atom _NET_WM_ICON = XInternAtom(SDL_Display, "_NET_WM_ICON", False);
+ SDL_Surface *sicon;
+ XWMHints *wmhints;
+ XImage *icon_image;
+@@ -59,6 +60,81 @@ void X11_SetIcon(_THIS, SDL_Surface *icon, Uint8 *mask
+ int masksize;
+
+ SDL_Lock_EventThread();
++
++ if (_NET_WM_ICON) { /* better interface for modern systems. */
++ SDL_PixelFormat format;
++ SDL_Surface *surface;
++ int propsize;
++ long *propdata;
++
++ /* Convert the icon to ARGB for modern window managers */
++ SDL_memset(&format, 0, sizeof (format));
++ format.BitsPerPixel = 32;
++ format.BytesPerPixel = 4;
++ #if SDL_BYTEORDER == SDL_BIG_ENDIAN
++ format.Rshift = 8;
++ format.Gshift = 16;
++ format.Bshift = 24;
++ format.Ashift = 0;
++ #else
++ format.Rshift = 16;
++ format.Gshift = 8;
++ format.Bshift = 0;
++ format.Ashift = 24;
++ #endif
++ format.Rmask = 0xFF << format.Rshift;
++ format.Gmask = 0xFF << format.Gshift;
++ format.Bmask = 0xFF << format.Bshift;
++ format.Amask = 0xFF << format.Ashift;
++ format.alpha = SDL_ALPHA_OPAQUE;
++
++ surface = SDL_ConvertSurface(icon, &format, 0);
++ if (!surface) {
++ return;
++ }
++
++ /* Set the _NET_WM_ICON property */
++ propsize = 2 + (icon->w * icon->h);
++ propdata = SDL_malloc(propsize * sizeof(long));
++ if (propdata) {
++ const Uint32 alpha = format.Amask;
++ int x, y;
++ Uint32 *src;
++ long *dst;
++
++ propdata[0] = icon->w;
++ propdata[1] = icon->h;
++ dst = &propdata[2];
++
++ size_t maskidx = 0;
++ for (y = 0; y < icon->h; ++y) {
++ src = (Uint32*)((Uint8*)surface->pixels + y *
surface->pitch);
++ for (x = 0; x < icon->w; ++x) {
++ const Uint32 pixel = *(src++);
++ if (mask[maskidx / 8] & (1<<(7-(maskidx
% 8)))) {
++ *dst++ = pixel | alpha;
++ } else {
++ *dst++ = pixel & ~alpha;
++ }
++ maskidx++;
++ }
++ }
++
++ XChangeProperty(SDL_Display, WMwindow, _NET_WM_ICON,
XA_CARDINAL,
++ 32, PropModeReplace, (unsigned char *)
propdata,
++ propsize);
++ }
++
++ SDL_FreeSurface(surface);
++ SDL_free(propdata);
++
++ XFlush(SDL_Display);
++ SDL_Unlock_EventThread();
++
++ return;
++ }
++
++ /* Do it the old way... */
+
+ /* The icon must use the default visual, depth and colormap of the
+ screen, so it might need a conversion */