blob: bcab57e71f97910c71b269f4a2c7fa280e684038 [file] [log] [blame]
bae73e58062011-03-27 15:51:44 +04001/*
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25* @test
26* @bug 6985593
27* @summary Test verifies that rendering standard images to screen does
28* not caiuse a crash in case of XRender.
29* @run main/othervm -Dsun.java2d.xrender=True XRenderBlitsTest
30*/
31
32import java.awt.Color;
33import java.awt.Component;
34import java.awt.Dimension;
35import java.awt.Frame;
36import java.awt.Graphics;
37import java.awt.Graphics2D;
38import java.awt.image.BufferedImage;
39import java.util.ArrayList;
40import java.util.concurrent.CountDownLatch;
41
42public class XRenderBlitsTest {
43
44 private static final int w = 10;
45 private static final int h = 10;
46
47 public static void main(String[] args) {
48 final CountDownLatch done = new CountDownLatch(1);
49
50 final ArrayList<BufferedImage> images = new ArrayList<BufferedImage>();
51
52 int type = BufferedImage.TYPE_INT_RGB;
53 do {
54 BufferedImage img = new BufferedImage(w, h, type++);
55 Graphics2D g2d = img.createGraphics();
56 g2d.setColor(Color.pink);
57 g2d.fillRect(0, 0, w, h);
58 g2d.dispose();
59
60 images.add(img);
61 } while (type <= BufferedImage.TYPE_BYTE_INDEXED);
62
63 Frame f = new Frame("Draw images");
64 Component c = new Component() {
65
66 @Override
67 public Dimension getPreferredSize() {
68 return new Dimension(w * images.size(), h);
69 }
70
71 @Override
72 public void paint(Graphics g) {
73 int x = 0;
74 for (BufferedImage img : images) {
75 System.out.println("Draw image " + img.getType());
76 g.drawImage(img, x, 0, this);
77 x += w;
78 }
79 done.countDown();
80 }
81 };
82 f.add("Center", c);
83 f.pack();
84 f.setVisible(true);
85
86 // now wait for test results
87 try {
88 done.await();
89 } catch (InterruptedException e) {
90 }
91 System.out.println("Test passed");
92 f.dispose();
93 }
94}