/hg/release/icedtea6-1.10: 2 new changesets
dlila at icedtea.classpath.org
dlila at icedtea.classpath.org
Wed Jun 15 11:29:57 PDT 2011
changeset 5b3c3dc896d9 in /hg/release/icedtea6-1.10
details: http://icedtea.classpath.org/hg/release/icedtea6-1.10?cmd=changeset;node=5b3c3dc896d9
author: Denis Lila <dlila at redhat.com>
date: Thu Jun 09 13:43:35 2011 -0400
Fixes for PR677 and RH711900
changeset e296d9a4e90b in /hg/release/icedtea6-1.10
details: http://icedtea.classpath.org/hg/release/icedtea6-1.10?cmd=changeset;node=e296d9a4e90b
author: Denis Lila <dlila at redhat.com>
date: Wed Jun 15 13:46:13 2011 -0400
merge
diffstat:
ChangeLog | 37 +
Makefile.am | 7 +-
NEWS | 6 +
patches/f14-fonts.patch | 2 +-
patches/fonts-gentoo.patch | 4 +-
patches/fonts-rhel-version.patch | 32 +
patches/fonts-rhel.patch | 3 +-
patches/openjdk/6578583-modality-broken-vista.patch | 1439 +++++++++++++++
patches/openjdk/6610244-modal-fatal-error-windows.patch | 121 +
patches/openjdk/6693253-security_warning.patch | 25 +-
patches/openjdk/6769607-modal-hangs.patch | 161 +
patches/openjdk/7036148-npe-null-jmenu-name.patch | 83 +
12 files changed, 1901 insertions(+), 19 deletions(-)
diffs (truncated from 2043 to 500 lines):
diff -r a95c47b36218 -r e296d9a4e90b ChangeLog
--- a/ChangeLog Wed Jun 08 18:16:37 2011 +0100
+++ b/ChangeLog Wed Jun 15 13:46:13 2011 -0400
@@ -1,3 +1,40 @@
+2011-06-15 Denis Lila <dlila at redhat.com>
+
+ * Makefile.am: Apply patches.
+ * NEWS: Update with backports.
+ * patches/openjdk/6578583-modality-broken-vista.patch:
+ * patches/openjdk/6610244-modal-fatal-error-windows.patch:
+ * patches/openjdk/6769607-modal-hangs.patch:
+ New patches. The last fixes PR677. The other two are
+ necessary for the last to fully apply.
+ * patches/openjdk/6693253-security_warning.patch:
+ Replsace the awt_Dialog.cpp hunk with the corresponding hunk
+ from the OpenJDK7 changeset of which this patch is a backport.
+ Without this change, this patch doesn't apply unless the
+ previous 3 are removed.
+
+2011-06-14 Denis Lila <dlila at redhat.com>
+
+ * Makefile.am: Add patch.
+ * NEWS: Update with backports.
+ * patches/openjdk/7036148-npe-null-jmenu-name.patch:
+ Backport of S7036148. Fixes RH712211 too.
+
+2011-06-10 Pavel Tisnovsky <ptisnovs at redhat.com>
+
+ * patches/font-rhel.patch:
+ * patches/f14-fonts.patch:
+ * patches/fonts-gentoo.patch:
+ Patch updated: use only major RHEL version, not minor one.
+
+2011-06-10 Pavel Tisnovsky <ptisnovs at redhat.com>
+
+ * Makefile.am: Added new patch
+ * patches/fonts-rhel-version.patch:
+ Patch which ensures, that only one fontconfig file
+ will be needed on particular RHEL version
+ (ie. only one file for RHEL 6.0, RHEL 6.1 and RHEL 6.2)
+
2011-06-08 Andrew John Hughes <ahughes at redhat.com>
* NEWS: Add 1.10.3.
diff -r a95c47b36218 -r e296d9a4e90b Makefile.am
--- a/Makefile.am Wed Jun 08 18:16:37 2011 +0100
+++ b/Makefile.am Wed Jun 15 13:46:13 2011 -0400
@@ -203,6 +203,8 @@
ICEDTEA_PATCHES = \
$(SECURITY_PATCHES) \
+ patches/openjdk/6578583-modality-broken-vista.patch \
+ patches/openjdk/6610244-modal-fatal-error-windows.patch \
patches/stdc-limit-macros.patch \
patches/openjdk/4993545-nativeinlightfixer.patch \
patches/openjdk/6637796-set_bounds.patch \
@@ -214,6 +216,7 @@
patches/openjdk/6797195-hw_lw_mixing.patch \
patches/openjdk/6725214-direct3d-01.patch \
patches/openjdk/6633275-shaped_translucent_windows.patch \
+ patches/openjdk/6769607-modal-hangs.patch \
patches/openjdk/6791612-opengl-jni-fix.patch \
patches/openjdk/6755274-glgetstring-crash.patch \
patches/openjdk/6984543-onscreen_rendering_resize_test.patch \
@@ -341,7 +344,9 @@
patches/openjdk/7031385-gcc-register-allocation-fix.patch \
patches/shark-llvm-2.9.patch \
patches/openjdk/pgram-pipe-regression.patch \
- patches/openjdk/mutter.patch
+ patches/openjdk/mutter.patch \
+ patches/fonts-rhel-version.patch \
+ patches/openjdk/7036148-npe-null-jmenu-name.patch
if WITH_ALT_HSBUILD
ICEDTEA_PATCHES += \
diff -r a95c47b36218 -r e296d9a4e90b NEWS
--- a/NEWS Wed Jun 08 18:16:37 2011 +0100
+++ b/NEWS Wed Jun 15 13:46:13 2011 -0400
@@ -11,6 +11,12 @@
New in release 1.10.3 (20XX-XX-XX):
+* Backports:
+ - S7037283, RH712211: Null Pointer Exception in SwingUtilities2.
+ - S6769607, PR677: Modal frame hangs for a while.
+ - S6578583: Modality is broken in windows vista home premium from jdk1.7 b02 onwards.
+ - S6610244: modal dialog closes with fatal error if -Xcheck:jni is set
+
New in release 1.10.2 (2011-06-07):
* Security fixes
diff -r a95c47b36218 -r e296d9a4e90b patches/f14-fonts.patch
--- a/patches/f14-fonts.patch Wed Jun 08 18:16:37 2011 +0100
+++ b/patches/f14-fonts.patch Wed Jun 15 13:46:13 2011 -0400
@@ -8,7 +8,7 @@
+ fontconfig.Fedora.10.properties \
+ fontconfig.Fedora.11.properties \
+ fontconfig.Fedora.12.properties \
- fontconfig.RedHat.6.0.properties \
+ fontconfig.RedHat.6.properties \
fontconfig.Gentoo.properties
else
diff -r a95c47b36218 -r e296d9a4e90b patches/fonts-gentoo.patch
--- a/patches/fonts-gentoo.patch Wed Jun 08 18:16:37 2011 +0100
+++ b/patches/fonts-gentoo.patch Wed Jun 15 13:46:13 2011 -0400
@@ -5,8 +5,8 @@
fontconfig.SuSE.properties \
fontconfig.Ubuntu.properties \
fontconfig.Fedora.properties \
-- fontconfig.RedHat.6.0.properties
-+ fontconfig.RedHat.6.0.properties \
+- fontconfig.RedHat.6.properties
++ fontconfig.RedHat.6.properties \
+ fontconfig.Gentoo.properties
else
diff -r a95c47b36218 -r e296d9a4e90b patches/fonts-rhel-version.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/fonts-rhel-version.patch Wed Jun 15 13:46:13 2011 -0400
@@ -0,0 +1,33 @@
+--- openjdk-orig/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java 2011-06-09 16:04:24.000000000 +0200
++++ openjdk/jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java 2011-06-09 16:04:24.000000000 +0200
+@@ -169,7 +169,9 @@
+ osVersion = getVersionString(f);
+ } else if ((f = new File("/etc/redhat-release")).canRead()) {
+ osName = "RedHat";
+- osVersion = getVersionString(f);
++ // At this time we don't need to distinguish
++ // between RHEL 6.0 and RHEL 6.1 for example.
++ osVersion = getMajorVersionString(f);
+ } else if ((f = new File("/etc/turbolinux-release")).canRead()) {
+ osName = "Turbo";
+ osVersion = getVersionString(f);
+@@ -208,6 +210,19 @@
+ return null;
+ }
+
++ /**
++ * Gets the OS major version string from a Linux release-specific file.
++ */
++ private String getMajorVersionString(File f){
++ try {
++ Scanner sc = new Scanner(f);
++ return sc.findInLine("(\\d)+");
++ }
++ catch (Exception e){
++ }
++ return null;
++ }
++
+ private static final String fontsDirPrefix = "$JRE_LIB_FONTS";
+
+ protected String mapFileName(String fileName) {
diff -r a95c47b36218 -r e296d9a4e90b patches/fonts-rhel.patch
--- a/patches/fonts-rhel.patch Wed Jun 08 18:16:37 2011 +0100
+++ b/patches/fonts-rhel.patch Wed Jun 15 13:46:13 2011 -0400
@@ -7,12 +7,12 @@
fontconfig.Ubuntu.properties \
- fontconfig.Fedora.properties
+ fontconfig.Fedora.properties \
-+ fontconfig.RedHat.6.0.properties
++ fontconfig.RedHat.6.properties
else
FONTCONFIGS_SRC = $(CLOSED_SRC)/solaris/classes/sun/awt/fontconfigs
--- /dev/null 2010-12-20 09:26:08.850062021 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.RedHat.6.0.properties 2010-12-22 11:21:32.606781127 +0100
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.RedHat.6.properties 2010-12-22 11:21:32.606781127 +0100
@@ -0,0 +1,441 @@
+#
+# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
diff -r a95c47b36218 -r e296d9a4e90b patches/openjdk/6578583-modality-broken-vista.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6578583-modality-broken-vista.patch Wed Jun 15 13:46:13 2011 -0400
@@ -0,0 +1,1446 @@
+# HG changeset patch
+# User dcherepanov
+# Date 1205521233 -10800
+# Node ID 15ba7093f8e64e1facdfc48b8929edc6a4fbb0d3
+# Parent 92e3f57c933b45c678abcbccaa47de059dfe926a
+6578583: Regression: Modality is broken in windows vista home premium from jdk1.7 b02 onwards.
+Summary: WS_DISABLED style should be used to fix some modality bugs
+Reviewed-by: art, son
+
+diff -r 92e3f57c933b -r 15ba7093f8e6 src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp Fri Mar 14 20:40:09 2008 +0300
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp Fri Mar 14 22:00:33 2008 +0300
+@@ -5425,7 +5425,13 @@
+ void AwtComponent::Enable(BOOL bEnable)
+ {
+ sm_suppressFocusAndActivation = TRUE;
++
++ if (bEnable && IsTopLevel()) {
++ // we should not enable blocked toplevels
++ bEnable = !::IsWindow(AwtWindow::GetModalBlocker(GetHWnd()));
++ }
+ ::EnableWindow(GetHWnd(), bEnable);
++
+ sm_suppressFocusAndActivation = FALSE;
+ CriticalSection::Lock l(GetLock());
+ VerifyState();
+diff -r 92e3f57c933b -r 15ba7093f8e6 src/windows/native/sun/windows/awt_Dialog.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Dialog.cpp Fri Mar 14 20:40:09 2008 +0300
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Dialog.cpp Fri Mar 14 22:00:33 2008 +0300
+@@ -273,6 +273,10 @@
+ {
+ HWND blocker = AwtWindow::GetModalBlocker(AwtComponent::GetTopLevelParentForWindow(hWnd));
+ HWND topMostBlocker = blocker;
++ HWND prevForegroundWindow = ::GetForegroundWindow();
++ if (::IsWindow(blocker)) {
++ ::BringWindowToTop(hWnd);
++ }
+ while (::IsWindow(blocker)) {
+ topMostBlocker = blocker;
+ ::BringWindowToTop(blocker);
+@@ -282,7 +286,7 @@
+ // no beep/flash if the mouse was clicked in the taskbar menu
+ // or the dialog is currently inactive
+ if ((::WindowFromPoint(mhs->pt) == hWnd) &&
+- (::GetForegroundWindow() == topMostBlocker))
++ (prevForegroundWindow == topMostBlocker))
+ {
+ ::MessageBeep(MB_OK);
+ // some heuristics: 3 times x 64 milliseconds
+@@ -292,6 +296,7 @@
+ ::BringWindowToTop(topMostBlocker);
+ ::SetForegroundWindow(topMostBlocker);
+ }
++ return 1;
+ }
+ }
+ }
+diff -r 92e3f57c933b -r 15ba7093f8e6 src/windows/native/sun/windows/awt_Window.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp Fri Mar 14 20:40:09 2008 +0300
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp Fri Mar 14 22:00:33 2008 +0300
+@@ -180,7 +180,6 @@
+ }
+
+ ::RemoveProp(GetHWnd(), ModalBlockerProp);
+- ::RemoveProp(GetHWnd(), ModalSaveWSEXProp);
+
+ if (m_grabbedWindow == this) {
+ Ungrab();
+@@ -1455,20 +1454,17 @@
+ if (!::IsWindow(window)) {
+ return;
+ }
+- DWORD exStyle = ::GetWindowLong(window, GWL_EXSTYLE);
++
+ if (::IsWindow(blocker)) {
+- // save WS_EX_NOACTIVATE and WS_EX_APPWINDOW styles
+- DWORD saveStyle = exStyle & (AWT_WS_EX_NOACTIVATE | WS_EX_APPWINDOW);
+- ::SetProp(window, ModalSaveWSEXProp, reinterpret_cast<HANDLE>(saveStyle));
+- ::SetWindowLong(window, GWL_EXSTYLE, (exStyle | AWT_WS_EX_NOACTIVATE) & ~WS_EX_APPWINDOW);
+ ::SetProp(window, ModalBlockerProp, reinterpret_cast<HANDLE>(blocker));
++ ::EnableWindow(window, FALSE);
+ } else {
+- // restore WS_EX_NOACTIVATE and WS_EX_APPWINDOW styles
+- DWORD saveStyle = reinterpret_cast<DWORD>(::GetProp(window, ModalSaveWSEXProp));
+- ::SetWindowLong(window, GWL_EXSTYLE,
+- (exStyle & ~(AWT_WS_EX_NOACTIVATE | WS_EX_APPWINDOW)) | saveStyle);
+- ::RemoveProp(window, ModalSaveWSEXProp);
+ ::RemoveProp(window, ModalBlockerProp);
++ AwtComponent *comp = AwtComponent::GetComponent(window);
++ // we don't expect to be called with non-java HWNDs
++ DASSERT(comp && comp->IsTopLevel());
++ // we should not unblock disabled toplevels
++ ::EnableWindow(window, comp->isEnabled());
+ }
+ }
+
+diff -r 92e3f57c933b -r 15ba7093f8e6 src/windows/native/sun/windows/awt_Window.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h Fri Mar 14 20:40:09 2008 +0300
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.h Fri Mar 14 22:00:33 2008 +0300
+@@ -33,7 +33,6 @@
+
+ // property name tagging windows disabled by modality
+ static LPCTSTR ModalBlockerProp = TEXT("SunAwtModalBlockerProp");
+-static LPCTSTR ModalSaveWSEXProp = TEXT("SunAwtModalSaveWSEXProp");
+ static LPCTSTR ModalDialogPeerProp = TEXT("SunAwtModalDialogPeerProp");
+
+ #ifndef WH_MOUSE_LL
+diff -r 92e3f57c933b -r 15ba7093f8e6 test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java Fri Mar 14 22:00:33 2008 +0300
+@@ -0,0 +1,466 @@
++/*
++ * Copyright 2007 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++/*
++ @test %I% %E%
++ @bug 4080029
++ @summary Modal Dialog block input to all frame windows not just its parent.
++ @author dmitry.cherepanov: area=awt.modal
++ @run main/manual CloseBlocker
++*/
++
++/**
++ * ManualMainTest.java
++ *
++ * summary: The test opens and closes blocker dialog, the test verifies
++ * that active window is correct when the dialog is closed.
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++
++public class CloseBlocker
++{
++
++ private static void init()
++ {
++ //*** Create instructions for the user here ***
++
++ String[] instructions =
++ {
++ " the test will be run 6 times, to start next test just close all ",
++ " windows of previous; the instructions are the same for all tests: ",
++ " 1) there are two frames (one the frames has 'show modal' button), ",
++ " 2) press the button to show a dialog, ",
++ " 3) close the dialog (an alternative scenario - activate another",
++ " native window before closing the dialog), ",
++ " 4) the frame with button should become next active window, ",
++ " if it's true, then the test passed, otherwise, it failed. ",
++ " Press 'pass' button only after all of the 6 tests are completed, ",
++ " the number of the currently executed test is displayed on the ",
++ " output window. "
++ };
++ Sysout.createDialog( );
++ Sysout.printInstructions( instructions );
++
++ test(true, true, false);
++ test(true, true, true);
++ test(false, true, false); // 3rd parameter has no affect for ownerless
++
++ test(true, false, false);
++ test(true, false, true);
++ test(false, false, false); // 3rd parameter has no affect for ownerless
++
++ }//End init()
++
++ private static final Object obj = new Object();
++ private static int counter = 0;
++
++ /*
++ * The ownerless parameter indicates whether the blocker dialog
++ * has owner. The usual parameter indicates whether the blocker
++ * dialog is a Java dialog (non-native dialog like file dialog).
++ */
++ private static void test(final boolean ownerless, final boolean usual, final boolean initiallyOwnerIsActive) {
++
++ Sysout.print(" * test #" + (++counter) + " is running ... ");
++
++ final Frame active = new Frame();
++ final Frame nonactive = new Frame();
++ Button button = new Button("show modal");
++ button.addActionListener(new ActionListener() {
++ public void actionPerformed(ActionEvent ae) {
++ Dialog dialog = null;
++ Frame parent = ownerless ? null : (initiallyOwnerIsActive? active : nonactive);
++ if (usual) {
++ dialog = new Dialog(parent, "Sample", true);
++ } else {
++ dialog = new FileDialog(parent, "Sample", FileDialog.LOAD);
++ }
++ dialog.addWindowListener(new WindowAdapter(){
++ public void windowClosing(WindowEvent e){
++ e.getWindow().dispose();
++ }
++ });
++ dialog.setBounds(200, 200, 200, 200);
++ dialog.setVisible(true);
++ }
++ });
++
++ active.add(button);
++ active.setBounds(200, 400, 200, 200);
++ WindowAdapter adapter = new WindowAdapter(){
++ public void windowClosing(WindowEvent e){
++ active.dispose();
++ nonactive.dispose();
++ synchronized(obj) {
++ obj.notify();
++ }
++ }
++ };
++ active.addWindowListener(adapter);
++ active.setVisible(true);
++
++ nonactive.setBounds(400, 400, 200, 200);
++ nonactive.addWindowListener(adapter);
++ nonactive.setVisible(true);
++
++ synchronized(obj) {
++ try{
++ obj.wait();
++ } catch(Exception e) {
++ throw new RuntimeException(e);
++ }
++ }
++
++ Sysout.println(" completed. ");
++
++ }
++
++ /*****************************************************
++ * Standard Test Machinery Section
++ * DO NOT modify anything in this section -- it's a
++ * standard chunk of code which has all of the
++ * synchronisation necessary for the test harness.
++ * By keeping it the same in all tests, it is easier
++ * to read and understand someone else's test, as
++ * well as insuring that all tests behave correctly
++ * with the test harness.
++ * There is a section following this for test-defined
++ * classes
++ ******************************************************/
++ private static boolean theTestPassed = false;
++ private static boolean testGeneratedInterrupt = false;
++ private static String failureMessage = "";
++
++ private static Thread mainThread = null;
++
++ private static int sleepTime = 300000;
++
++ public static void main( String args[] ) throws InterruptedException
++ {
++ mainThread = Thread.currentThread();
++ try
++ {
++ init();
++ }
++ catch( TestPassedException e )
++ {
++ //The test passed, so just return from main and harness will
++ // interepret this return as a pass
++ return;
++ }
++ //At this point, neither test passed nor test failed has been
++ // called -- either would have thrown an exception and ended the
++ // test, so we know we have multiple threads.
++
++ //Test involves other threads, so sleep and wait for them to
++ // called pass() or fail()
++ try
++ {
++ Thread.sleep( sleepTime );
++ //Timed out, so fail the test
++ throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
++ }
++ catch (InterruptedException e)
++ {
++ if( ! testGeneratedInterrupt ) throw e;
++
++ //reset flag in case hit this code more than once for some reason (just safety)
++ testGeneratedInterrupt = false;
++ if ( theTestPassed == false )
++ {
++ throw new RuntimeException( failureMessage );
++ }
++ }
++
++ }//main
++
++ public static synchronized void setTimeoutTo( int seconds )
++ {
++ sleepTime = seconds * 1000;
++ }
++
++ public static synchronized void pass()
++ {
++ Sysout.println( "The test passed." );
++ Sysout.println( "The test is over, hit Ctl-C to stop Java VM" );
++ //first check if this is executing in main thread
++ if ( mainThread == Thread.currentThread() )
++ {
++ //Still in the main thread, so set the flag just for kicks,
++ // and throw a test passed exception which will be caught
++ // and end the test.
More information about the distro-pkg-dev
mailing list