[PATCH] screensaver: fix decoding of transparency in xpm files

Pekka Paalanen ppaalanen at gmail.com
Thu Sep 6 06:56:41 PDT 2012


On Thu,  6 Sep 2012 15:23:28 +0200
Philipp Brüschweiler <blei42 at gmail.com> wrote:

> Use 0 as transparent pixel. This is needed when using premultiplied
> alpha.
> ---
>  clients/wscreensaver-glue.c | 6 +++---
>  1 Datei geändert, 3 Zeilen hinzugefügt(+), 3 Zeilen entfernt(-)
> 
> diff --git a/clients/wscreensaver-glue.c b/clients/wscreensaver-glue.c
> index a548599..55d0a8c 100644
> --- a/clients/wscreensaver-glue.c
> +++ b/clients/wscreensaver-glue.c
> @@ -80,14 +80,14 @@ read_xpm_color(uint32_t *ctable, const char *line)
>  	value = strtol(&cstr[1], &end, 16);
>  
>  	if (strcmp(cstr, "None") == 0)
> -		ctable[key] = 0x00ffffff;
> +		ctable[key] = 0x00000000;
>  	else if (cstr[0] != '#' || !(cstr[1] != '\0' && *end == '\0')) {
>  		fprintf(stderr, "%s: error interpreting XPM color '%s'\n",
>  			progname, cstr);
>  		return;
> +	} else {
> +		ctable[key] = value | 0xff000000;
>  	}
> -
> -	ctable[key] = value | 0xff000000;
>  }
>  
>  static void

You wanted None decoded as transparent instead of opaque here. Should
work either way, glmatrix doesn't really use it, IIRC (takes alpha from
green channel).

I trust you tried weston-screensaver and it still looks the same, so ok
by me.


Thanks,
pq


More information about the wayland-devel mailing list