On Thu, Jun 25, 2015 at 2:05 PM, Erik Faye-Lund <kusmab...@gmail.com> wrote: > _mesa_strtod and _mesa_strtof are only used from the GLSL compiler and > the ARB_[vertex|fragment]_program code, meaning that the locale doesn't > need to be initialized before the first OpenGL context gets initialized. > > So let's use explicit initialization from the one-time init code instead > of depending on a C++ compiler to initialize at image-load time. > > Signed-off-by: Erik Faye-Lund <kusmab...@gmail.com> > Reviewed-by: Matt Turner <matts...@gmail.com> > --- > src/glsl/glcpp/glcpp.c | 3 ++ > src/glsl/main.cpp | 3 ++ > src/mesa/main/context.c | 3 ++ > src/util/Makefile.sources | 2 +- > src/util/strtod.c | 78 > +++++++++++++++++++++++++++++++++++++++++++++++ > src/util/strtod.cpp | 75 --------------------------------------------- > src/util/strtod.h | 3 ++ > 7 files changed, 91 insertions(+), 76 deletions(-) > create mode 100644 src/util/strtod.c > delete mode 100644 src/util/strtod.cpp > > diff --git a/src/glsl/glcpp/glcpp.c b/src/glsl/glcpp/glcpp.c > index 5144516..c62f4ef 100644 > --- a/src/glsl/glcpp/glcpp.c > +++ b/src/glsl/glcpp/glcpp.c > @@ -29,6 +29,7 @@ > #include "glcpp.h" > #include "main/mtypes.h" > #include "main/shaderobj.h" > +#include "util/strtod.h" > > extern int glcpp_parser_debug; > > @@ -168,6 +169,8 @@ main (int argc, char *argv[]) > if (shader == NULL) > return 1; > > + _mesa_locale_init(); > + > ret = glcpp_preprocess(ctx, &shader, &info_log, NULL, &gl_ctx); > > printf("%s", shader); > diff --git a/src/glsl/main.cpp b/src/glsl/main.cpp > index 2341298..58651df 100644 > --- a/src/glsl/main.cpp > +++ b/src/glsl/main.cpp > @@ -38,6 +38,7 @@ > #include "program/hash_table.h" > #include "loop_analysis.h" > #include "standalone_scaffolding.h" > +#include "util/strtod.h" > > static int glsl_version = 330; > > @@ -46,6 +47,8 @@ initialize_context(struct gl_context *ctx, gl_api api) > { > initialize_context_to_defaults(ctx, api); > > + _mesa_locale_init(); > + > /* The standalone compiler needs to claim support for almost > * everything in order to compile the built-in functions. > */ > diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c > index c4af8ea..e68de68 100644 > --- a/src/mesa/main/context.c > +++ b/src/mesa/main/context.c > @@ -120,6 +120,7 @@ > #include "shaderobj.h" > #include "shaderimage.h" > #include "util/simple_list.h" > +#include "util/strtod.h" > #include "state.h" > #include "stencil.h" > #include "texcompress_s3tc.h" > @@ -374,6 +375,8 @@ one_time_init( struct gl_context *ctx ) > assert( sizeof(GLint) == 4 ); > assert( sizeof(GLuint) == 4 ); > > + _mesa_locale_init(); > + > _mesa_one_time_init_extension_overrides(); > > _mesa_get_cpu_features(); > diff --git a/src/util/Makefile.sources b/src/util/Makefile.sources > index dc55939..82df3bc 100644 > --- a/src/util/Makefile.sources > +++ b/src/util/Makefile.sources > @@ -19,7 +19,7 @@ MESA_UTIL_FILES := \ > set.c \ > set.h \ > simple_list.h \ > - strtod.cpp \ > + strtod.c \ > strtod.h \ > texcompress_rgtc_tmp.h \ > u_atomic.h > diff --git a/src/util/strtod.c b/src/util/strtod.c > new file mode 100644 > index 0000000..e5e6f76 > --- /dev/null > +++ b/src/util/strtod.c > @@ -0,0 +1,78 @@ > +/* > + * Copyright 2010 VMware, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + */ > + > + > +#include <stdlib.h> > + > +#ifdef _GNU_SOURCE > +#include <locale.h> > +#ifdef HAVE_XLOCALE_H > +#include <xlocale.h> > +static locale_t loc; > +static int initialized;
This is unused until commit 7 (and I don't see a lot of value in patch 7, but maybe I'm just not seeing it :) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev