From 9c609b9b97eee09e975d96082ffab32543258251 Mon Sep 17 00:00:00 2001 From: Richard Grenville Date: Sun, 15 Sep 2013 08:56:53 +0800 Subject: Bug fix #143: GLSL shader error on European locales Set LC_NUMERIC=C when generating GLSL shader strings to avoid decimal point issues on European locales. Thanks to hiciu for reporting. --- opengl.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'opengl.c') diff --git a/opengl.c b/opengl.c index a26a286f4..33a2fc724 100644 --- a/opengl.c +++ b/opengl.c @@ -225,6 +225,11 @@ glx_init_blur(session_t *ps) { #ifdef CONFIG_VSYNC_OPENGL_GLSL { + char *lc_numeric_old = mstrcpy(setlocale(LC_NUMERIC, NULL)); + // Enforce LC_NUMERIC locale "C" here to make sure decimal point is sane + // Thanks to hiciu for reporting. + setlocale(LC_NUMERIC, "C"); + static const char *FRAG_SHADER_BLUR_PREFIX = "#version 110\n" "%s" @@ -331,6 +336,10 @@ glx_init_blur(session_t *ps) { #undef P_GET_UNIFM_LOC } free(extension); + + // Restore LC_NUMERIC + setlocale(LC_NUMERIC, lc_numeric_old); + free(lc_numeric_old); } -- cgit v1.2.3