Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
28e20b1a
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看板
提交
28e20b1a
编写于
10月 12, 2009
作者:
D
dcherepanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6796915: Deadlock in XAWT when switching virtual desktops
Reviewed-by: art, anthony
上级
6d676e1e
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
77 addition
and
61 deletion
+77
-61
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
+43
-43
src/solaris/classes/sun/awt/X11/XWindowPeer.java
src/solaris/classes/sun/awt/X11/XWindowPeer.java
+34
-18
未找到文件。
src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
浏览文件 @
28e20b1a
...
@@ -534,15 +534,18 @@ final class XDropTargetRegistry {
...
@@ -534,15 +534,18 @@ final class XDropTargetRegistry {
return
entry
.
getSite
(
x
,
y
);
return
entry
.
getSite
(
x
,
y
);
}
}
/*
* Note: this method should be called under AWT lock.
*/
public
void
registerDropSite
(
long
window
)
{
public
void
registerDropSite
(
long
window
)
{
assert
XToolkit
.
isAWTLockHeldByCurrentThread
();
if
(
window
==
0
)
{
if
(
window
==
0
)
{
throw
new
IllegalArgumentException
();
throw
new
IllegalArgumentException
();
}
}
XDropTargetEventProcessor
.
activate
();
XDropTargetEventProcessor
.
activate
();
XToolkit
.
awtLock
();
try
{
long
toplevel
=
getToplevelWindow
(
window
);
long
toplevel
=
getToplevelWindow
(
window
);
/*
/*
...
@@ -570,18 +573,18 @@ final class XDropTargetRegistry {
...
@@ -570,18 +573,18 @@ final class XDropTargetRegistry {
}
else
{
}
else
{
registerEmbeddedDropSite
(
toplevel
,
window
);
registerEmbeddedDropSite
(
toplevel
,
window
);
}
}
}
finally
{
XToolkit
.
awtUnlock
();
}
}
}
/*
* Note: this method should be called under AWT lock.
*/
public
void
unregisterDropSite
(
long
window
)
{
public
void
unregisterDropSite
(
long
window
)
{
assert
XToolkit
.
isAWTLockHeldByCurrentThread
();
if
(
window
==
0
)
{
if
(
window
==
0
)
{
throw
new
IllegalArgumentException
();
throw
new
IllegalArgumentException
();
}
}
XToolkit
.
awtLock
();
try
{
long
toplevel
=
getToplevelWindow
(
window
);
long
toplevel
=
getToplevelWindow
(
window
);
if
(
toplevel
==
window
)
{
if
(
toplevel
==
window
)
{
...
@@ -597,9 +600,6 @@ final class XDropTargetRegistry {
...
@@ -597,9 +600,6 @@ final class XDropTargetRegistry {
}
else
{
}
else
{
unregisterEmbeddedDropSite
(
toplevel
,
window
);
unregisterEmbeddedDropSite
(
toplevel
,
window
);
}
}
}
finally
{
XToolkit
.
awtUnlock
();
}
}
}
public
void
registerXEmbedClient
(
long
canvasWindow
,
long
clientWindow
)
{
public
void
registerXEmbedClient
(
long
canvasWindow
,
long
clientWindow
)
{
...
...
src/solaris/classes/sun/awt/X11/XWindowPeer.java
浏览文件 @
28e20b1a
...
@@ -1757,9 +1757,12 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
...
@@ -1757,9 +1757,12 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
}
}
}
}
// should be synchronized on awtLock
private
int
dropTargetCount
=
0
;
private
int
dropTargetCount
=
0
;
public
synchronized
void
addDropTarget
()
{
public
void
addDropTarget
()
{
XToolkit
.
awtLock
();
try
{
if
(
dropTargetCount
==
0
)
{
if
(
dropTargetCount
==
0
)
{
long
window
=
getWindow
();
long
window
=
getWindow
();
if
(
window
!=
0
)
{
if
(
window
!=
0
)
{
...
@@ -1767,9 +1770,14 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
...
@@ -1767,9 +1770,14 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
}
}
}
}
dropTargetCount
++;
dropTargetCount
++;
}
finally
{
XToolkit
.
awtUnlock
();
}
}
}
public
synchronized
void
removeDropTarget
()
{
public
void
removeDropTarget
()
{
XToolkit
.
awtLock
();
try
{
dropTargetCount
--;
dropTargetCount
--;
if
(
dropTargetCount
==
0
)
{
if
(
dropTargetCount
==
0
)
{
long
window
=
getWindow
();
long
window
=
getWindow
();
...
@@ -1777,6 +1785,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
...
@@ -1777,6 +1785,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
XDropTargetRegistry
.
getRegistry
().
unregisterDropSite
(
window
);
XDropTargetRegistry
.
getRegistry
().
unregisterDropSite
(
window
);
}
}
}
}
}
finally
{
XToolkit
.
awtUnlock
();
}
}
}
void
addRootPropertyEventDispatcher
()
{
void
addRootPropertyEventDispatcher
()
{
if
(
rootPropertyEventDispatcher
==
null
)
{
if
(
rootPropertyEventDispatcher
==
null
)
{
...
@@ -1838,7 +1849,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
...
@@ -1838,7 +1849,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
}
}
}
}
protected
synchronized
void
updateDropTarget
()
{
protected
void
updateDropTarget
()
{
XToolkit
.
awtLock
();
try
{
if
(
dropTargetCount
>
0
)
{
if
(
dropTargetCount
>
0
)
{
long
window
=
getWindow
();
long
window
=
getWindow
();
if
(
window
!=
0
)
{
if
(
window
!=
0
)
{
...
@@ -1846,6 +1859,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
...
@@ -1846,6 +1859,9 @@ class XWindowPeer extends XPanelPeer implements WindowPeer,
XDropTargetRegistry
.
getRegistry
().
registerDropSite
(
window
);
XDropTargetRegistry
.
getRegistry
().
registerDropSite
(
window
);
}
}
}
}
}
finally
{
XToolkit
.
awtUnlock
();
}
}
}
public
void
setGrab
(
boolean
grab
)
{
public
void
setGrab
(
boolean
grab
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录