| Index: base/i18n/rtl.cc
|
| diff --git a/base/i18n/rtl.cc b/base/i18n/rtl.cc
|
| index 07fd9642d37d203689c86e2083cf6052f1cf515e..2b6bf37706fd4ad52b28024427fa0451fc121c9d 100644
|
| --- a/base/i18n/rtl.cc
|
| +++ b/base/i18n/rtl.cc
|
| @@ -9,7 +9,6 @@
|
|
|
| #include <algorithm>
|
|
|
| -#include "base/atomicops.h"
|
| #include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| #include "base/i18n/base_i18n_switches.h"
|
| @@ -114,8 +113,7 @@
|
| namespace i18n {
|
|
|
| // Represents the locale-specific ICU text direction.
|
| -static subtle::Atomic32 g_icu_text_direction =
|
| - static_cast<subtle::Atomic32>(UNKNOWN_DIRECTION);
|
| +static TextDirection g_icu_text_direction = UNKNOWN_DIRECTION;
|
|
|
| // Convert the ICU default locale to a string.
|
| std::string GetConfiguredLocale() {
|
| @@ -164,10 +162,7 @@
|
| // presence of actual locale data). However,
|
| // it does not hurt to have it as a sanity check.
|
| DCHECK(U_SUCCESS(error_code));
|
| - subtle::Release_Store(
|
| - &g_icu_text_direction,
|
| - static_cast<subtle::Atomic32>(
|
| - GetTextDirectionForLocaleInStartUp(locale.getName())));
|
| + g_icu_text_direction = UNKNOWN_DIRECTION;
|
| }
|
|
|
| bool IsRTL() {
|
| @@ -175,11 +170,11 @@
|
| }
|
|
|
| bool ICUIsRTL() {
|
| - // Note: There is still a race if this is executed between the
|
| - // icu::Locale::setDefault and the g_icu_text_direction store
|
| - // that happens in SetICUDefaultLocale.
|
| - return static_cast<TextDirection>(
|
| - subtle::Acquire_Load(&g_icu_text_direction)) == RIGHT_TO_LEFT;
|
| + if (g_icu_text_direction == UNKNOWN_DIRECTION) {
|
| + const icu::Locale& locale = icu::Locale::getDefault();
|
| + g_icu_text_direction = GetTextDirectionForLocaleInStartUp(locale.getName());
|
| + }
|
| + return g_icu_text_direction == RIGHT_TO_LEFT;
|
| }
|
|
|
| TextDirection GetTextDirectionForLocaleInStartUp(const char* locale_name) {
|
|
|