8130390: Applet fails to launch on virtual desktop
authorssadetsky
Tue, 21 Jul 2015 09:35:04 +0300
changeset 31897 7be531b4df44
parent 31896 89a49ef6dda6
child 31898 6890dfde0ed1
8130390: Applet fails to launch on virtual desktop Reviewed-by: azvegint, serb
jdk/src/java.desktop/share/classes/java/awt/Component.java
jdk/test/java/awt/applet/Applet/AppletFlipBuffer.java
--- a/jdk/src/java.desktop/share/classes/java/awt/Component.java	Tue Jul 21 08:39:37 2015 +0300
+++ b/jdk/src/java.desktop/share/classes/java/awt/Component.java	Tue Jul 21 09:35:04 2015 +0300
@@ -3980,9 +3980,10 @@
 
     /**
      * Inner class for flipping buffers on a component.  That component must
-     * be a <code>Canvas</code> or <code>Window</code>.
+     * be a <code>Canvas</code> or <code>Window</code> or <code>Applet</code>.
      * @see Canvas
      * @see Window
+     * @see Applet
      * @see java.awt.image.BufferStrategy
      * @author Michael Martak
      * @since 1.4
@@ -4030,9 +4031,11 @@
 
         /**
          * Creates a new flipping buffer strategy for this component.
-         * The component must be a <code>Canvas</code> or <code>Window</code>.
+         * The component must be a <code>Canvas</code> or <code>Window</code> or
+         * <code>Applet</code>.
          * @see Canvas
          * @see Window
+         * @see Applet
          * @param numBuffers the number of buffers
          * @param caps the capabilities of the buffers
          * @exception AWTException if the capabilities supplied could not be
@@ -4049,10 +4052,11 @@
             throws AWTException
         {
             if (!(Component.this instanceof Window) &&
-                !(Component.this instanceof Canvas))
+                !(Component.this instanceof Canvas) &&
+                !(Component.this instanceof Applet))
             {
                 throw new ClassCastException(
-                    "Component must be a Canvas or Window");
+                        "Component must be a Canvas or Window or Applet");
             }
             this.numBuffers = numBuffers;
             this.caps = caps;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/applet/Applet/AppletFlipBuffer.java	Tue Jul 21 09:35:04 2015 +0300
@@ -0,0 +1,55 @@
+/*
+ * 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 8130390
+   @summary Applet fails to launch on virtual desktop
+   @author Semyon Sadetsky
+  */
+
+import sun.awt.AWTAccessor;
+
+import java.applet.Applet;
+import java.awt.*;
+
+public class AppletFlipBuffer {
+    public static void main(String[] args) throws Exception {
+        Applet applet = new Applet();
+        AWTAccessor.ComponentAccessor componentAccessor
+                = AWTAccessor.getComponentAccessor();
+        BufferCapabilities caps = new BufferCapabilities(
+                new ImageCapabilities(true), new ImageCapabilities(true),
+                BufferCapabilities.FlipContents.BACKGROUND);
+        Frame frame = new Frame();
+        try {
+            frame.add(applet);
+            frame.setUndecorated(true);
+            frame.setVisible(true);
+            componentAccessor.createBufferStrategy(applet, 2, caps);
+            System.out.println("ok");
+        }
+        finally {
+            frame.dispose();
+        }
+    }
+}
\ No newline at end of file