Merge pull request #148 from xTibor/sdl-fix-alpha

sdl: Fix alpha handling
This commit is contained in:
Jeremy Soller 2018-05-01 10:09:09 -06:00 committed by GitHub
commit 90ed0920d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 76 deletions

View File

@ -15,48 +15,6 @@ diff -rupNw source-original/libnsfb/Makefile source/libnsfb/Makefile
# surfaces not detectable via pkg-config
NSFB_ABLE_AVAILABLE := no
diff -rupNw source-original/libnsfb/src/plot/32bpp-xbgr8888.c source/libnsfb/src/plot/32bpp-xbgr8888.c
--- source-original/libnsfb/src/plot/32bpp-xbgr8888.c 2017-10-16 12:09:35.000000000 +0200
+++ source/libnsfb/src/plot/32bpp-xbgr8888.c 2018-03-04 20:43:18.188956997 +0100
@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col
*/
static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
{
- return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8);
+ return ((c & 0xFF) << 24) | ((c & 0xFF00) << 8) | ((c & 0xFF0000) >> 8) | 0xFF;
}
#else
@@ -79,7 +79,7 @@ static inline nsfb_colour_t pixel_to_col
*/
static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
{
- return c;
+ return c | 0xFF000000;
}
#endif
diff -rupNw source-original/libnsfb/src/plot/32bpp-xrgb8888.c source/libnsfb/src/plot/32bpp-xrgb8888.c
--- source-original/libnsfb/src/plot/32bpp-xrgb8888.c 2017-10-16 12:09:35.000000000 +0200
+++ source/libnsfb/src/plot/32bpp-xrgb8888.c 2018-03-04 20:43:18.188956997 +0100
@@ -52,7 +52,7 @@ static inline nsfb_colour_t pixel_to_col
*/
static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
{
- return (c << 8);
+ return (c << 8) | 0xff;
}
#else
@@ -81,7 +81,7 @@ static inline nsfb_colour_t pixel_to_col
*/
static inline uint32_t colour_to_pixel(UNUSED nsfb_t *nsfb, nsfb_colour_t c)
{
- return ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16);
+ return 0xff000000 | ((c & 0xff0000) >> 16) | (c & 0xff00) | ((c & 0xff) << 16);
}
#endif
diff -rupNw source-original/libnsfb/src/plot.h source/libnsfb/src/plot.h
--- source-original/libnsfb/src/plot.h 2017-10-16 12:09:35.000000000 +0200
+++ source/libnsfb/src/plot.h 2018-03-04 20:43:18.188956997 +0100

View File

@ -43,15 +43,3 @@ diff -burpN source-original/src/SDL/i_video.c source/src/SDL/i_video.c
}
//
diff -burpN source-original/src/v_video.c source/src/v_video.c
--- source-original/src/v_video.c 2008-10-11 14:10:41.000000000 +0200
+++ source/src/v_video.c 2018-04-22 23:43:10.939034965 +0200
@@ -558,7 +558,7 @@ void V_UpdateTrueColorPalette(video_mode
ng = (int)(g*t+roundUpG);
nb = (int)(b*t+roundUpB);
Palettes32[((p*256+i)*VID_NUMCOLORWEIGHTS)+w] = (
- (nr<<16) | (ng<<8) | nb
+ (255<<24) | (nr<<16) | (ng<<8) | nb
);
}
}

View File

@ -1,6 +1,6 @@
diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config.sub
--- source-original/build-scripts/config.sub 2012-01-19 07:30:05.000000000 +0100
+++ source/build-scripts/config.sub 2018-04-23 17:03:35.533588029 +0200
+++ source/build-scripts/config.sub 2018-05-01 17:31:52.766229515 +0200
@@ -1276,7 +1276,7 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
@ -12,11 +12,11 @@ diff -rupNw source-original/build-scripts/config.sub source/build-scripts/config
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
diff -rupNw source-original/configure.in source/configure.in
--- source-original/configure.in 2012-01-19 07:30:05.000000000 +0100
+++ source/configure.in 2018-04-23 17:03:35.533588029 +0200
+++ source/configure.in 2018-05-01 17:31:52.770229654 +0200
@@ -1646,6 +1646,20 @@ AC_HELP_STRING([--enable-video-dummy], [
fi
}
+dnl Set up the Orbital video driver.
+CheckOrbitalVideo()
+{
@ -34,7 +34,7 @@ diff -rupNw source-original/configure.in source/configure.in
dnl Check to see if OpenGL support is desired
AC_ARG_ENABLE(video-opengl,
AC_HELP_STRING([--enable-video-opengl], [include OpenGL context creation [[default=yes]]]),
@@ -2325,10 +2338,11 @@ case "$host" in
@@ -2325,10 +2339,11 @@ case "$host" in
have_timers=yes
fi
;;
@ -47,7 +47,7 @@ diff -rupNw source-original/configure.in source/configure.in
*-*-kfreebsd*-gnu) ARCH=kfreebsd-gnu ;;
*-*-knetbsd*-gnu) ARCH=knetbsd-gnu ;;
*-*-kopenbsd*-gnu) ARCH=kopenbsd-gnu ;;
@@ -2347,6 +2361,7 @@ case "$host" in
@@ -2347,6 +2362,7 @@ case "$host" in
esac
CheckVisibilityHidden
CheckDummyVideo
@ -57,7 +57,7 @@ diff -rupNw source-original/configure.in source/configure.in
CheckDLOPEN
diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h.in
--- source-original/include/SDL_config.h.in 2012-01-19 07:30:05.000000000 +0100
+++ source/include/SDL_config.h.in 2018-04-23 17:03:35.533588029 +0200
+++ source/include/SDL_config.h.in 2018-05-01 17:31:52.770229654 +0200
@@ -268,6 +268,7 @@
#undef SDL_VIDEO_DRIVER_GGI
#undef SDL_VIDEO_DRIVER_IPOD
@ -68,7 +68,7 @@ diff -rupNw source-original/include/SDL_config.h.in source/include/SDL_config.h.
#undef SDL_VIDEO_DRIVER_PICOGUI
diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/video/orbital/SDL_orbitalevents.c
--- source-original/src/video/orbital/SDL_orbitalevents.c 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalevents.c 2018-04-25 01:53:33.077960454 +0200
+++ source/src/video/orbital/SDL_orbitalevents.c 2018-05-01 17:31:52.770229654 +0200
@@ -0,0 +1,198 @@
+/*
+ SDL - Simple DirectMedia Layer
@ -270,7 +270,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents.c source/src/vid
+/* end of SDL_orbitalevents.c ... */
diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/video/orbital/SDL_orbitalevents_c.h
--- source-original/src/video/orbital/SDL_orbitalevents_c.h 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-04-23 17:03:35.537588257 +0200
+++ source/src/video/orbital/SDL_orbitalevents_c.h 2018-05-01 17:31:52.770229654 +0200
@@ -0,0 +1,32 @@
+/*
+ SDL - Simple DirectMedia Layer
@ -306,7 +306,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalevents_c.h source/src/v
+/* end of SDL_orbitalevents_c.h ... */
diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/video/orbital/SDL_orbitalmouse.c
--- source-original/src/video/orbital/SDL_orbitalmouse.c 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-04-23 17:03:35.537588257 +0200
+++ source/src/video/orbital/SDL_orbitalmouse.c 2018-05-01 17:31:52.770229654 +0200
@@ -0,0 +1,33 @@
+/*
+ SDL - Simple DirectMedia Layer
@ -343,7 +343,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse.c source/src/vide
+};
diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/video/orbital/SDL_orbitalmouse_c.h
--- source-original/src/video/orbital/SDL_orbitalmouse_c.h 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-04-23 17:03:35.537588257 +0200
+++ source/src/video/orbital/SDL_orbitalmouse_c.h 2018-05-01 17:31:52.770229654 +0200
@@ -0,0 +1,26 @@
+/*
+ SDL - Simple DirectMedia Layer
@ -373,8 +373,8 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalmouse_c.h source/src/vi
+/* Functions to be exported */
diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/video/orbital/SDL_orbitalvideo.c
--- source-original/src/video/orbital/SDL_orbitalvideo.c 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-04-25 02:29:56.554079034 +0200
@@ -0,0 +1,248 @@
+++ source/src/video/orbital/SDL_orbitalvideo.c 2018-05-01 17:32:53.000320923 +0200
@@ -0,0 +1,250 @@
+/*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2012 Sam Lantinga
@ -554,7 +554,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide
+ fprintf(stderr, "Setting mode %dx%d@%d\n", width, height, bpp);
+
+ /* Allocate the new pixel format for the screen */
+ if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) {
+ if ( ! SDL_ReallocFormat(current, bpp, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000) ) {
+ orb_window_destroy(this->hidden->window);
+ this->hidden->window = NULL;
+
@ -602,8 +602,10 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide
+
+static void ORBITAL_UpdateRects(_THIS, int numrects, SDL_Rect *rects)
+{
+ if (this->hidden->window)
+ if (this->hidden->window) {
+ SDL_SetAlphaChannel(this->screen, SDL_ALPHA_OPAQUE);
+ orb_window_sync(this->hidden->window);
+ }
+}
+
+int ORBITAL_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
@ -625,7 +627,7 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.c source/src/vide
+}
diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/video/orbital/SDL_orbitalvideo.h
--- source-original/src/video/orbital/SDL_orbitalvideo.h 1970-01-01 01:00:00.000000000 +0100
+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-04-23 17:04:31.224570535 +0200
+++ source/src/video/orbital/SDL_orbitalvideo.h 2018-05-01 17:31:52.770229654 +0200
@@ -0,0 +1,39 @@
+/*
+ SDL - Simple DirectMedia Layer
@ -668,20 +670,20 @@ diff -rupNw source-original/src/video/orbital/SDL_orbitalvideo.h source/src/vide
+#endif /* _SDL_orbitalvideo_h */
diff -rupNw source-original/src/video/SDL_gamma.c source/src/video/SDL_gamma.c
--- source-original/src/video/SDL_gamma.c 2012-01-19 07:30:06.000000000 +0100
+++ source/src/video/SDL_gamma.c 2018-04-23 17:03:35.537588257 +0200
+++ source/src/video/SDL_gamma.c 2018-05-01 17:31:52.770229654 +0200
@@ -35,6 +35,9 @@
#define log(x) __ieee754_log(x)
#endif
+#include "e_log.h"
+#define log(x) __ieee754_log(x)
+
#include "SDL_sysvideo.h"
diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvideo.h
--- source-original/src/video/SDL_sysvideo.h 2012-01-19 07:30:06.000000000 +0100
+++ source/src/video/SDL_sysvideo.h 2018-04-23 17:03:35.537588257 +0200
+++ source/src/video/SDL_sysvideo.h 2018-05-01 17:31:52.770229654 +0200
@@ -410,6 +410,9 @@ extern VideoBootStrap AALIB_bootstrap;
#if SDL_VIDEO_DRIVER_CACA
extern VideoBootStrap CACA_bootstrap;
@ -694,7 +696,7 @@ diff -rupNw source-original/src/video/SDL_sysvideo.h source/src/video/SDL_sysvid
#endif
diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c
--- source-original/src/video/SDL_video.c 2012-01-19 07:30:06.000000000 +0100
+++ source/src/video/SDL_video.c 2018-04-23 17:03:35.541588484 +0200
+++ source/src/video/SDL_video.c 2018-05-01 17:31:52.774229792 +0200
@@ -126,6 +126,9 @@ static VideoBootStrap *bootstrap[] = {
#if SDL_VIDEO_DRIVER_CACA
&CACA_bootstrap,
@ -712,6 +714,6 @@ diff -rupNw source-original/src/video/SDL_video.c source/src/video/SDL_video.c
- SDL_ClearSurface(mode);
+ // Causes blinking under Orbital
+ //SDL_ClearSurface(mode);
/* Now adjust the offsets to match the desired mode */
video->offset_x = (mode->w-width)/2;