--- deliantra/Deliantra-Client/pango-render.c 2009/11/26 07:19:11 1.16 +++ deliantra/Deliantra-Client/pango-render.c 2009/12/21 23:52:34 1.18 @@ -161,13 +161,12 @@ g_slice_free (glyph_info, g); } -static char *apple_nvidia_bug_buf; +static int apple_nvidia_bug_workaround; static void apple_nvidia_bug (int enable) { - g_slice_free1 (TC_WIDTH * TC_HEIGHT, apple_nvidia_bug_buf); - apple_nvidia_bug_buf = enable ? g_slice_alloc (TC_WIDTH * TC_HEIGHT) : 0; + apple_nvidia_bug_workaround = enable; } static void @@ -175,13 +174,13 @@ { glBindTexture (GL_TEXTURE_2D, name); - if (!apple_nvidia_bug_buf) + if (!apple_nvidia_bug_workaround) { glPixelStorei (GL_UNPACK_ROW_LENGTH, stride); - glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + /*glPixelStorei (GL_UNPACK_ALIGNMENT, 1); expected cfplus default */ glTexSubImage2D (GL_TEXTURE_2D, 0, x, y, w, h, GL_ALPHA, GL_UNSIGNED_BYTE, bm); + /*glPixelStorei (GL_UNPACK_ALIGNMENT, 4);*/ glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei (GL_UNPACK_ALIGNMENT, 4); } else { @@ -190,12 +189,12 @@ /* reading/patching/uploading the full texture one each change */ int r; - glGetTexImage (GL_TEXTURE_2D, 0, GL_ALPHA, GL_UNSIGNED_BYTE, apple_nvidia_bug_buf); + glGetTexImage (GL_TEXTURE_2D, 0, GL_ALPHA, GL_UNSIGNED_BYTE, tc_temptile); for (r = 0; r < h; ++r) - memcpy ((char *)apple_nvidia_bug_buf + (y + r) * TC_WIDTH + x, (char *)bm + r * stride, w); + memcpy (tc_temptile + (y + r) * TC_WIDTH + x, (char *)bm + r * stride, w); - glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA, TC_WIDTH, TC_HEIGHT, 0, GL_ALPHA, GL_UNSIGNED_BYTE, apple_nvidia_bug_buf); + glTexImage2D (GL_TEXTURE_2D, 0, GL_ALPHA, TC_WIDTH, TC_HEIGHT, 0, GL_ALPHA, GL_UNSIGNED_BYTE, tc_temptile); } }