diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index 414856794f..d51a8ea1c7 100644 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -1906,6 +1906,18 @@ eng_gl_surface_read_pixels(void *engine EINA_UNUSED, void *surface, { glReadPixels(x, y, w, h, GL_BGRA, GL_UNSIGNED_BYTE, pixels); done = (glGetError() == GL_NO_ERROR); +#ifdef WORDS_BIGENDIAN + if (done) + { + DATA32 *ptr = pixels; + int k; + for (k = w * h; k; --k) + { + const DATA32 v = *ptr; + *ptr++ = eina_swap32(v); + } + } +#endif } if (!done) @@ -1917,9 +1929,13 @@ eng_gl_surface_read_pixels(void *engine EINA_UNUSED, void *surface, for (k = w * h; k; --k) { const DATA32 v = *ptr; +#ifdef WORDS_BIGENDIAN + *ptr++ = (v << 24) | (v >> 8); +#else *ptr++ = (v & 0xFF00FF00) | ((v & 0x00FF0000) >> 16) | ((v & 0x000000FF) << 16); +#endif } }