summarylogtreecommitdiffstats
path: root/vo_gl_locale_fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'vo_gl_locale_fix.patch')
-rw-r--r--vo_gl_locale_fix.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/vo_gl_locale_fix.patch b/vo_gl_locale_fix.patch
new file mode 100644
index 000000000000..9489b4ea7633
--- /dev/null
+++ b/vo_gl_locale_fix.patch
@@ -0,0 +1,26 @@
+The generated output may use something other than "." for decimal
+point, which GLSL requires. This is caused by locale. C uses ".",
+so locale is temporaily set to "C" when sprinting floats.
+diff -Naur mplayer2.old/libvo/gl_common.c mplayer2/libvo/gl_common.c
+--- mplayer2.old/libvo/gl_common.c 2014-02-24 21:57:13.493418840 +0100
++++ mplayer2/libvo/gl_common.c 2014-02-24 22:00:25.136048921 +0100
+@@ -39,6 +39,7 @@
+ #include <ctype.h>
+ #include <stdbool.h>
+ #include <math.h>
++#include <locale.h>
+ #include "talloc.h"
+ #include "gl_common.h"
+ #include "old_vo_wrapper.h"
+@@ -823,7 +824,10 @@
+
+ static void replace_var_float(char **text, const char *name, float replace)
+ {
++ char *tmp = setlocale(LC_NUMERIC, NULL);
++ setlocale(LC_NUMERIC, "C");
+ char *s = talloc_asprintf(NULL, "%e", replace);
++ setlocale(LC_NUMERIC, tmp);
+ replace_var_str(text, name, s);
+ talloc_free(s);
+ }
+