Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
2e277bee
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2e277bee
编写于
5月 21, 2013
作者:
A
alitvinov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8005607: Recursion in J2DXErrHandler() Causes a Stack Overflow on Linux
Reviewed-by: art, anthony, prr
上级
7f02fb53
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
478 addition
and
344 deletion
+478
-344
src/solaris/classes/sun/awt/X11/MotifDnDConstants.java
src/solaris/classes/sun/awt/X11/MotifDnDConstants.java
+21
-21
src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java
...laris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java
+20
-20
src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java
src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java
+3
-3
src/solaris/classes/sun/awt/X11/XConstants.java
src/solaris/classes/sun/awt/X11/XConstants.java
+6
-1
src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java
src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java
+9
-9
src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
+44
-50
src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java
src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java
+12
-12
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
+19
-19
src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java
src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java
+6
-6
src/solaris/classes/sun/awt/X11/XErrorHandler.java
src/solaris/classes/sun/awt/X11/XErrorHandler.java
+72
-2
src/solaris/classes/sun/awt/X11/XErrorHandlerUtil.java
src/solaris/classes/sun/awt/X11/XErrorHandlerUtil.java
+162
-0
src/solaris/classes/sun/awt/X11/XQueryTree.java
src/solaris/classes/sun/awt/X11/XQueryTree.java
+3
-3
src/solaris/classes/sun/awt/X11/XToolkit.java
src/solaris/classes/sun/awt/X11/XToolkit.java
+1
-76
src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java
src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java
+3
-3
src/solaris/classes/sun/awt/X11/XWM.java
src/solaris/classes/sun/awt/X11/XWM.java
+7
-6
src/solaris/classes/sun/awt/X11/XlibUtil.java
src/solaris/classes/sun/awt/X11/XlibUtil.java
+7
-7
src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java
...laris/classes/sun/awt/X11/generator/WrapperGenerator.java
+3
-3
src/solaris/native/sun/awt/awt_GraphicsEnv.c
src/solaris/native/sun/awt/awt_GraphicsEnv.c
+23
-27
src/solaris/native/sun/awt/awt_GraphicsEnv.h
src/solaris/native/sun/awt/awt_GraphicsEnv.h
+2
-3
src/solaris/native/sun/awt/awt_util.c
src/solaris/native/sun/awt/awt_util.c
+1
-13
src/solaris/native/sun/awt/awt_util.h
src/solaris/native/sun/awt/awt_util.h
+35
-30
src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c
src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c
+10
-21
src/solaris/native/sun/java2d/x11/X11SurfaceData.c
src/solaris/native/sun/java2d/x11/X11SurfaceData.c
+6
-6
src/solaris/native/sun/xawt/XlibWrapper.c
src/solaris/native/sun/xawt/XlibWrapper.c
+3
-3
未找到文件。
src/solaris/classes/sun/awt/X11/MotifDnDConstants.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -190,7 +190,7 @@ class MotifDnDConstants {
...
@@ -190,7 +190,7 @@ class MotifDnDConstants {
try
{
try
{
Native
.
putLong
(
data
,
motifWindow
);
Native
.
putLong
(
data
,
motifWindow
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
defaultRootWindow
,
defaultRootWindow
,
XA_MOTIF_DRAG_WINDOW
.
getAtom
(),
XA_MOTIF_DRAG_WINDOW
.
getAtom
(),
...
@@ -198,10 +198,10 @@ class MotifDnDConstants {
...
@@ -198,10 +198,10 @@ class MotifDnDConstants {
XConstants
.
PropModeReplace
,
XConstants
.
PropModeReplace
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write motif drag window handle."
);
throw
new
XException
(
"Cannot write motif drag window handle."
);
}
}
...
@@ -394,7 +394,7 @@ class MotifDnDConstants {
...
@@ -394,7 +394,7 @@ class MotifDnDConstants {
}
}
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
motifWindow
,
motifWindow
,
XA_MOTIF_DRAG_TARGETS
.
getAtom
(),
XA_MOTIF_DRAG_TARGETS
.
getAtom
(),
...
@@ -402,15 +402,15 @@ class MotifDnDConstants {
...
@@ -402,15 +402,15 @@ class MotifDnDConstants {
XConstants
.
PropModeReplace
,
XConstants
.
PropModeReplace
,
data
,
tableSize
);
data
,
tableSize
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
// Create a new motif window and retry.
// Create a new motif window and retry.
motifWindow
=
createMotifWindow
();
motifWindow
=
createMotifWindow
();
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
motifWindow
,
motifWindow
,
XA_MOTIF_DRAG_TARGETS
.
getAtom
(),
XA_MOTIF_DRAG_TARGETS
.
getAtom
(),
...
@@ -418,10 +418,10 @@ class MotifDnDConstants {
...
@@ -418,10 +418,10 @@ class MotifDnDConstants {
XConstants
.
PropModeReplace
,
XConstants
.
PropModeReplace
,
data
,
tableSize
);
data
,
tableSize
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write motif drag targets property."
);
throw
new
XException
(
"Cannot write motif drag targets property."
);
}
}
}
}
...
@@ -534,16 +534,16 @@ class MotifDnDConstants {
...
@@ -534,16 +534,16 @@ class MotifDnDConstants {
// CARD32 icc_handle
// CARD32 icc_handle
unsafe
.
putInt
(
structData
+
4
,
(
int
)
XA_MOTIF_ATOM_0
.
getAtom
());
unsafe
.
putInt
(
structData
+
4
,
(
int
)
XA_MOTIF_ATOM_0
.
getAtom
());
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
window
,
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
window
,
XA_MOTIF_ATOM_0
.
getAtom
(),
XA_MOTIF_ATOM_0
.
getAtom
(),
XA_MOTIF_DRAG_INITIATOR_INFO
.
getAtom
(),
XA_MOTIF_DRAG_INITIATOR_INFO
.
getAtom
(),
8
,
XConstants
.
PropModeReplace
,
8
,
XConstants
.
PropModeReplace
,
structData
,
MOTIF_INITIATOR_INFO_SIZE
);
structData
,
MOTIF_INITIATOR_INFO_SIZE
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write drag initiator info"
);
throw
new
XException
(
"Cannot write drag initiator info"
);
}
}
}
finally
{
}
finally
{
...
@@ -567,16 +567,16 @@ class MotifDnDConstants {
...
@@ -567,16 +567,16 @@ class MotifDnDConstants {
unsafe
.
putShort
(
data
+
10
,
(
short
)
0
);
/* pad */
unsafe
.
putShort
(
data
+
10
,
(
short
)
0
);
/* pad */
unsafe
.
putInt
(
data
+
12
,
dataSize
);
unsafe
.
putInt
(
data
+
12
,
dataSize
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
window
,
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
window
,
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
8
,
XConstants
.
PropModeReplace
,
8
,
XConstants
.
PropModeReplace
,
data
,
dataSize
);
data
,
dataSize
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write Motif receiver info property"
);
throw
new
XException
(
"Cannot write Motif receiver info property"
);
}
}
}
finally
{
}
finally
{
...
...
src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -162,16 +162,16 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -162,16 +162,16 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
unsafe
.
putInt
(
data
+
12
,
dataSize
);
unsafe
.
putInt
(
data
+
12
,
dataSize
);
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
embedder
,
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
embedder
,
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
8
,
XConstants
.
PropModeReplace
,
8
,
XConstants
.
PropModeReplace
,
data
,
dataSize
);
data
,
dataSize
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write Motif receiver info property"
);
throw
new
XException
(
"Cannot write Motif receiver info property"
);
}
}
}
finally
{
}
finally
{
...
@@ -236,16 +236,16 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -236,16 +236,16 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
unsafe
.
putInt
(
data
+
4
,
tproxy
);
unsafe
.
putInt
(
data
+
4
,
tproxy
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
embedder
,
XlibWrapper
.
XChangeProperty
(
XToolkit
.
getDisplay
(),
embedder
,
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
MotifDnDConstants
.
XA_MOTIF_DRAG_RECEIVER_INFO
.
getAtom
(),
8
,
XConstants
.
PropModeReplace
,
8
,
XConstants
.
PropModeReplace
,
data
,
dataSize
);
data
,
dataSize
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write Motif receiver info property"
);
throw
new
XException
(
"Cannot write Motif receiver info property"
);
}
}
}
}
...
@@ -412,15 +412,15 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -412,15 +412,15 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
*/
*/
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
source_win
,
wattr
.
pData
);
source_win
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
throw
new
XException
(
"XGetWindowAttributes failed"
);
throw
new
XException
(
"XGetWindowAttributes failed"
);
}
}
...
@@ -429,15 +429,15 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -429,15 +429,15 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
wattr
.
dispose
();
wattr
.
dispose
();
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
source_win
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
source_win
,
source_win_mask
|
source_win_mask
|
XConstants
.
StructureNotifyMask
);
XConstants
.
StructureNotifyMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"XSelectInput failed"
);
throw
new
XException
(
"XSelectInput failed"
);
}
}
...
@@ -1024,10 +1024,10 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -1024,10 +1024,10 @@ class MotifDnDDropTargetProtocol extends XDropTargetProtocol {
if
(
sourceWindow
!=
0
)
{
if
(
sourceWindow
!=
0
)
{
XToolkit
.
awtLock
();
XToolkit
.
awtLock
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
sourceWindow
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
sourceWindow
,
sourceWindowMask
);
sourceWindowMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
finally
{
}
finally
{
XToolkit
.
awtUnlock
();
XToolkit
.
awtUnlock
();
}
}
...
...
src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -99,7 +99,7 @@ public class WindowPropertyGetter {
...
@@ -99,7 +99,7 @@ public class WindowPropertyGetter {
}
}
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
errorHandler
);
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
errorHandler
);
}
}
Native
.
putLong
(
data
,
0
);
Native
.
putLong
(
data
,
0
);
int
status
=
XlibWrapper
.
XGetWindowProperty
(
XToolkit
.
getDisplay
(),
window
,
property
.
getAtom
(),
int
status
=
XlibWrapper
.
XGetWindowProperty
(
XToolkit
.
getDisplay
(),
window
,
property
.
getAtom
(),
...
@@ -112,7 +112,7 @@ public class WindowPropertyGetter {
...
@@ -112,7 +112,7 @@ public class WindowPropertyGetter {
}
}
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
}
return
status
;
return
status
;
}
finally
{
}
finally
{
...
...
src/solaris/classes/sun/awt/X11/XConstants.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -674,4 +674,9 @@ final public class XConstants {
...
@@ -674,4 +674,9 @@ final public class XConstants {
public
static
final
long
XkbModifierMapMask
=
(
1L
<<
2
);
public
static
final
long
XkbModifierMapMask
=
(
1L
<<
2
);
public
static
final
long
XkbVirtualModsMask
=
(
1L
<<
6
);
//server map
public
static
final
long
XkbVirtualModsMask
=
(
1L
<<
6
);
//server map
/*****************************************************************
* X SHARED MEMORY EXTENSION FUNCTIONS
*****************************************************************/
public
static
final
int
X_ShmAttach
=
1
;
}
}
src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -96,14 +96,14 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol {
...
@@ -96,14 +96,14 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol {
action_count
++;
action_count
++;
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndActionList
.
setAtomData
(
window
,
XDnDConstants
.
XA_XdndActionList
.
setAtomData
(
window
,
XAtom
.
XA_ATOM
,
XAtom
.
XA_ATOM
,
data
,
action_count
);
data
,
action_count
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
)
!=
null
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
cleanup
();
cleanup
();
throw
new
XException
(
"Cannot write XdndActionList property"
);
throw
new
XException
(
"Cannot write XdndActionList property"
);
}
}
...
@@ -117,14 +117,14 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol {
...
@@ -117,14 +117,14 @@ class XDnDDragSourceProtocol extends XDragSourceProtocol {
try
{
try
{
Native
.
put
(
data
,
formats
);
Native
.
put
(
data
,
formats
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndTypeList
.
setAtomData
(
window
,
XDnDConstants
.
XA_XdndTypeList
.
setAtomData
(
window
,
XAtom
.
XA_ATOM
,
XAtom
.
XA_ATOM
,
data
,
formats
.
length
);
data
,
formats
.
length
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
cleanup
();
cleanup
();
throw
new
XException
(
"Cannot write XdndActionList property"
);
throw
new
XException
(
"Cannot write XdndActionList property"
);
}
}
...
...
src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -88,12 +88,12 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -88,12 +88,12 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
try
{
try
{
Native
.
putLong
(
data
,
0
,
XDnDConstants
.
XDND_PROTOCOL_VERSION
);
Native
.
putLong
(
data
,
0
,
XDnDConstants
.
XDND_PROTOCOL_VERSION
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
window
,
XAtom
.
XA_ATOM
,
data
,
1
);
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
window
,
XAtom
.
XA_ATOM
,
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"Cannot write XdndAware property"
);
throw
new
XException
(
"Cannot write XdndAware property"
);
}
}
}
finally
{
}
finally
{
...
@@ -205,54 +205,50 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -205,54 +205,50 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
/* The proxy window must have the XdndAware set, as XDnD protocol
/* The proxy window must have the XdndAware set, as XDnD protocol
prescribes to check the proxy window for XdndAware. */
prescribes to check the proxy window for XdndAware. */
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
newProxy
,
XAtom
.
XA_ATOM
,
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
newProxy
,
XAtom
.
XA_ATOM
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndAware property"
);
throw
new
XException
(
"Cannot write XdndAware property"
);
}
}
Native
.
putLong
(
data
,
0
,
newProxy
);
Native
.
putLong
(
data
,
0
,
newProxy
);
/* The proxy window must have the XdndProxy set to point to itself.*/
/* The proxy window must have the XdndProxy set to point to itself.*/
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
newProxy
,
XAtom
.
XA_WINDOW
,
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
newProxy
,
XAtom
.
XA_WINDOW
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndProxy property"
);
throw
new
XException
(
"Cannot write XdndProxy property"
);
}
}
Native
.
putLong
(
data
,
0
,
XDnDConstants
.
XDND_PROTOCOL_VERSION
);
Native
.
putLong
(
data
,
0
,
XDnDConstants
.
XDND_PROTOCOL_VERSION
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
embedder
,
XAtom
.
XA_ATOM
,
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
embedder
,
XAtom
.
XA_ATOM
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndAware property"
);
throw
new
XException
(
"Cannot write XdndAware property"
);
}
}
Native
.
putLong
(
data
,
0
,
newProxy
);
Native
.
putLong
(
data
,
0
,
newProxy
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
embedder
,
XAtom
.
XA_WINDOW
,
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
embedder
,
XAtom
.
XA_WINDOW
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndProxy property"
);
throw
new
XException
(
"Cannot write XdndProxy property"
);
}
}
}
finally
{
}
finally
{
...
@@ -278,27 +274,25 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -278,27 +274,25 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
try
{
try
{
Native
.
putLong
(
data
,
0
,
entry
.
getVersion
());
Native
.
putLong
(
data
,
0
,
entry
.
getVersion
());
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
embedder
,
XAtom
.
XA_ATOM
,
XDnDConstants
.
XA_XdndAware
.
setAtomData
(
embedder
,
XAtom
.
XA_ATOM
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndAware property"
);
throw
new
XException
(
"Cannot write XdndAware property"
);
}
}
Native
.
putLong
(
data
,
0
,
(
int
)
entry
.
getProxy
());
Native
.
putLong
(
data
,
0
,
(
int
)
entry
.
getProxy
());
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
embedder
,
XAtom
.
XA_WINDOW
,
XDnDConstants
.
XA_XdndProxy
.
setAtomData
(
embedder
,
XAtom
.
XA_WINDOW
,
data
,
1
);
data
,
1
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
XConstants
.
Success
)
{
throw
new
XException
(
"Cannot write XdndProxy property"
);
throw
new
XException
(
"Cannot write XdndProxy property"
);
}
}
}
finally
{
}
finally
{
...
@@ -541,15 +535,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -541,15 +535,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
*/
*/
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
source_win
,
wattr
.
pData
);
source_win
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
throw
new
XException
(
"XGetWindowAttributes failed"
);
throw
new
XException
(
"XGetWindowAttributes failed"
);
}
}
...
@@ -558,15 +552,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -558,15 +552,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
wattr
.
dispose
();
wattr
.
dispose
();
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
source_win
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
source_win
,
source_win_mask
|
source_win_mask
|
XConstants
.
StructureNotifyMask
);
XConstants
.
StructureNotifyMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"XSelectInput failed"
);
throw
new
XException
(
"XSelectInput failed"
);
}
}
...
@@ -963,10 +957,10 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -963,10 +957,10 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
if
(
sourceWindow
!=
0
)
{
if
(
sourceWindow
!=
0
)
{
XToolkit
.
awtLock
();
XToolkit
.
awtLock
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
sourceWindow
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
sourceWindow
,
sourceWindowMask
);
sourceWindowMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
finally
{
}
finally
{
XToolkit
.
awtUnlock
();
XToolkit
.
awtUnlock
();
}
}
...
@@ -1111,15 +1105,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
...
@@ -1111,15 +1105,15 @@ class XDnDDropTargetProtocol extends XDropTargetProtocol {
XToolkit
.
awtLock
();
XToolkit
.
awtLock
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XDnDConstants
.
XA_XdndTypeList
.
setAtomData
(
xclient
.
get_window
(),
XDnDConstants
.
XA_XdndTypeList
.
setAtomData
(
xclient
.
get_window
(),
XAtom
.
XA_ATOM
,
XAtom
.
XA_ATOM
,
wpg
.
getData
(),
wpg
.
getData
(),
wpg
.
getNumberOfItems
());
wpg
.
getNumberOfItems
());
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
if
(
logger
.
isLoggable
(
PlatformLogger
.
WARNING
))
{
if
(
logger
.
isLoggable
(
PlatformLogger
.
WARNING
))
{
logger
.
warning
(
"Cannot set XdndTypeList on the proxy window"
);
logger
.
warning
(
"Cannot set XdndTypeList on the proxy window"
);
}
}
...
...
src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -181,15 +181,15 @@ abstract class XDragSourceProtocol {
...
@@ -181,15 +181,15 @@ abstract class XDragSourceProtocol {
long
time
)
{
long
time
)
{
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
targetWindow
,
wattr
.
pData
);
targetWindow
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
throw
new
XException
(
"XGetWindowAttributes failed"
);
throw
new
XException
(
"XGetWindowAttributes failed"
);
}
}
...
@@ -198,15 +198,15 @@ abstract class XDragSourceProtocol {
...
@@ -198,15 +198,15 @@ abstract class XDragSourceProtocol {
wattr
.
dispose
();
wattr
.
dispose
();
}
}
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
targetWindow
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
targetWindow
,
targetWindowMask
|
targetWindowMask
|
XConstants
.
StructureNotifyMask
);
XConstants
.
StructureNotifyMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"XSelectInput failed"
);
throw
new
XException
(
"XSelectInput failed"
);
}
}
...
@@ -214,10 +214,10 @@ abstract class XDragSourceProtocol {
...
@@ -214,10 +214,10 @@ abstract class XDragSourceProtocol {
}
}
protected
final
void
finalizeDrop
()
{
protected
final
void
finalizeDrop
()
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
targetWindow
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
targetWindow
,
targetWindowMask
);
targetWindowMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
}
public
abstract
boolean
processProxyModeEvent
(
XClientMessageEvent
xclient
,
public
abstract
boolean
processProxyModeEvent
(
XClientMessageEvent
xclient
,
...
...
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -168,14 +168,14 @@ final class XDropTargetRegistry {
...
@@ -168,14 +168,14 @@ final class XDropTargetRegistry {
if
(
dest_x
>=
0
&&
dest_y
>=
0
)
{
if
(
dest_x
>=
0
&&
dest_y
>=
0
)
{
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
window
,
wattr
.
pData
);
window
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
continue
;
continue
;
}
}
...
@@ -222,14 +222,14 @@ final class XDropTargetRegistry {
...
@@ -222,14 +222,14 @@ final class XDropTargetRegistry {
long
event_mask
=
0
;
long
event_mask
=
0
;
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
embedder
,
wattr
.
pData
);
embedder
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
throw
new
XException
(
"XGetWindowAttributes failed"
);
throw
new
XException
(
"XGetWindowAttributes failed"
);
}
}
...
@@ -240,13 +240,13 @@ final class XDropTargetRegistry {
...
@@ -240,13 +240,13 @@ final class XDropTargetRegistry {
}
}
if
((
event_mask
&
XConstants
.
PropertyChangeMask
)
==
0
)
{
if
((
event_mask
&
XConstants
.
PropertyChangeMask
)
==
0
)
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
embedder
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
embedder
,
event_mask
|
XConstants
.
PropertyChangeMask
);
event_mask
|
XConstants
.
PropertyChangeMask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"XSelectInput failed"
);
throw
new
XException
(
"XSelectInput failed"
);
}
}
}
}
...
@@ -394,13 +394,13 @@ final class XDropTargetRegistry {
...
@@ -394,13 +394,13 @@ final class XDropTargetRegistry {
/* Restore the original event mask for the embedder. */
/* Restore the original event mask for the embedder. */
if
((
event_mask
&
XConstants
.
PropertyChangeMask
)
==
0
)
{
if
((
event_mask
&
XConstants
.
PropertyChangeMask
)
==
0
)
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
embedder
,
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
embedder
,
event_mask
);
event_mask
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
if
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
)
{
throw
new
XException
(
"XSelectInput failed"
);
throw
new
XException
(
"XSelectInput failed"
);
}
}
}
}
...
...
src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -301,15 +301,15 @@ public class XEmbedCanvasPeer extends XCanvasPeer implements WindowFocusListener
...
@@ -301,15 +301,15 @@ public class XEmbedCanvasPeer extends XCanvasPeer implements WindowFocusListener
try
{
try
{
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
xembed
.
handle
,
wattr
.
pData
);
xembed
.
handle
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
status
==
0
||
if
(
(
status
==
0
)
||
(
XToolkit
.
saved_error
!=
null
&&
(
(
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
))
{
return
null
;
return
null
;
}
}
...
...
src/solaris/classes/sun/awt/X11/XErrorHandler.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2009,
2013,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -38,7 +38,30 @@ public abstract class XErrorHandler {
...
@@ -38,7 +38,30 @@ public abstract class XErrorHandler {
public
static
class
XBaseErrorHandler
extends
XErrorHandler
{
public
static
class
XBaseErrorHandler
extends
XErrorHandler
{
@Override
@Override
public
int
handleError
(
long
display
,
XErrorEvent
err
)
{
public
int
handleError
(
long
display
,
XErrorEvent
err
)
{
return
XToolkit
.
SAVED_ERROR_HANDLER
(
display
,
err
);
return
XErrorHandlerUtil
.
SAVED_XERROR_HANDLER
(
display
,
err
);
}
}
/**
* This is a base synthetic error handler containing a boolean flag which allows
* to show that an error is handled or not.
*/
public
static
class
XErrorHandlerWithFlag
extends
XBaseErrorHandler
{
private
volatile
boolean
errorOccurred
=
false
;
public
boolean
getErrorOccurredFlag
()
{
return
errorOccurred
;
}
/**
* Sets an internal boolean flag to a particular value. Should be always called with
* <code>false</code> value of the parameter <code>errorOccurred</code> before this
* error handler is set as current.
* @param errorOccurred <code>true</code> to indicate that an error was handled,
* <code>false</code> to reset the internal boolean flag
*/
public
void
setErrorOccurredFlag
(
boolean
errorOccurred
)
{
this
.
errorOccurred
=
errorOccurred
;
}
}
}
}
...
@@ -76,4 +99,51 @@ public abstract class XErrorHandler {
...
@@ -76,4 +99,51 @@ public abstract class XErrorHandler {
return
theInstance
;
return
theInstance
;
}
}
}
}
/**
* This is a synthetic error handler for errors generated by the native function
* <code>XShmAttach</code>. If an error is handled, an internal boolean flag of the
* handler is set to <code>true</code>.
*/
public
static
final
class
XShmAttachHandler
extends
XErrorHandlerWithFlag
{
private
XShmAttachHandler
()
{}
@Override
public
int
handleError
(
long
display
,
XErrorEvent
err
)
{
if
(
err
.
get_minor_code
()
==
XConstants
.
X_ShmAttach
)
{
setErrorOccurredFlag
(
true
);
return
0
;
}
return
super
.
handleError
(
display
,
err
);
}
// Shared instance
private
static
XShmAttachHandler
theInstance
=
new
XShmAttachHandler
();
public
static
XShmAttachHandler
getInstance
()
{
return
theInstance
;
}
}
/**
* This is a synthetic error handler for <code>BadAlloc</code> errors generated by the
* native <code>glX*</code> functions. Its internal boolean flag is set to <code>true</code>,
* if an error is handled.
*/
public
static
final
class
GLXBadAllocHandler
extends
XErrorHandlerWithFlag
{
private
GLXBadAllocHandler
()
{}
@Override
public
int
handleError
(
long
display
,
XErrorEvent
err
)
{
if
(
err
.
get_error_code
()
==
XConstants
.
BadAlloc
)
{
setErrorOccurredFlag
(
true
);
return
0
;
}
return
super
.
handleError
(
display
,
err
);
}
private
static
GLXBadAllocHandler
theInstance
=
new
GLXBadAllocHandler
();
public
static
GLXBadAllocHandler
getInstance
()
{
return
theInstance
;
}
}
}
}
src/solaris/classes/sun/awt/X11/XErrorHandlerUtil.java
0 → 100644
浏览文件 @
2e277bee
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
sun.awt.X11
;
import
java.security.AccessController
;
import
sun.awt.SunToolkit
;
import
sun.security.action.GetBooleanAction
;
import
sun.util.logging.PlatformLogger
;
/**
* This class contains code of the global toolkit error handler, exposes static
* methods which allow to set and unset synthetic error handlers.
*/
public
final
class
XErrorHandlerUtil
{
private
static
final
PlatformLogger
log
=
PlatformLogger
.
getLogger
(
"sun.awt.X11.XErrorHandlerUtil"
);
/**
* The connection to X11 window server.
*/
private
static
long
display
;
/**
* Error handler at the moment of <code>XErrorHandlerUtil</code> initialization.
*/
private
static
long
saved_error_handler
;
/**
* XErrorEvent being handled.
*/
static
volatile
XErrorEvent
saved_error
;
/**
* Current error handler or null if no error handler is set.
*/
private
static
XErrorHandler
current_error_handler
;
/**
* Value of sun.awt.noisyerrorhandler system property.
*/
private
static
boolean
noisyAwtHandler
=
AccessController
.
doPrivileged
(
new
GetBooleanAction
(
"sun.awt.noisyerrorhandler"
));
/**
* The flag indicating that <code>init</code> was called already.
*/
private
static
boolean
initPassed
;
/**
* Guarantees that no instance of this class can be created.
*/
private
XErrorHandlerUtil
()
{}
/**
* Sets the toolkit global error handler, stores the connection to X11 server, which
* will be used during an error handling process. This method is called once from
* <code>awt_init_Display</code> function defined in <code>awt_GraphicsEnv.c</code>
* file immediately after the connection to X11 window server is opened.
* @param display the connection to X11 server which should be stored
*/
private
static
void
init
(
long
display
)
{
SunToolkit
.
awtLock
();
try
{
if
(!
initPassed
)
{
XErrorHandlerUtil
.
display
=
display
;
saved_error_handler
=
XlibWrapper
.
SetToolkitErrorHandler
();
initPassed
=
true
;
}
}
finally
{
SunToolkit
.
awtUnlock
();
}
}
/**
* Sets a synthetic error handler. Must be called with the acquired AWT lock.
* @param handler the synthetic error handler to set
*/
public
static
void
WITH_XERROR_HANDLER
(
XErrorHandler
handler
)
{
saved_error
=
null
;
current_error_handler
=
handler
;
}
/**
* Unsets a current synthetic error handler. Must be called with the acquired AWT lock.
*/
public
static
void
RESTORE_XERROR_HANDLER
()
{
// Wait until all requests are processed by the X server
// and only then uninstall the error handler.
XSync
();
current_error_handler
=
null
;
}
/**
* Should be called under LOCK.
*/
public
static
int
SAVED_XERROR_HANDLER
(
long
display
,
XErrorEvent
error
)
{
if
(
saved_error_handler
!=
0
)
{
// Default XErrorHandler may just terminate the process. Don't call it.
// return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
}
if
(
log
.
isLoggable
(
PlatformLogger
.
FINE
))
{
log
.
fine
(
"Unhandled XErrorEvent: "
+
"id="
+
error
.
get_resourceid
()
+
", "
+
"serial="
+
error
.
get_serial
()
+
", "
+
"ec="
+
error
.
get_error_code
()
+
", "
+
"rc="
+
error
.
get_request_code
()
+
", "
+
"mc="
+
error
.
get_minor_code
());
}
return
0
;
}
/**
* Called from the native code when an error occurs.
*/
private
static
int
globalErrorHandler
(
long
display
,
long
event_ptr
)
{
if
(
noisyAwtHandler
)
{
XlibWrapper
.
PrintXErrorEvent
(
display
,
event_ptr
);
}
XErrorEvent
event
=
new
XErrorEvent
(
event_ptr
);
saved_error
=
event
;
try
{
if
(
current_error_handler
!=
null
)
{
return
current_error_handler
.
handleError
(
display
,
event
);
}
else
{
return
SAVED_XERROR_HANDLER
(
display
,
event
);
}
}
catch
(
Throwable
z
)
{
log
.
fine
(
"Error in GlobalErrorHandler"
,
z
);
}
return
0
;
}
private
static
void
XSync
()
{
SunToolkit
.
awtLock
();
try
{
XlibWrapper
.
XSync
(
display
,
0
);
}
finally
{
SunToolkit
.
awtUnlock
();
}
}
}
src/solaris/classes/sun/awt/X11/XQueryTree.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
05
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -61,7 +61,7 @@ public class XQueryTree {
...
@@ -61,7 +61,7 @@ public class XQueryTree {
}
}
__executed
=
true
;
__executed
=
true
;
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
errorHandler
);
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
errorHandler
);
}
}
Native
.
putLong
(
children_ptr
,
0
);
Native
.
putLong
(
children_ptr
,
0
);
int
status
=
int
status
=
...
@@ -72,7 +72,7 @@ public class XQueryTree {
...
@@ -72,7 +72,7 @@ public class XQueryTree {
children_ptr
,
children_ptr
,
nchildren_ptr
);
nchildren_ptr
);
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
}
return
status
;
return
status
;
}
finally
{
}
finally
{
...
...
src/solaris/classes/sun/awt/X11/XToolkit.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2002, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -128,7 +128,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
...
@@ -128,7 +128,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
initIDs
();
initIDs
();
setBackingStoreType
();
setBackingStoreType
();
}
}
noisyAwtHandler
=
AccessController
.
doPrivileged
(
new
GetBooleanAction
(
"sun.awt.noisyerrorhandler"
));
}
}
/*
/*
...
@@ -137,78 +136,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
...
@@ -137,78 +136,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
*/
*/
static
native
long
getTrayIconDisplayTimeout
();
static
native
long
getTrayIconDisplayTimeout
();
//---- ERROR HANDLER CODE ----//
/*
* Error handler at the moment of XToolkit initialization
*/
private
static
long
saved_error_handler
;
/*
* XErrorEvent being handled
*/
static
volatile
XErrorEvent
saved_error
;
/*
* Current error handler or null if no error handler is set
*/
private
static
XErrorHandler
current_error_handler
;
/*
* Value of sun.awt.noisyerrorhandler system property
*/
private
static
boolean
noisyAwtHandler
;
public
static
void
WITH_XERROR_HANDLER
(
XErrorHandler
handler
)
{
saved_error
=
null
;
current_error_handler
=
handler
;
}
public
static
void
RESTORE_XERROR_HANDLER
()
{
// wait until all requests are processed by the X server
// and only then uninstall the error handler
XSync
();
current_error_handler
=
null
;
}
// Should be called under LOCK
public
static
int
SAVED_ERROR_HANDLER
(
long
display
,
XErrorEvent
error
)
{
if
(
saved_error_handler
!=
0
)
{
// Default XErrorHandler may just terminate the process. Don't call it.
// return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
}
if
(
log
.
isLoggable
(
PlatformLogger
.
FINE
))
{
log
.
fine
(
"Unhandled XErrorEvent: "
+
"id="
+
error
.
get_resourceid
()
+
", "
+
"serial="
+
error
.
get_serial
()
+
", "
+
"ec="
+
error
.
get_error_code
()
+
", "
+
"rc="
+
error
.
get_request_code
()
+
", "
+
"mc="
+
error
.
get_minor_code
());
}
return
0
;
}
// Called from the native code when an error occurs
private
static
int
globalErrorHandler
(
long
display
,
long
event_ptr
)
{
if
(
noisyAwtHandler
)
{
XlibWrapper
.
PrintXErrorEvent
(
display
,
event_ptr
);
}
XErrorEvent
event
=
new
XErrorEvent
(
event_ptr
);
saved_error
=
event
;
try
{
if
(
current_error_handler
!=
null
)
{
return
current_error_handler
.
handleError
(
display
,
event
);
}
else
{
return
SAVED_ERROR_HANDLER
(
display
,
event
);
}
}
catch
(
Throwable
z
)
{
log
.
fine
(
"Error in GlobalErrorHandler"
,
z
);
}
return
0
;
}
//---- END OF ERROR HANDLER CODE ----//
private
native
static
void
initIDs
();
private
native
static
void
initIDs
();
native
static
void
waitForEvents
(
long
nextTaskTime
);
native
static
void
waitForEvents
(
long
nextTaskTime
);
static
Thread
toolkitThread
;
static
Thread
toolkitThread
;
...
@@ -306,8 +233,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
...
@@ -306,8 +233,6 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
//set system property if not yet assigned
//set system property if not yet assigned
System
.
setProperty
(
"sun.awt.enableExtraMouseButtons"
,
""
+
areExtraMouseButtonsEnabled
);
System
.
setProperty
(
"sun.awt.enableExtraMouseButtons"
,
""
+
areExtraMouseButtonsEnabled
);
saved_error_handler
=
XlibWrapper
.
SetToolkitErrorHandler
();
// Detect display mode changes
// Detect display mode changes
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
XToolkit
.
getDefaultRootWindow
(),
XConstants
.
StructureNotifyMask
);
XlibWrapper
.
XSelectInput
(
XToolkit
.
getDisplay
(),
XToolkit
.
getDefaultRootWindow
(),
XConstants
.
StructureNotifyMask
);
XToolkit
.
addEventDispatcher
(
XToolkit
.
getDefaultRootWindow
(),
new
XEventDispatcher
()
{
XToolkit
.
addEventDispatcher
(
XToolkit
.
getDefaultRootWindow
(),
new
XEventDispatcher
()
{
...
...
src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
05
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -68,7 +68,7 @@ public class XTranslateCoordinates {
...
@@ -68,7 +68,7 @@ public class XTranslateCoordinates {
}
}
__executed
=
true
;
__executed
=
true
;
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
errorHandler
);
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
errorHandler
);
}
}
int
status
=
int
status
=
XlibWrapper
.
XTranslateCoordinates
(
XToolkit
.
getDisplay
(),
XlibWrapper
.
XTranslateCoordinates
(
XToolkit
.
getDisplay
(),
...
@@ -80,7 +80,7 @@ public class XTranslateCoordinates {
...
@@ -80,7 +80,7 @@ public class XTranslateCoordinates {
dest_y_ptr
,
dest_y_ptr
,
child_ptr
);
child_ptr
);
if
(
errorHandler
!=
null
)
{
if
(
errorHandler
!=
null
)
{
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
}
}
return
status
;
return
status
;
}
finally
{
}
finally
{
...
...
src/solaris/classes/sun/awt/X11/XWM.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -284,12 +284,12 @@ final class XWM
...
@@ -284,12 +284,12 @@ final class XWM
winmgr_running
=
false
;
winmgr_running
=
false
;
substruct
.
set_event_mask
(
XConstants
.
SubstructureRedirectMask
);
substruct
.
set_event_mask
(
XConstants
.
SubstructureRedirectMask
);
X
Toolkit
.
WITH_XERROR_HANDLER
(
detectWMHandler
);
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
detectWMHandler
);
XlibWrapper
.
XChangeWindowAttributes
(
XToolkit
.
getDisplay
(),
XlibWrapper
.
XChangeWindowAttributes
(
XToolkit
.
getDisplay
(),
XToolkit
.
getDefaultRootWindow
(),
XToolkit
.
getDefaultRootWindow
(),
XConstants
.
CWEventMask
,
XConstants
.
CWEventMask
,
substruct
.
pData
);
substruct
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
/*
/*
* If no WM is running then our selection for SubstructureRedirect
* If no WM is running then our selection for SubstructureRedirect
...
@@ -632,15 +632,16 @@ final class XWM
...
@@ -632,15 +632,16 @@ final class XWM
XToolkit
.
awtLock
();
XToolkit
.
awtLock
();
try
{
try
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
VerifyChangePropertyHandler
.
getInstance
());
XlibWrapper
.
XChangePropertyS
(
XToolkit
.
getDisplay
(),
XToolkit
.
getDefaultRootWindow
(),
XlibWrapper
.
XChangePropertyS
(
XToolkit
.
getDisplay
(),
XToolkit
.
getDefaultRootWindow
(),
XA_ICEWM_WINOPTHINT
.
getAtom
(),
XA_ICEWM_WINOPTHINT
.
getAtom
(),
XA_ICEWM_WINOPTHINT
.
getAtom
(),
XA_ICEWM_WINOPTHINT
.
getAtom
(),
8
,
XConstants
.
PropModeReplace
,
8
,
XConstants
.
PropModeReplace
,
new
String
(
opt
));
new
String
(
opt
));
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
(
XToolkit
.
saved_error
!=
null
&&
XToolkit
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
)
{
if
((
XErrorHandlerUtil
.
saved_error
!=
null
)
&&
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
!=
XConstants
.
Success
))
{
log
.
finer
(
"Erorr getting XA_ICEWM_WINOPTHINT property"
);
log
.
finer
(
"Erorr getting XA_ICEWM_WINOPTHINT property"
);
return
false
;
return
false
;
}
}
...
...
src/solaris/classes/sun/awt/X11/XlibUtil.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2006, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2006, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -151,8 +151,8 @@ public class XlibUtil
...
@@ -151,8 +151,8 @@ public class XlibUtil
{
{
int
status
=
xtc
.
execute
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
xtc
.
execute
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
if
((
status
!=
0
)
&&
if
((
status
!=
0
)
&&
((
X
Toolkit
.
saved_error
==
null
)
||
((
X
ErrorHandlerUtil
.
saved_error
==
null
)
||
(
XToolkit
.
saved_error
.
get_error_code
()
==
XConstants
.
Success
)))
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
==
XConstants
.
Success
)))
{
{
translated
=
new
Point
(
xtc
.
get_dest_x
(),
xtc
.
get_dest_y
());
translated
=
new
Point
(
xtc
.
get_dest_x
(),
xtc
.
get_dest_y
());
}
}
...
@@ -345,13 +345,13 @@ public class XlibUtil
...
@@ -345,13 +345,13 @@ public class XlibUtil
XWindowAttributes
wattr
=
new
XWindowAttributes
();
XWindowAttributes
wattr
=
new
XWindowAttributes
();
try
try
{
{
X
Toolkit
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
X
ErrorHandlerUtil
.
WITH_XERROR_HANDLER
(
XErrorHandler
.
IgnoreBadWindowHandler
.
getInstance
());
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
int
status
=
XlibWrapper
.
XGetWindowAttributes
(
XToolkit
.
getDisplay
(),
window
,
wattr
.
pData
);
window
,
wattr
.
pData
);
X
Toolkit
.
RESTORE_XERROR_HANDLER
();
X
ErrorHandlerUtil
.
RESTORE_XERROR_HANDLER
();
if
((
status
!=
0
)
&&
if
((
status
!=
0
)
&&
((
X
Toolkit
.
saved_error
==
null
)
||
((
X
ErrorHandlerUtil
.
saved_error
==
null
)
||
(
XToolkit
.
saved_error
.
get_error_code
()
==
XConstants
.
Success
)))
(
XErrorHandlerUtil
.
saved_error
.
get_error_code
()
==
XConstants
.
Success
)))
{
{
return
wattr
.
get_map_state
();
return
wattr
.
get_map_state
();
}
}
...
...
src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -996,7 +996,7 @@ public class WrapperGenerator {
...
@@ -996,7 +996,7 @@ public class WrapperGenerator {
pw
.
println
(
"\t\t\t}"
);
pw
.
println
(
"\t\t\t}"
);
pw
.
println
(
"\t\t\t__executed = true;"
);
pw
.
println
(
"\t\t\t__executed = true;"
);
pw
.
println
(
"\t\t\tif (errorHandler != null) {"
);
pw
.
println
(
"\t\t\tif (errorHandler != null) {"
);
pw
.
println
(
"\t\t\t X
Toolkit
.WITH_XERROR_HANDLER(errorHandler);"
);
pw
.
println
(
"\t\t\t X
ErrorHandlerUtil
.WITH_XERROR_HANDLER(errorHandler);"
);
pw
.
println
(
"\t\t\t}"
);
pw
.
println
(
"\t\t\t}"
);
iter
=
ft
.
getArguments
().
iterator
();
iter
=
ft
.
getArguments
().
iterator
();
while
(
iter
.
hasNext
())
{
while
(
iter
.
hasNext
())
{
...
@@ -1025,7 +1025,7 @@ public class WrapperGenerator {
...
@@ -1025,7 +1025,7 @@ public class WrapperGenerator {
}
}
pw
.
println
(
"\t\t\t);"
);
pw
.
println
(
"\t\t\t);"
);
pw
.
println
(
"\t\t\tif (errorHandler != null) {"
);
pw
.
println
(
"\t\t\tif (errorHandler != null) {"
);
pw
.
println
(
"\t\t\t X
Toolkit
.RESTORE_XERROR_HANDLER();"
);
pw
.
println
(
"\t\t\t X
ErrorHandlerUtil
.RESTORE_XERROR_HANDLER();"
);
pw
.
println
(
"\t\t\t}"
);
pw
.
println
(
"\t\t\t}"
);
if
(!
ft
.
isVoid
())
{
if
(!
ft
.
isVoid
())
{
pw
.
println
(
"\t\t\treturn status;"
);
pw
.
println
(
"\t\t\treturn status;"
);
...
...
src/solaris/native/sun/awt/awt_GraphicsEnv.c
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 1997, 201
2
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -758,6 +758,8 @@ awt_init_Display(JNIEnv *env, jobject this)
...
@@ -758,6 +758,8 @@ awt_init_Display(JNIEnv *env, jobject this)
}
}
XSetIOErrorHandler
(
xioerror_handler
);
XSetIOErrorHandler
(
xioerror_handler
);
JNU_CallStaticMethodByName
(
env
,
NULL
,
"sun/awt/X11/XErrorHandlerUtil"
,
"init"
,
"(J)V"
,
ptr_to_jlong
(
awt_display
));
/* set awt_numScreens, and whether or not we're using Xinerama */
/* set awt_numScreens, and whether or not we're using Xinerama */
xineramaInit
();
xineramaInit
();
...
@@ -904,28 +906,12 @@ Java_sun_awt_X11GraphicsDevice_getDisplay(JNIEnv *env, jobject this)
...
@@ -904,28 +906,12 @@ Java_sun_awt_X11GraphicsDevice_getDisplay(JNIEnv *env, jobject this)
static
jint
canUseShmExt
=
UNSET_MITSHM
;
static
jint
canUseShmExt
=
UNSET_MITSHM
;
static
jint
canUseShmExtPixmaps
=
UNSET_MITSHM
;
static
jint
canUseShmExtPixmaps
=
UNSET_MITSHM
;
static
jboolean
xshmAttachFailed
=
JNI_FALSE
;
int
J2DXErrHandler
(
Display
*
display
,
XErrorEvent
*
xerr
)
{
int
ret
=
0
;
if
(
xerr
->
minor_code
==
X_ShmAttach
)
{
xshmAttachFailed
=
JNI_TRUE
;
}
else
{
ret
=
(
*
xerror_saved_handler
)(
display
,
xerr
);
}
return
ret
;
}
jboolean
isXShmAttachFailed
()
{
return
xshmAttachFailed
;
}
void
resetXShmAttachFailed
()
{
xshmAttachFailed
=
JNI_FALSE
;
}
void
TryInitMITShm
(
JNIEnv
*
env
,
jint
*
shmExt
,
jint
*
shmPixmaps
)
{
void
TryInitMITShm
(
JNIEnv
*
env
,
jint
*
shmExt
,
jint
*
shmPixmaps
)
{
XShmSegmentInfo
shminfo
;
XShmSegmentInfo
shminfo
;
int
XShmMajor
,
XShmMinor
;
int
XShmMajor
,
XShmMinor
;
int
a
,
b
,
c
;
int
a
,
b
,
c
;
jboolean
xShmAttachResult
;
AWT_LOCK
();
AWT_LOCK
();
if
(
canUseShmExt
!=
UNSET_MITSHM
)
{
if
(
canUseShmExt
!=
UNSET_MITSHM
)
{
...
@@ -963,21 +949,14 @@ void TryInitMITShm(JNIEnv *env, jint *shmExt, jint *shmPixmaps) {
...
@@ -963,21 +949,14 @@ void TryInitMITShm(JNIEnv *env, jint *shmExt, jint *shmPixmaps) {
}
}
shminfo
.
readOnly
=
True
;
shminfo
.
readOnly
=
True
;
resetXShmAttachFailed
();
xShmAttachResult
=
TryXShmAttach
(
env
,
awt_display
,
&
shminfo
);
/**
* The J2DXErrHandler handler will set xshmAttachFailed
* to JNI_TRUE if any Shm error has occured.
*/
EXEC_WITH_XERROR_HANDLER
(
J2DXErrHandler
,
XShmAttach
(
awt_display
,
&
shminfo
));
/**
/**
* Get rid of the id now to reduce chances of leaking
* Get rid of the id now to reduce chances of leaking
* system resources.
* system resources.
*/
*/
shmctl
(
shminfo
.
shmid
,
IPC_RMID
,
0
);
shmctl
(
shminfo
.
shmid
,
IPC_RMID
,
0
);
if
(
isXShmAttachFailed
()
==
JNI_FALS
E
)
{
if
(
xShmAttachResult
==
JNI_TRU
E
)
{
canUseShmExt
=
CAN_USE_MITSHM
;
canUseShmExt
=
CAN_USE_MITSHM
;
/* check if we can use shared pixmaps */
/* check if we can use shared pixmaps */
XShmQueryVersion
(
awt_display
,
&
XShmMajor
,
&
XShmMinor
,
XShmQueryVersion
(
awt_display
,
&
XShmMajor
,
&
XShmMinor
,
...
@@ -992,6 +971,23 @@ void TryInitMITShm(JNIEnv *env, jint *shmExt, jint *shmPixmaps) {
...
@@ -992,6 +971,23 @@ void TryInitMITShm(JNIEnv *env, jint *shmExt, jint *shmPixmaps) {
}
}
AWT_UNLOCK
();
AWT_UNLOCK
();
}
}
/*
* Must be called with the acquired AWT lock.
*/
jboolean
TryXShmAttach
(
JNIEnv
*
env
,
Display
*
display
,
XShmSegmentInfo
*
shminfo
)
{
jboolean
errorOccurredFlag
=
JNI_FALSE
;
jobject
errorHandlerRef
;
/*
* XShmAttachHandler will set its internal flag to JNI_TRUE, if any Shm error occurs.
*/
EXEC_WITH_XERROR_HANDLER
(
env
,
"sun/awt/X11/XErrorHandler$XShmAttachHandler"
,
"()Lsun/awt/X11/XErrorHandler$XShmAttachHandler;"
,
JNI_TRUE
,
errorHandlerRef
,
errorOccurredFlag
,
XShmAttach
(
display
,
shminfo
));
return
errorOccurredFlag
==
JNI_FALSE
?
JNI_TRUE
:
JNI_FALSE
;
}
#endif
/* MITSHM */
#endif
/* MITSHM */
/*
/*
...
...
src/solaris/native/sun/awt/awt_GraphicsEnv.h
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 1998, 20
0
3, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 20
1
3, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -50,8 +50,7 @@
...
@@ -50,8 +50,7 @@
extern
int
XShmQueryExtension
();
extern
int
XShmQueryExtension
();
void
TryInitMITShm
(
JNIEnv
*
env
,
jint
*
shmExt
,
jint
*
shmPixmaps
);
void
TryInitMITShm
(
JNIEnv
*
env
,
jint
*
shmExt
,
jint
*
shmPixmaps
);
void
resetXShmAttachFailed
();
jboolean
TryXShmAttach
(
JNIEnv
*
env
,
Display
*
display
,
XShmSegmentInfo
*
shminfo
);
jboolean
isXShmAttachFailed
();
#endif
/* MITSHM */
#endif
/* MITSHM */
...
...
src/solaris/native/sun/awt/awt_util.c
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 1995, 20
0
3, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 20
1
3, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -41,18 +41,6 @@
...
@@ -41,18 +41,6 @@
#include "java_awt_event_MouseWheelEvent.h"
#include "java_awt_event_MouseWheelEvent.h"
/*
* Since X reports protocol errors asynchronously, we often need to
* install an error handler that acts like a callback. While that
* specialized handler is installed we save original handler here.
*/
XErrorHandler
xerror_saved_handler
;
/*
* A place for error handler to report the error code.
*/
unsigned
char
xerror_code
;
extern
jint
getModifiers
(
uint32_t
state
,
jint
button
,
jint
keyCode
);
extern
jint
getModifiers
(
uint32_t
state
,
jint
button
,
jint
keyCode
);
extern
jint
getButton
(
uint32_t
button
);
extern
jint
getButton
(
uint32_t
button
);
...
...
src/solaris/native/sun/awt/awt_util.h
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 1995, 20
04
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1995, 20
13
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -29,42 +29,47 @@
...
@@ -29,42 +29,47 @@
#ifndef HEADLESS
#ifndef HEADLESS
#include "gdefs.h"
#include "gdefs.h"
#define WITH_XERROR_HANDLER(f) do { \
/*
XSync(awt_display, False); \
* Expected types of arguments of the macro.
xerror_code = Success; \
* (JNIEnv*, const char*, const char*, jboolean, jobject)
xerror_saved_handler = XSetErrorHandler(f); \
*/
} while (0)
#define WITH_XERROR_HANDLER(env, handlerClassName, getInstanceSignature, \
handlerHasFlag, handlerRef) do { \
/* Convenience macro for handlers to use */
handlerRef = JNU_CallStaticMethodByName(env, NULL, handlerClassName, "getInstance", \
#define XERROR_SAVE(err) do { \
getInstanceSignature).l; \
xerror_code = (err)->error_code; \
if (handlerHasFlag == JNI_TRUE) { \
} while (0)
JNU_CallMethodByName(env, NULL, handlerRef, "setErrorOccurredFlag", "(Z)V", JNI_FALSE); \
} \
#define RESTORE_XERROR_HANDLER do { \
JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XErrorHandlerUtil", "WITH_XERROR_HANDLER", \
XSync(awt_display, False); \
"(Lsun/awt/X11/XErrorHandler;)V", handlerRef); \
XSetErrorHandler(xerror_saved_handler); \
} while (0)
#define EXEC_WITH_XERROR_HANDLER(f, code) do { \
WITH_XERROR_HANDLER(f); \
do { \
code; \
} while (0); \
RESTORE_XERROR_HANDLER; \
} while (0)
} while (0)
/*
/*
* Since X reports protocol errors asynchronously, we often need to
* Expected types of arguments of the macro.
* install an error handler that acts like a callback. While that
* (JNIEnv*)
* specialized handler is installed we save original handler here.
*/
*/
extern
XErrorHandler
xerror_saved_handler
;
#define RESTORE_XERROR_HANDLER(env) do { \
JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XErrorHandlerUtil", \
"RESTORE_XERROR_HANDLER", "()V"); \
} while (0)
/*
/*
* A place for error handler to report the error code.
* Expected types of arguments of the macro.
* (JNIEnv*, const char*, const char*, jboolean, jobject, jboolean, No type - C expression)
*/
*/
extern
unsigned
char
xerror_code
;
#define EXEC_WITH_XERROR_HANDLER(env, handlerClassName, getInstanceSignature, handlerHasFlag, \
handlerRef, errorOccurredFlag, code) do { \
handlerRef = NULL; \
WITH_XERROR_HANDLER(env, handlerClassName, getInstanceSignature, handlerHasFlag, handlerRef); \
do { \
code; \
} while (0); \
RESTORE_XERROR_HANDLER(env); \
if (handlerHasFlag == JNI_TRUE) { \
errorOccurredFlag = JNU_CallMethodByName(env, NULL, handlerRef, "getErrorOccurredFlag", \
"()Z").z; \
} \
} while (0)
#endif
/* !HEADLESS */
#endif
/* !HEADLESS */
#ifndef INTERSECTS
#ifndef INTERSECTS
...
...
src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -48,8 +48,6 @@ extern DisposeFunc OGLSD_Dispose;
...
@@ -48,8 +48,6 @@ extern DisposeFunc OGLSD_Dispose;
extern
void
extern
void
OGLSD_SetNativeDimensions
(
JNIEnv
*
env
,
OGLSDOps
*
oglsdo
,
jint
w
,
jint
h
);
OGLSD_SetNativeDimensions
(
JNIEnv
*
env
,
OGLSDOps
*
oglsdo
,
jint
w
,
jint
h
);
jboolean
surfaceCreationFailed
=
JNI_FALSE
;
#endif
/* !HEADLESS */
#endif
/* !HEADLESS */
JNIEXPORT
void
JNICALL
JNIEXPORT
void
JNICALL
...
@@ -349,18 +347,6 @@ OGLSD_InitOGLWindow(JNIEnv *env, OGLSDOps *oglsdo)
...
@@ -349,18 +347,6 @@ OGLSD_InitOGLWindow(JNIEnv *env, OGLSDOps *oglsdo)
return
JNI_TRUE
;
return
JNI_TRUE
;
}
}
static
int
GLXSD_BadAllocXErrHandler
(
Display
*
display
,
XErrorEvent
*
xerr
)
{
int
ret
=
0
;
if
(
xerr
->
error_code
==
BadAlloc
)
{
surfaceCreationFailed
=
JNI_TRUE
;
}
else
{
ret
=
(
*
xerror_saved_handler
)(
display
,
xerr
);
}
return
ret
;
}
JNIEXPORT
jboolean
JNICALL
JNIEXPORT
jboolean
JNICALL
Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
(
JNIEnv
*
env
,
jobject
glxsd
,
(
JNIEnv
*
env
,
jobject
glxsd
,
...
@@ -376,6 +362,8 @@ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
...
@@ -376,6 +362,8 @@ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
int
attrlist
[]
=
{
GLX_PBUFFER_WIDTH
,
0
,
int
attrlist
[]
=
{
GLX_PBUFFER_WIDTH
,
0
,
GLX_PBUFFER_HEIGHT
,
0
,
GLX_PBUFFER_HEIGHT
,
0
,
GLX_PRESERVED_CONTENTS
,
GL_FALSE
,
0
};
GLX_PRESERVED_CONTENTS
,
GL_FALSE
,
0
};
jboolean
errorOccurredFlag
;
jobject
errorHandlerRef
;
J2dTraceLn3
(
J2D_TRACE_INFO
,
J2dTraceLn3
(
J2D_TRACE_INFO
,
"GLXSurfaceData_initPbuffer: w=%d h=%d opq=%d"
,
"GLXSurfaceData_initPbuffer: w=%d h=%d opq=%d"
,
...
@@ -403,12 +391,13 @@ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
...
@@ -403,12 +391,13 @@ Java_sun_java2d_opengl_GLXSurfaceData_initPbuffer
attrlist
[
1
]
=
width
;
attrlist
[
1
]
=
width
;
attrlist
[
3
]
=
height
;
attrlist
[
3
]
=
height
;
surfaceCreationFailed
=
JNI_FALSE
;
errorOccurredFlag
=
JNI_FALSE
;
EXEC_WITH_XERROR_HANDLER
(
EXEC_WITH_XERROR_HANDLER
(
env
,
"sun/awt/X11/XErrorHandler$GLXBadAllocHandler"
,
GLXSD_BadAllocXErrHandler
,
"()Lsun/awt/X11/XErrorHandler$GLXBadAllocHandler;"
,
JNI_TRUE
,
pbuffer
=
j2d_glXCreatePbuffer
(
awt_display
,
errorHandlerRef
,
errorOccurredFlag
,
glxinfo
->
fbconfig
,
attrlist
));
pbuffer
=
j2d_glXCreatePbuffer
(
awt_display
,
glxinfo
->
fbconfig
,
attrlist
));
if
((
pbuffer
==
0
)
||
surfaceCreationFailed
)
{
if
((
pbuffer
==
0
)
||
errorOccurredFlag
)
{
J2dRlsTraceLn
(
J2D_TRACE_ERROR
,
J2dRlsTraceLn
(
J2D_TRACE_ERROR
,
"GLXSurfaceData_initPbuffer: could not create glx pbuffer"
);
"GLXSurfaceData_initPbuffer: could not create glx pbuffer"
);
return
JNI_FALSE
;
return
JNI_FALSE
;
...
...
src/solaris/native/sun/java2d/x11/X11SurfaceData.c
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 1999, 201
1
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -65,7 +65,6 @@ static UnlockFunc X11SD_Unlock;
...
@@ -65,7 +65,6 @@ static UnlockFunc X11SD_Unlock;
static
DisposeFunc
X11SD_Dispose
;
static
DisposeFunc
X11SD_Dispose
;
static
GetPixmapBgFunc
X11SD_GetPixmapWithBg
;
static
GetPixmapBgFunc
X11SD_GetPixmapWithBg
;
static
ReleasePixmapBgFunc
X11SD_ReleasePixmapWithBg
;
static
ReleasePixmapBgFunc
X11SD_ReleasePixmapWithBg
;
extern
int
J2DXErrHandler
(
Display
*
display
,
XErrorEvent
*
xerr
);
extern
AwtGraphicsConfigDataPtr
extern
AwtGraphicsConfigDataPtr
getGraphicsConfigFromComponentPeer
(
JNIEnv
*
env
,
jobject
this
);
getGraphicsConfigFromComponentPeer
(
JNIEnv
*
env
,
jobject
this
);
extern
struct
X11GraphicsConfigIDs
x11GraphicsConfigIDs
;
extern
struct
X11GraphicsConfigIDs
x11GraphicsConfigIDs
;
...
@@ -521,6 +520,8 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
...
@@ -521,6 +520,8 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
{
{
XImage
*
img
=
NULL
;
XImage
*
img
=
NULL
;
XShmSegmentInfo
*
shminfo
;
XShmSegmentInfo
*
shminfo
;
JNIEnv
*
env
;
jboolean
xShmAttachResult
;
shminfo
=
malloc
(
sizeof
(
XShmSegmentInfo
));
shminfo
=
malloc
(
sizeof
(
XShmSegmentInfo
));
if
(
shminfo
==
NULL
)
{
if
(
shminfo
==
NULL
)
{
...
@@ -559,9 +560,8 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
...
@@ -559,9 +560,8 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
shminfo
->
readOnly
=
False
;
shminfo
->
readOnly
=
False
;
resetXShmAttachFailed
();
env
=
(
JNIEnv
*
)
JNU_GetEnv
(
jvm
,
JNI_VERSION_1_2
);
EXEC_WITH_XERROR_HANDLER
(
J2DXErrHandler
,
xShmAttachResult
=
TryXShmAttach
(
env
,
awt_display
,
shminfo
);
XShmAttach
(
awt_display
,
shminfo
));
/*
/*
* Once the XSync round trip has finished then we
* Once the XSync round trip has finished then we
...
@@ -570,7 +570,7 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
...
@@ -570,7 +570,7 @@ XImage* X11SD_CreateSharedImage(X11SDOps *xsdo,
*/
*/
shmctl
(
shminfo
->
shmid
,
IPC_RMID
,
0
);
shmctl
(
shminfo
->
shmid
,
IPC_RMID
,
0
);
if
(
isXShmAttachFailed
()
==
JNI_TRU
E
)
{
if
(
xShmAttachResult
==
JNI_FALS
E
)
{
J2dRlsTraceLn1
(
J2D_TRACE_ERROR
,
J2dRlsTraceLn1
(
J2D_TRACE_ERROR
,
"X11SD_SetupSharedSegment XShmAttach has failed: %s"
,
"X11SD_SetupSharedSegment XShmAttach has failed: %s"
,
strerror
(
errno
));
strerror
(
errno
));
...
...
src/solaris/native/sun/xawt/XlibWrapper.c
浏览文件 @
2e277bee
/*
/*
* Copyright (c) 2002, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 201
3
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -1264,8 +1264,8 @@ static int ToolkitErrorHandler(Display * dpy, XErrorEvent * event) {
...
@@ -1264,8 +1264,8 @@ static int ToolkitErrorHandler(Display * dpy, XErrorEvent * event) {
if
(
jvm
!=
NULL
)
{
if
(
jvm
!=
NULL
)
{
env
=
(
JNIEnv
*
)
JNU_GetEnv
(
jvm
,
JNI_VERSION_1_2
);
env
=
(
JNIEnv
*
)
JNU_GetEnv
(
jvm
,
JNI_VERSION_1_2
);
if
(
env
)
{
if
(
env
)
{
return
JNU_CallStaticMethodByName
(
env
,
NULL
,
"sun/awt/X11/X
Toolkit"
,
"globalErrorHandler"
,
"(JJ)I
"
,
return
JNU_CallStaticMethodByName
(
env
,
NULL
,
"sun/awt/X11/X
ErrorHandlerUtil
"
,
ptr_to_jlong
(
dpy
),
ptr_to_jlong
(
event
)).
i
;
"globalErrorHandler"
,
"(JJ)I"
,
ptr_to_jlong
(
dpy
),
ptr_to_jlong
(
event
)).
i
;
}
}
}
}
return
0
;
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录