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.
This commit is contained in:
Richard Grenville 2013-09-15 08:56:53 +08:00
parent 5da802634a
commit 926ae379ba
2 changed files with 10 additions and 0 deletions

View File

@ -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);
}

View File

@ -11,6 +11,7 @@
#include "common.h"
#include <ctype.h>
#include <locale.h>
#ifdef DEBUG_GLX_ERR