summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
401c6ca)
OS X requires the xlocale.h header to define locale_t:
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/newlocale.3.html
MinGW does not include implementations for newlocale() and uselocale().
Instead, use the previous approach using setlocale().
#include <stack>
#include <utility>
#include <vector>
#include <stack>
#include <utility>
#include <vector>
+#if defined(__APPLE__)
+#include <xlocale.h>
+#endif
#include "alpha_division_effect.h"
#include "alpha_multiplication_effect.h"
#include "alpha_division_effect.h"
#include "alpha_multiplication_effect.h"
{
// Save the current locale, and set it to C, so that we can output decimal
// numbers with printf and be sure to get them in the format mandated by GLSL.
{
// Save the current locale, and set it to C, so that we can output decimal
// numbers with printf and be sure to get them in the format mandated by GLSL.
+#if defined(__MINGW32__)
+ // Note that the OpenGL driver might call setlocale() behind-the-scenes,
+ // and that might corrupt the returned pointer, so we need to take our own
+ // copy of it here.
+ char *saved_locale = strdup(setlocale(LC_NUMERIC, NULL));
+ setlocale(LC_NUMERIC, "C");
+#else
locale_t c_locale = newlocale(LC_NUMERIC_MASK, "C", (locale_t)0);
locale_t saved_locale = uselocale(c_locale);
locale_t c_locale = newlocale(LC_NUMERIC_MASK, "C", (locale_t)0);
locale_t saved_locale = uselocale(c_locale);
// Output the graph as it is before we do any conversions on it.
output_dot("step0-start.dot");
// Output the graph as it is before we do any conversions on it.
output_dot("step0-start.dot");
assert(phases[0]->inputs.empty());
finalized = true;
assert(phases[0]->inputs.empty());
finalized = true;
+#if defined(__MINGW32__)
+ setlocale(LC_NUMERIC, saved_locale);
+ free(saved_locale);
+#else
uselocale(saved_locale);
freelocale(c_locale);
uselocale(saved_locale);
freelocale(c_locale);
}
void EffectChain::render_to_fbo(GLuint dest_fbo, unsigned width, unsigned height)
}
void EffectChain::render_to_fbo(GLuint dest_fbo, unsigned width, unsigned height)