/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