Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
3c9b71b1
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3c9b71b1
编写于
2月 07, 2014
作者:
B
bagiras
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7033533: realSync() doesn't work with Xfce
Reviewed-by: anthony, serb, leonidr
上级
f243d3c4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
49 deletion
+17
-49
src/solaris/classes/sun/awt/X11/XRootWindow.java
src/solaris/classes/sun/awt/X11/XRootWindow.java
+3
-2
src/solaris/classes/sun/awt/X11/XToolkit.java
src/solaris/classes/sun/awt/X11/XToolkit.java
+14
-47
未找到文件。
src/solaris/classes/sun/awt/X11/XRootWindow.java
浏览文件 @
3c9b71b1
/*
* Copyright (c) 2003, 20
05
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
14
, 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
...
...
@@ -46,7 +46,8 @@ class XRootWindow extends XBaseWindow {
}
private
XRootWindow
()
{
super
(
new
XCreateWindowParams
(
new
Object
[]
{
DELAYED
,
Boolean
.
TRUE
}));
super
(
new
XCreateWindowParams
(
new
Object
[]
{
DELAYED
,
Boolean
.
TRUE
,
EVENT_MASK
,
XConstants
.
StructureNotifyMask
}));
}
public
void
postInit
(
XCreateWindowParams
params
){
...
...
src/solaris/classes/sun/awt/X11/XToolkit.java
浏览文件 @
3c9b71b1
...
...
@@ -2354,9 +2354,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
private
static
XEventDispatcher
oops_waiter
;
private
static
boolean
oops_updated
;
private
static
boolean
oops_failed
;
private
XAtom
oops
;
private
static
final
long
WORKAROUND_SLEEP
=
100
;
private
static
boolean
oops_move
;
/**
* @inheritDoc
...
...
@@ -2367,52 +2365,33 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
if
(
oops_waiter
==
null
)
{
oops_waiter
=
new
XEventDispatcher
()
{
public
void
dispatchEvent
(
XEvent
e
)
{
if
(
e
.
get_type
()
==
XConstants
.
SelectionNotify
)
{
XSelectionEvent
pe
=
e
.
get_xselection
();
if
(
pe
.
get_property
()
==
oops
.
getAtom
())
{
oops_updated
=
true
;
awtLockNotifyAll
();
}
else
if
(
pe
.
get_selection
()
==
XAtom
.
get
(
"WM_S0"
).
getAtom
()
&&
pe
.
get_target
()
==
XAtom
.
get
(
"VERSION"
).
getAtom
()
&&
pe
.
get_property
()
==
0
&&
XlibWrapper
.
XGetSelectionOwner
(
getDisplay
(),
XAtom
.
get
(
"WM_S0"
).
getAtom
())
==
0
)
{
// WM forgot to acquire selection or there is no WM
oops_failed
=
true
;
awtLockNotifyAll
();
}
if
(
e
.
get_type
()
==
XConstants
.
ConfigureNotify
)
{
// OOPS ConfigureNotify event catched
oops_updated
=
true
;
awtLockNotifyAll
();
}
}
};
}
if
(
oops
==
null
)
{
oops
=
XAtom
.
get
(
"OOPS"
);
}
awtLock
();
try
{
addEventDispatcher
(
win
.
getWindow
(),
oops_waiter
);
oops_updated
=
false
;
oops_failed
=
false
;
// Wait for selection notify for oops on win
long
event_number
=
getEventNumber
();
XAtom
atom
=
XAtom
.
get
(
"WM_S0"
);
if
(
eventLog
.
isLoggable
(
PlatformLogger
.
Level
.
FINER
))
{
eventLog
.
finer
(
"WM_S0 selection owner {0}"
,
XlibWrapper
.
XGetSelectionOwner
(
getDisplay
(),
atom
.
getAtom
()));
}
XlibWrapper
.
XConvertSelection
(
getDisplay
(),
atom
.
getAtom
(),
XAtom
.
get
(
"VERSION"
).
getAtom
(),
oops
.
getAtom
(),
win
.
getWindow
(),
XConstants
.
CurrentTime
);
// Generate OOPS ConfigureNotify event
XlibWrapper
.
XMoveWindow
(
getDisplay
(),
win
.
getWindow
(),
oops_move
?
0
:
1
,
0
);
// Change win position each time to avoid system optimization
oops_move
=
!
oops_move
;
XSync
();
eventLog
.
finer
(
"
Requested OOPS
"
);
eventLog
.
finer
(
"
Generated OOPS ConfigureNotify event
"
);
long
start
=
System
.
currentTimeMillis
();
while
(!
oops_updated
&&
!
oops_failed
)
{
while
(!
oops_updated
)
{
try
{
// Wait for OOPS ConfigureNotify event
awtLockWait
(
timeout
);
}
catch
(
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
...
...
@@ -2423,20 +2402,8 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
throw
new
OperationTimedOut
(
Long
.
toString
(
System
.
currentTimeMillis
()
-
start
));
}
}
if
(
oops_failed
&&
getEventNumber
()
-
event_number
==
1
)
{
// If selection update failed we can simply wait some time
// hoping some events will arrive
awtUnlock
();
eventLog
.
finest
(
"Emergency sleep"
);
try
{
Thread
.
sleep
(
WORKAROUND_SLEEP
);
}
catch
(
InterruptedException
ie
)
{
throw
new
RuntimeException
(
ie
);
}
finally
{
awtLock
();
}
}
return
getEventNumber
()
-
event_number
>
2
;
// Don't take into account OOPS ConfigureNotify event
return
getEventNumber
()
-
event_number
>
1
;
}
finally
{
removeEventDispatcher
(
win
.
getWindow
(),
oops_waiter
);
eventLog
.
finer
(
"Exiting syncNativeQueue"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录