changeset 1428:4548cfdc09fe

* patches/icedtea-display-mode-changer.patch: New patch. * Makefile.am (ICEDTEA_PATCHES): Add new patch. * HACKING: Document new patch.
author Mark Wielaard <mark@klomp.org>
date Sat, 15 Nov 2008 14:07:14 +0100
parents bc2e4f1176b2
children 66a924d864e4
files ChangeLog HACKING Makefile.am patches/icedtea-display-mode-changer.patch
diffstat 4 files changed, 109 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Nov 14 10:10:11 2008 -0500
+++ b/ChangeLog	Sat Nov 15 14:07:14 2008 +0100
@@ -1,3 +1,9 @@
+2008-11-15  Mark Wielaard  <mark@klomp.org>
+
+	* patches/icedtea-display-mode-changer.patch: New patch.
+	* Makefile.am (ICEDTEA_PATCHES): Add new patch.
+	* HACKING: Document new patch.
+
 2008-11-14  Omair Majid  <omajid@redhat.com>
 
 	* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/EventLoop.java
--- a/HACKING	Fri Nov 14 10:10:11 2008 -0500
+++ b/HACKING	Sat Nov 15 14:07:14 2008 +0100
@@ -67,6 +67,7 @@
 * icedtea-cc-interp-no-fer.patch: Report that we cannot force early returns with the C++ interpreter.
 * icedtea-6761856-freetypescaler.patch: Fix IcedTea bug #227, OpenJDK bug
   #6761856, swing TextLayout.getBounds() returns shifted bounds.
+* icedtea-display-mode-changer.patch: Add extra test class.
 
 The following patches are only applied to OpenJDK6 in IcedTea6:
 
--- a/Makefile.am	Fri Nov 14 10:10:11 2008 -0500
+++ b/Makefile.am	Sat Nov 15 14:07:14 2008 +0100
@@ -537,7 +537,8 @@
 	patches/icedtea-linker-libs-order.patch \
 	patches/icedtea-f2i-overflow.patch \
 	patches/icedtea-cc-interp-no-fer.patch \
-	patches/icedtea-6761856-freetypescaler.patch
+	patches/icedtea-6761856-freetypescaler.patch \
+	patches/icedtea-display-mode-changer.patch
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-display-mode-changer.patch	Sat Nov 15 14:07:14 2008 +0100
@@ -0,0 +1,100 @@
+6733718: test /java/awt/FullScreen/UninitializedDisplayModeChangeTest/ fails
+Reviewed-by: igor
+
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/FullScreen/UninitializedDisplayModeChangeTest/DisplayModeChanger.java	Tue Aug 05 09:37:03 2008 -0700
+@@ -0,0 +1,93 @@
++/*
++ * Copyright 2006-2008 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.
++ */
++
++import java.awt.DisplayMode;
++import java.awt.EventQueue;
++import java.awt.Frame;
++import java.awt.GraphicsDevice;
++import java.awt.GraphicsEnvironment;
++import java.lang.reflect.InvocationTargetException;
++
++/**
++ * Used by the UninitializedDisplayModeChangeTest to change the
++ * display mode.
++ */
++public class DisplayModeChanger {
++
++    public static void main(String[] args)
++        throws InterruptedException, InvocationTargetException
++    {
++        final GraphicsDevice gd =
++            GraphicsEnvironment.getLocalGraphicsEnvironment().
++                getDefaultScreenDevice();
++
++        EventQueue.invokeAndWait(new Runnable() {
++            public void run() {
++                Frame f = null;
++                if (gd.isFullScreenSupported()) {
++                    try {
++                        f = new Frame("DisplayChanger Frame");
++                        gd.setFullScreenWindow(f);
++                        if (gd.isDisplayChangeSupported()) {
++                            DisplayMode dm = findDisplayMode(gd);
++                            if (gd != null) {
++                                gd.setDisplayMode(dm);
++                            }
++                        }
++                        try {
++                            Thread.sleep(1000);
++                        } catch (InterruptedException ex) {
++                            ex.printStackTrace();
++                        }
++                        gd.setFullScreenWindow(null);
++                    } finally {
++                        if (f != null) {
++                            f.dispose();
++                        }
++                    }
++                }
++            }
++        });
++    }
++
++    /**
++     * Finds a display mode that is different from the current display
++     * mode and is likely to cause a display change event.
++     */
++    private static DisplayMode findDisplayMode(GraphicsDevice gd) {
++        DisplayMode dms[] = gd.getDisplayModes();
++        DisplayMode currentDM = gd.getDisplayMode();
++        for (DisplayMode dm : dms) {
++            if (!dm.equals(currentDM) &&
++                 dm.getRefreshRate() == currentDM.getRefreshRate())
++            {
++                // different from the current dm and refresh rate is the same
++                // means that something else is different => more likely to
++                // cause a DM change event
++                return dm;
++            }
++        }
++        return null;
++    }
++
++}
+