summaryrefslogtreecommitdiff
path: root/x11/kdelibs4/patches/patch-bb
blob: ddad55f73bc31db1480f41b9e6e0a0a1687419d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
$NetBSD: patch-bb,v 1.1 2009/10/11 08:13:40 markd Exp $

KDE svn 1032185

--- kdecore/localization/klocale.cpp.orig	2009-10-02 21:18:08.000000000 +1300
+++ kdecore/localization/klocale.cpp
@@ -22,6 +22,7 @@
 */
 
 #include "klocale.h"
+#include "klocale_p.h"
 
 #include <config.h>
 
@@ -242,7 +243,6 @@ public:
   // Handling of translation catalogs
   QStringList languageList;
 
-  QMutex* mutex;
   QList<KCatalogName> catalogNames; // list of all catalogs (regardless of language)
   QList<KCatalog> catalogs; // list of all found catalogs, one instance per catalog name and language
   int numberOfSysCatalogs; // number of catalogs that each app draws from
@@ -276,7 +276,6 @@ public:
 KLocalePrivate::KLocalePrivate(const QString& catalog, KConfig *config, const QString &language_, const QString &country_)
     : language(language_),
       country(country_),
-      mutex(new QMutex(QMutex::Recursive)),
       useTranscript(false),
       codecForEncoding(0),
       languages(0), calendar(0),
@@ -311,7 +310,7 @@ KLocale::KLocale(const QString& catalog,
 void KLocalePrivate::initMainCatalogs()
 {
   KLocaleStaticData *s = staticData;
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
 
   if (!s->maincatalog.isEmpty()) {
       // If setMainCatalog was called, then we use that (e.g. korgac calls setMainCatalog("korganizer") to use korganizer.po)
@@ -541,7 +540,7 @@ bool KLocale::setLanguage(const QString 
 
 bool KLocalePrivate::setLanguage(const QString & _language, KConfig *config)
 {
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
   languageList.removeAll( _language );
   languageList.prepend( _language ); // let us consider this language to be the most important one
 
@@ -563,7 +562,7 @@ bool KLocale::setLanguage(const QStringL
 
 bool KLocalePrivate::setLanguage(const QStringList & languages)
 {
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
   // This list might contain
   // 1) some empty strings that we have to eliminate
   // 2) duplicate entries like in de:fr:de, where we have to keep the first occurrence of a language in order
@@ -685,7 +684,7 @@ QString KLocale::country() const
 
 void KLocale::insertCatalog( const QString & catalog )
 {
-  QMutexLocker lock(d->mutex);
+  QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos != -1) {
         ++d->catalogNames[pos].loadCount;
@@ -736,7 +735,7 @@ void KLocalePrivate::updateCatalogs( )
 
 void KLocale::removeCatalog(const QString &catalog)
 {
-    QMutexLocker lock(d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos == -1)
         return;
@@ -749,7 +748,7 @@ void KLocale::removeCatalog(const QStrin
 
 void KLocale::setActiveCatalog(const QString &catalog)
 {
-    QMutexLocker lock(d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos == -1)
         return;
@@ -759,7 +758,6 @@ void KLocale::setActiveCatalog(const QSt
 
 KLocale::~KLocale()
 {
-    delete d->mutex;
     delete d->calendar;
     delete d->languages;
     delete d;
@@ -788,7 +786,7 @@ void KLocalePrivate::translate_priv(cons
                 << "Fix the program" << endl;
   }
 
-  QMutexLocker locker(mutex);
+  QMutexLocker locker(kLocaleMutex());
   // determine the fallback string
   QString fallback;
   if ( msgid_plural == NULL )
@@ -1370,7 +1368,7 @@ QString KLocale::formatByteSize( double 
     //Kibi-byte             KiB             2^10    1,024 bytes
 
     if (d->byteSizeFmt.size() == 0) {
-        QMutexLocker lock(d->mutex);
+        QMutexLocker lock(kLocaleMutex());
         // Pretranslated format strings for byte sizes.
         #define CACHEBYTEFMT(x) { \
             QString s; \
@@ -2568,7 +2566,6 @@ KLocale::KLocale(const KLocale & rhs) : 
 {
   d->languages = 0; // Don't copy languages
   d->calendar = 0; // Don't copy the calendar
-  d->mutex = 0; // Don't copy the mutex
 }
 
 KLocale & KLocale::operator=(const KLocale & rhs)
@@ -2583,8 +2580,7 @@ KLocale & KLocale::operator=(const KLoca
 
 void KLocale::copyCatalogsTo(KLocale *locale)
 {
-    QMutexLocker lock(d->mutex);
-    QMutexLocker lockOther(locale->d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     locale->d->catalogNames = d->catalogNames;
     locale->d->updateCatalogs();
 }
@@ -2656,3 +2652,9 @@ KLocale::DigitSet KLocale::dateTimeDigit
 {
     return d->dateTimeDigitSet;
 }
+
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_kLocaleMutex, (QMutex::Recursive))
+QMutex* kLocaleMutex()
+{
+    return s_kLocaleMutex();
+}