[Mesa-dev] [PATCH v2 5/7] util: port _mesa_strto[df] to C
Erik Faye-Lund
kusmabite at gmail.com
Thu Jun 25 15:58:03 PDT 2015
On Fri, Jun 26, 2015 at 12:44 AM, Matt Turner <mattst88 at gmail.com> wrote:
> On Thu, Jun 25, 2015 at 2:05 PM, Erik Faye-Lund <kusmabite at 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 <kusmabite at gmail.com>
>> Reviewed-by: Matt Turner <mattst88 at 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.
More information about the mesa-dev
mailing list