author | Alan Coopersmith <Alan.Coopersmith@Oracle.COM> |
Wed, 28 Apr 2010 18:08:17 -0700 | |
changeset 943 | 294f64612d23 |
parent 919 | 425233ae7236 |
child 1064 | 3395ca7a91bf |
permissions | -rw-r--r-- |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1 |
############################################################################### |
943
294f64612d23
6948254 Mass update of X gate sources to Oracle copyright format
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
919
diff
changeset
|
2 |
# Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
3 |
# |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
4 |
# Permission is hereby granted, free of charge, to any person obtaining a |
919
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
5 |
# copy of this software and associated documentation files (the "Software"), |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
6 |
# to deal in the Software without restriction, including without limitation |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
7 |
# the rights to use, copy, modify, merge, publish, distribute, sublicense, |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
8 |
# and/or sell copies of the Software, and to permit persons to whom the |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
9 |
# Software is furnished to do so, subject to the following conditions: |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
10 |
# |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
11 |
# The above copyright notice and this permission notice (including the next |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
12 |
# paragraph) shall be included in all copies or substantial portions of the |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
13 |
# Software. |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
14 |
# |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
15 |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
16 |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
17 |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
18 |
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
19 |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
20 |
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
688
diff
changeset
|
21 |
# DEALINGS IN THE SOFTWARE. |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
22 |
# |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
23 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
24 |
4614834: Xlib color functions are not MT-safe |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
25 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
26 |
In a multithreaded Xlib client: |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
27 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
28 |
* concurrent access to XAllocNamedColor() make the client crash |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
29 |
* concurrent access to XLookupColor() make the client crash |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
30 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
31 |
The cause of the problem is that in multithread environment some data |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
32 |
in XLookupColor() and XAllocNamedColor() can be accessed/modified at |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
33 |
same time by multi threads. Adding some lock and unlock code to make |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
34 |
sure only one thread can access the data at one time fixed the |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
35 |
problem. |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
36 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
37 |
diff -urp -x '*~' -x '*.orig' src/GetColor.c src/GetColor.c |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
38 |
--- src/GetColor.c 2008-10-07 10:18:18.000000000 -0700 |
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
39 |
+++ src/GetColor.c 2009-04-08 00:17:54.349336000 -0700 |
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
40 |
@@ -58,12 +58,14 @@ XColor *exact_def) /* RETURN */ |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
41 |
if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) { |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
42 |
const char *tmpName = colorname; |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
43 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
44 |
+ LockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
45 |
switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact, |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
46 |
XcmsRGBFormat)) { |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
47 |
case XcmsSuccess: |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
48 |
case XcmsSuccessWithCompression: |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
49 |
_XcmsRGB_to_XColor(&cmsColor_exact, exact_def, 1); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
50 |
memcpy((char *)hard_def, (char *)exact_def, sizeof(XColor)); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
51 |
+ UnlockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
52 |
ret = XAllocColor(dpy, cmap, hard_def); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
53 |
exact_def->pixel = hard_def->pixel; |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
54 |
return(ret); |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
55 |
@@ -76,6 +78,7 @@ XColor *exact_def) /* RETURN */ |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
56 |
*/ |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
57 |
break; |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
58 |
} |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
59 |
+ UnlockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
60 |
} |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
61 |
#endif |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
62 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
63 |
diff -urp -x '*~' -x '*.orig' src/LookupCol.c src/LookupCol.c |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
64 |
--- src/LookupCol.c 2008-10-07 10:18:18.000000000 -0700 |
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
65 |
+++ src/LookupCol.c 2009-04-08 00:17:54.349566000 -0700 |
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
66 |
@@ -56,6 +56,7 @@ XLookupColor ( |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
67 |
if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) { |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
68 |
const char *tmpName = spec; |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
69 |
|
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
70 |
+ LockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
71 |
switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact, |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
72 |
XcmsRGBFormat)) { |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
73 |
case XcmsSuccess: |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
74 |
@@ -63,6 +64,7 @@ XLookupColor ( |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
75 |
_XcmsRGB_to_XColor(&cmsColor_exact, def, 1); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
76 |
memcpy((char *)scr, (char *)def, sizeof(XColor)); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
77 |
_XUnresolveColor(ccc, scr); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
78 |
+ UnlockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
79 |
return(1); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
80 |
case XcmsFailure: |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
81 |
case _XCMS_NEWNAME: |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
82 |
@@ -73,6 +75,7 @@ XLookupColor ( |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
83 |
*/ |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
84 |
break; |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
85 |
} |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
86 |
+ UnlockDisplay(dpy); |
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
87 |
} |
688
ec7ff53634c7
6828047 Update libX11 to version 1.2.1
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
341
diff
changeset
|
88 |
#endif |
341
0a1eb61fd56e
6668846 Upgrade libX11 to X11R7 version
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
89 |