On Fri, Jun 26, 2015 at 12:44 AM, Matt Turner <matts...@gmail.com> wrote: > 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 :)
Good catch, thanks. Fixed. I have no strong feelings about patch 7 either way. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev