Fix rgb byte order for GdkPixbuf backgrounds.
authorRay Strode <rstrode@redhat.com>
Fri, 19 Dec 2008 02:05:20 +0000 (21:05 -0500)
committerKristian Høgsberg <krh@redhat.com>
Fri, 19 Dec 2008 02:05:20 +0000 (21:05 -0500)
egl-compositor.c

index b24d4f2..5b6219d 100644 (file)
@@ -267,6 +267,7 @@ background_create(struct egl_compositor *ec,
        GError *error = NULL;
        int pixbuf_width, pixbuf_height;
        void *data;
+       GLenum format;
 
        background = malloc(sizeof *background);
        if (background == NULL)
@@ -290,8 +291,15 @@ background_create(struct egl_compositor *ec,
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+        if (gdk_pixbuf_get_has_alpha (pixbuf)) {
+               format = GL_RGBA;
+       } else {
+               format = GL_RGB;
+       }
+
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pixbuf_width, pixbuf_height, 0,
-                    GL_BGR, GL_UNSIGNED_BYTE, data);
+                    format, GL_UNSIGNED_BYTE, data);
 
        background->compositor = ec;
        background->map.x = 0;