Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
8d59b8d3
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看板
提交
8d59b8d3
编写于
9月 10, 2015
作者:
A
alitvinov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8081485: EDT auto shutdown is broken in case of new event queue usage
Reviewed-by: serb, alexp
上级
c81495bd
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
241 addition
and
5 deletion
+241
-5
src/share/classes/java/awt/EventQueue.java
src/share/classes/java/awt/EventQueue.java
+7
-5
test/java/awt/Toolkit/AutoShutdown/EventQueuePush/EventQueuePushAutoshutdown.java
...toShutdown/EventQueuePush/EventQueuePushAutoshutdown.java
+75
-0
test/java/awt/Toolkit/AutoShutdown/EventQueuePush/EventQueuePushAutoshutdown.sh
...AutoShutdown/EventQueuePush/EventQueuePushAutoshutdown.sh
+159
-0
未找到文件。
src/share/classes/java/awt/EventQueue.java
浏览文件 @
8d59b8d3
...
...
@@ -896,11 +896,13 @@ public class EventQueue {
}
}
// Wake up EDT waiting in getNextEvent(), so it can
// pick up a new EventQueue. Post the waking event before
// topQueue.nextQueue is assigned, otherwise the event would
// go newEventQueue
topQueue
.
postEventPrivate
(
new
InvocationEvent
(
topQueue
,
dummyRunnable
));
if
(
topQueue
.
dispatchThread
!=
null
)
{
// Wake up EDT waiting in getNextEvent(), so it can
// pick up a new EventQueue. Post the waking event before
// topQueue.nextQueue is assigned, otherwise the event would
// go newEventQueue
topQueue
.
postEventPrivate
(
new
InvocationEvent
(
topQueue
,
dummyRunnable
));
}
newEventQueue
.
previousQueue
=
topQueue
;
topQueue
.
nextQueue
=
newEventQueue
;
...
...
test/java/awt/Toolkit/AutoShutdown/EventQueuePush/EventQueuePushAutoshutdown.java
0 → 100644
浏览文件 @
8d59b8d3
/*
* Copyright (c) 2015, 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.
*
* 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.
*/
/*
test
@bug 8081485
@summary tests that a program terminates automatically after EventQueue.push()
@author Anton Nashatyrev : area=toolkit
*/
import
java.awt.*
;
public
class
EventQueuePushAutoshutdown
implements
Runnable
{
private
volatile
int
status
=
2
;
public
EventQueuePushAutoshutdown
()
throws
Exception
{
Runtime
.
getRuntime
().
addShutdownHook
(
new
Thread
(
this
));
Thread
thread
=
new
Thread
()
{
@Override
public
void
run
()
{
status
=
0
;
try
{
Thread
.
sleep
(
10000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
finally
{
status
=
1
;
System
.
exit
(
status
);
}
}
};
thread
.
setDaemon
(
true
);
thread
.
start
();
System
.
setProperty
(
"java.awt.headless"
,
"true"
);
final
EventQueue
systemQueue
=
Toolkit
.
getDefaultToolkit
().
getSystemEventQueue
();
systemQueue
.
push
(
new
EventQueue
());
EventQueue
.
invokeAndWait
(
new
Runnable
()
{
@Override
public
void
run
()
{
System
.
out
.
println
(
"Activated EDT"
);
}
});
System
.
out
.
println
(
"After EDT activation"
);
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
EventQueuePushAutoshutdown
();
}
@Override
public
void
run
()
{
Runtime
.
getRuntime
().
halt
(
status
);
}
}
test/java/awt/Toolkit/AutoShutdown/EventQueuePush/EventQueuePushAutoshutdown.sh
0 → 100644
浏览文件 @
8d59b8d3
#!/bin/ksh -p
#
# Copyright (c) 20015, 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.
#
# 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.
#
#
# @test EventQueuePushAutoshutdown.sh
# @bug 8081485
# @summary tests that a program terminates automatically
# after EventQueue.push()
# @author Anton Nashatyrev : area=toolkit
#
# @compile EventQueuePushAutoshutdown.java
# @run shell EventQueuePushAutoshutdown.sh
# Beginning of subroutines:
status
=
1
#Call this from anywhere to fail the test with an error message
# usage: fail "reason why the test failed"
fail
()
{
echo
"The test failed :-("
echo
"
$*
"
1>&2
echo
"exit status was
$status
"
exit
$status
}
#end of fail()
#Call this from anywhere to pass the test with a message
# usage: pass "reason why the test passed if applicable"
pass
()
{
echo
"The test passed!!!"
echo
"
$*
"
1>&2
exit
0
}
#end of pass()
# end of subroutines
# The beginning of the script proper
OS
=
`
uname
-s
`
case
"
$OS
"
in
SunOS
|
Linux
|
Darwin
|
CYGWIN
*
)
FILESEP
=
"/"
;;
Windows_95
|
Windows_98
|
Windows_NT
|
Windows_ME
)
FILESEP
=
"
\\
"
;;
# catch all other OSs
*
)
echo
"Unrecognized system!
$OS
"
fail
"Unrecognized system!
$OS
"
;;
esac
# Want this test to run standalone as well as in the harness, so do the
# following to copy the test's directory into the harness's scratch directory
# and set all appropriate variables:
if
[
-z
"
${
TESTJAVA
}
"
]
;
then
# TESTJAVA is not set, so the test is running stand-alone.
# TESTJAVA holds the path to the root directory of the build of the JDK
# to be tested. That is, any java files run explicitly in this shell
# should use TESTJAVA in the path to the java interpreter.
# So, we'll set this to the JDK spec'd on the command line. If none
# is given on the command line, tell the user that and use a cheesy
# default.
# THIS IS THE JDK BEING TESTED.
if
[
-n
"
$1
"
]
;
then
TESTJAVA
=
$1
else
fail
"no JDK specified on command line!"
fi
TESTSRC
=
.
TESTCLASSES
=
.
STANDALONE
=
1
;
fi
echo
"JDK under test is:
$TESTJAVA
"
#Deal with .class files:
if
[
-n
"
${
STANDALONE
}
"
]
;
then
#if standalone, remind user to cd to dir. containing test before running it
echo
"Just a reminder: cd to the dir containing this test when running it"
# then compile all .java files (if there are any) into .class files
if
[
-a
*
.java
]
;
then
echo
"Reminder, this test should be in its own directory with all"
echo
"supporting files it needs in the directory with it."
${
TESTJAVA
}
/bin/javac ./
*
.java
;
fi
# else in harness so copy all the class files from where jtreg put them
# over to the scratch directory this test is running in.
else
cp
${
TESTCLASSES
}
/
*
.class
.
;
fi
#if in test harness, then copy the entire directory that the test is in over
# to the scratch directory. This catches any support files needed by the test.
if
[
-z
"
${
STANDALONE
}
"
]
;
then
cp
${
TESTSRC
}
/
*
.
fi
#Just before executing anything, make sure it has executable permission!
chmod
777 ./
*
############### YOUR TEST CODE HERE!!!!!!! #############
#All files required for the test should be in the same directory with
# this file. If converting a standalone test to run with the harness,
# as long as all files are in the same directory and it returns 0 for
# pass, you should be able to cut and paste it into here and it will
# run with the test harness.
${
TESTJAVA
}
/bin/java EventQueuePushAutoshutdown
############### END YOUR TEST CODE !!!!! ############
#Be sure the last command executed above this line returns 0 for success,
# something non-zero for failure.
status
=
$?
# pass or fail the test based on status of the command
case
"
$status
"
in
0
)
pass
""
;;
1
)
fail
"The program didn't automatically shut down"
;;
*
)
fail
"The program terminated unexpectedly!"
;;
esac
#For additional examples of how to write platform independent KSH scripts,
# see the jtreg file itself. It is a KSH script for both Solaris and Win32
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录