changeset 2474:66583bad263a

Merge
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 17 Feb 2011 23:36:09 +0000
parents 6ce6dfbaebe5 (current diff) 2d689773ef17 (diff)
children 596b7c83ba98
files ChangeLog Makefile.am patches/661505-jpeg.patch patches/gcc-suffix.patch patches/ia64-fix.patch patches/icedtea-no-precompiled.patch patches/icedtea-sparc-buildfixes.patch patches/icedtea-text-relocations.patch patches/icedtea-too-many-args.patch patches/params-cast-size_t.patch
diffstat 242 files changed, 47153 insertions(+), 10006 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Jan 22 03:48:53 2011 +0000
+++ b/ChangeLog	Thu Feb 17 23:36:09 2011 +0000
@@ -1,3 +1,276 @@
+2011-02-17  Andrew John Hughes  <ahughes@redhat.com>
+
+	6693253: Security Warning appearance requires enhancements
+	6779717: A Window does not show applet security warning icon on X platforms
+	6785058: Parent don't get the focus after dialog is closed if security warning is applied
+	* Makefile.am: Add new patch.
+	* patches/openjdk/6307603-xrender-01.patch: Rejigged.
+	* patches/openjdk/6693253-security_warning.patch:
+	Security warning backport.
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw16.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw24.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw32.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw48.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim16.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim24.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim32.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim48.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow16.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow24.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow32.png,
+	* overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow48.png,
+	* overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning.ico,
+	* overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning_bw.ico,
+	* overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning_int.ico:
+	Images for new backport.
+	* NEWS: Updated.
+
+2011-02-16  Denis Lila <dlila@redhat.com>
+
+	* NEWS: Update with the backports
+	* Makefile.am (ICEDTEA_PATCHES): Added the 2 patches
+	* patches/openjdk/6728834-blurred-lcd-aa-text.patch
+	* patches/openjdk/6749060-bad-lcd-aa-non-opaque-dest.patch
+
+2011-02-16  Xerxes Ranby  <xerxes@zafena.se>
+	    Mark Wielaard  <mark@klomp.org>
+
+	PR632: 6878713.patch breaks shark zero build
+	* patches/icedtea-stdc-limit-macros.patch
+	(openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp):
+	Only define __STDC_LIMIT_MACROS if undefined.
+	* Makefile.am (ICEDTEA_PATCHES): Add new patch.
+	* NEWS: Updated.
+
+2011-02-16  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/icedtea-nomotif-6706121.patch:
+	Remove .orig file created by previous
+	recreation of patch.
+
+2011-02-16  Denis Lila <dlila@redhat.com>
+
+	* NEWS: Update with the backport
+	* Makefile.am (ICEDTEA_PATCHES): Added the patch
+	* patches/openjdk/6896068-sg2d.patch: Patch
+
+2011-02-16  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Include new releases:
+	1.7.9, 1.7.10, 1.8.6, 1.8.7, 1.9.6, 1.9.7.
+
+2011-02-11  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add additional patch.
+	* NEWS: Updated.
+	* patches/security/20110215/6927050.patch,
+	Add patch for 6927050 missing from first two
+	Oracle bundles.
+
+2011-02-10  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add additional patch.
+	* NEWS: Updated.
+	* patches/security/20110215/6985453.patch:
+	Add patch for 6985453 missing from first Oracle
+	bundle.
+
+2011-02-09  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add new patches.
+	* NEWS: Updated.
+	* patches/icedtea-nio2.patch: Rejigged.
+	* patches/openjdk/6633275-shaped_translucent_windows.patch,
+	* patches/openjdk/6797195-hw_lw_mixing.patch:
+	Fixed to accomodate appearance of AWTAccessor via
+	security patch.
+	* patches/security/20110215/6878713.patch,
+	* patches/security/20110215/6907662.patch,
+	* patches/security/20110215/6981922.patch,
+	* patches/security/20110215/6983554.patch,
+	* patches/security/20110215/6994263.patch:
+	Security updates from Oracle SSR.
+
+2011-02-15  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Mention backports of copyright header
+	fixes for 6616323 and 6633275.
+
+2011-02-15  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add patch below.
+	* NEWS: Updated.
+	* patches/openjdk/6633275-shaped_translucent_windows.patch:
+	Support shaped/translucent windows
+
+2011-02-13  Andrew John Hughes  <ahughes@redhat.com>
+
+	G344659: Fix issue when building on SPARC
+	* Makefile.am: Add new patch.
+	* NEWS: Updated.
+	* patches/g344659-sparc_fix.patch:
+	Add fix for SPARC builds on Gentoo.
+
+2011-02-13  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Updated.
+
+2011-02-11  Omair Majid  <omajid@redhat.com>
+
+	RH676659: Pass -export-dynamic option to linker not gcc.
+	* Makefile.am: Add new patch.
+	* patches/rh676659-gcc-export-dynamic.patch:
+	Pass -Wl,-export-dynamic rather than -export-dynamic.
+
+2011-02-09  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add patch.
+	* NEWS: Updated.
+	* patches/security/20110209/4421494.patch:
+	Add floating point bug fix.
+
+2011-02-06  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am: Add patches below.
+	* patches/openjdk/4993545-nativeinlightfixer.patch,
+	* patches/openjdk/6607170-request_focus.patch,
+	* patches/openjdk/6607660-treelock.patch,
+	* patches/openjdk/6616323-component_array.patch,
+	* patches/openjdk/6637796-set_bounds.patch,
+	* patches/openjdk/6682046-shape_calculation.patch,
+	New AWT backports from OpenJDK7.
+	* patches/openjdk/6725214-direct3d-01.patch:
+	Rejigged against new patches with Oracle copyrights added.
+	* patches/openjdk/6797195-hw_lw_mixing.patch:
+	New AWT backport from OpenJDK7.
+
+2011-02-03  Andrew John Hughes  <ahughes@redhat.com>
+
+	PR616, PR99:
+	* Makefile.am: Add new patch.
+	* patches/jtreg-6929067-fix.patch:
+	Link against pthread explicitly now
+	libstdc++ is no longer static.
+	* patches/no-static-linking.patch:
+	Don't statically link libstdc++ or
+	libgcc.
+	* NEWS: Updated.
+
+2011-02-01  Denis Lila <dlila@redhat.com>
+
+	* NEWS: Update with the 3 backports
+	* Makefile.am (ICEDTEA_PATCHES): Add the patches
+	* patches/openjdk/4493128-CubicCurve2D.patch: New file.
+	* patches/openjdk/4645692-CubicCurve2D.solveCubic.patch: Likewise.
+	* patches/openjdk/4724552-CubicCurve2D.patch: Likewise.
+
+2011-02-01  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Add announcements for 1.7.8,
+	1.8.5 and 1.9.5.
+
+2011-02-01  Pavel Tisnovsky  <ptisnovs@redhat.com>
+
+	* patches/jtreg-png-reader.patch:
+	Added two new regression tests which check correct behaviour of PNG
+	reader.
+
+2011-01-29  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/gcc-suffix.patch,
+	* patches/ia64-fix.patch:
+	Split into original and hs20 versions.
+	* patches/icedtea-no-precompiled.patch:
+	Apply to original only.
+	* patches/icedtea-sparc-buildfixes.patch,
+	* patches/icedtea-text-relocations.patch,
+	* patches/icedtea-too-many-args.patch,
+	* patches/params-cast-size_t.patch:
+	Split into original and hs20 versions.
+	* INSTALL:
+	Document new status (original as default,
+	hs20 as alternative).
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Updated with changes listed.
+	(replace-hotspot): Use ${HSBUILD} instead of hardcoded hs19.
+	* NEWS: List availability of hs20.
+	* acinclude.m4:
+	(AC_CHECK_WITH_HOTSPOT_BUILD): Provide hs20 as alternate build.
+	* hotspot.map: Add hs20.
+	* patches/arm.patch: Split bytecodes_zero.hpp changes into original
+	and hs20 versions.
+	* patches/hotspot/hs20/arm.patch,
+	hs20 version of bytecodes_zero.hpp changes.
+	* patches/hotspot/hs20/gcc-suffix.patch,
+	* patches/hotspot/hs20/ia64-fix.patch,
+	* patches/hotspot/hs20/params-cast-size_t.patch,
+	* patches/hotspot/hs20/sparc-buildfixes.patch:
+	hs20 version of patches.
+	* patches/hotspot/hs20/systemtap.patch:
+	hs20 version of dtrace.hpp changes.
+	* patches/hotspot/hs20/text-relocations.patch:
+	hs20 versions of patch.
+	* patches/hotspot/original/arm.patch:
+	original version of bytecodes_zero.hpp changes.
+	* patches/hotspot/original/gcc-suffix.patch,
+	* patches/hotspot/original/ia64-fix.patch:
+	original versions of patches moved from patches directory.
+	* patches/hotspot/original/no-precompiled-headers.patch:
+	Only for original; USE_PRECOMPILED_HEADER=0 provides the
+	same in hs20.
+	* patches/hotspot/original/params-cast-size_t.patch,
+	* patches/hotspot/original/sparc-buildfixes.patch:
+	original versions of patches moved from patches directory.
+	* patches/hotspot/original/systemtap.patch:
+	original version of dtrace.hpp changes.
+	* patches/hotspot/original/text-relocations.patch,
+	* patches/hotspot/original/too-many-args.patch:
+	original versions of patches moved from patches directory.
+	* patches/systemtap.patch:
+	Split dtrace.hpp changes into original and hs20 versions.
+
+2011-01-24  Omair Majid  <omajid@redhat.com>
+
+	* NEWS: Update with the 3 backports
+	* Makefile.am (ICEDTEA_PATCHES): Add the patches
+	* patches/openjdk/6736649-text_bearings.patch: New file.
+	* patches/openjdk/6797139-jbutton_truncation.patch: Likewise.
+	* patches/openjdk/6883341-text_bearing_exception.patch: Likewise.
+
+2011-01-24  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Add unlisted backports.
+
+2011-01-24  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/661505-jpeg.patch:
+	Move to...
+	* Makefile.am: Add rh prefix to jpeg fix.
+	* NEWS: Move jpeg fix to Bug Fixes as not
+	a backport.
+	* patches/rh661505-jpeg.patch:
+	... here.
+
+2011-01-24  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Add 1.9.3, 1.9.4, 1.7.7 and 1.8.4
+	NEWS entries.
+
+2011-01-24  Andrew John Hughes  <ahughes@redhat.com>
+
+	* NEWS: Update 1.10 with b21 changes.
+	Remove changes in b21 from list of backports.
+
+2010-01-22  Mark Wielaard  <mark@klomp.org>
+
+	* configure.ac: Add xvfb-run AC_CHECK_PROG.
+	* Makefile.am (check-jdk): Use xvfb-run if available and DISPLAY
+	not set.
+
+2010-01-22  Mark Wielaard  <mark@klomp.org>
+
+        * Makefile.am (ICEDTEA_PATCHES): Add missing backslash.
+
 2011-01-22  Andrew John Hughes  <ahughes@redhat.com>
 
 	* Makefile.am:
--- a/INSTALL	Sat Jan 22 03:48:53 2011 +0000
+++ b/INSTALL	Thu Feb 17 23:36:09 2011 +0000
@@ -165,7 +165,7 @@
 * --enable-cacao: Replace HotSpot with the CACAO VM.
 * --enable-shark: Build the Shark LLVM-based JIT.
 * --enable-zero: Build the zero assembler port on x86/x86_64/sparc platforms.
-* --with-hotspot-build: The HotSpot to use, defaulting to 'hs19'.
+* --with-hotspot-build: The HotSpot to use, defaulting to 'original'.
 * --with-rhino: Include Javascript support using Rhino.
 * --with-additional-vms=vm-list: Additional VMs to build using the system described
   below.
@@ -301,16 +301,16 @@
 download stage and just verifies that the zip's MD5 sum matches that
 of the requested build.
 
-At present, IcedTea6 supports the 'original' HotSpot 17 provided as
-part of the upstream tarball and HotSpot 19 ('hs19') from the stable
-hs19 tree at http://hg.openjdk.java.net/hsx/hsx19/master.  The default
-is 'hs19'; passing --with-hotspot-build=original to configure will
-revert to the version of hs17 provided in b20.  Note that the norm. is
+At present, IcedTea6 supports the 'original' HotSpot 19 provided as
+part of the upstream tarball and HotSpot 20 ('hs20') from the stable
+hs20 tree at http://hg.openjdk.java.net/hsx/hsx20/baseline.  The default
+is 'original'; passing --with-hotspot-build=hs20 to configure will
+use the version of hs20 specified in hotspot.map.  Note that the norm. is
 for up to one alternate (non-default) build to be supported and just
 passing --with-hotspot-build (equivalent to --with-hotspot-build=yes)
-will always provide the alternate build (currently hs19).  Conversely,
+will always provide the alternate build (currently hs20).  Conversely,
 passing --with-hotspot-build=no provides the original build (currently
-hs17).
+hs19).
 
 Javascript Support
 ==================
--- a/Makefile.am	Sat Jan 22 03:48:53 2011 +0000
+++ b/Makefile.am	Thu Feb 17 23:36:09 2011 +0000
@@ -174,16 +174,38 @@
 
 ICEDTEA_FSG_PATCHES =
 
-SECURITY_PATCHES =
+SECURITY_PATCHES = patches/security/20110209/4421494.patch \
+	patches/security/20110215/6878713.patch \
+	patches/security/20110215/6907662.patch \
+	patches/security/20110215/6981922.patch \
+	patches/security/20110215/6983554.patch \
+	patches/security/20110215/6994263.patch \
+	patches/security/20110215/6985453.patch \
+	patches/security/20110215/6927050.patch
+
 
 ICEDTEA_PATCHES = \
 	$(SECURITY_PATCHES) \
+	patches/icedtea-stdc-limit-macros.patch \
+	patches/openjdk/4993545-nativeinlightfixer.patch \
+	patches/openjdk/6637796-set_bounds.patch \
+	patches/openjdk/6607660-treelock.patch \
+	patches/openjdk/6607170-request_focus.patch \
+	patches/openjdk/6616323-component_array.patch \
+	patches/openjdk/6682046-shape_calculation.patch \
+	patches/openjdk/6797195-hw_lw_mixing.patch \
+	patches/openjdk/6725214-direct3d-01.patch \
+	patches/openjdk/6633275-shaped_translucent_windows.patch \
+        patches/openjdk/6791612-opengl-jni-fix.patch \
+        patches/openjdk/6755274-glgetstring-crash.patch \
+        patches/openjdk/6984543-onscreen_rendering_resize_test.patch \
+	patches/openjdk/6693253-security_warning.patch \
 	patches/icedtea-notice-safepoints.patch \
 	patches/icedtea-parisc-opt.patch \
 	patches/icedtea-lucene-crash.patch \
 	patches/icedtea-version.patch \
 	patches/icedtea-version-hotspot.patch \
-	patches/icedtea-text-relocations.patch \
+	patches/hotspot/$(HSBUILD)/text-relocations.patch \
 	patches/icedtea-ssl.patch \
 	patches/icedtea-rmi_amd64.patch \
 	patches/icedtea-tools.patch \
@@ -191,7 +213,7 @@
 	patches/icedtea-headers.patch \
 	patches/icedtea-headers-hotspot.patch \
 	patches/icedtea-gcc-suffix.patch \
-	patches/gcc-suffix.patch \
+	patches/hotspot/$(HSBUILD)/gcc-suffix.patch \
 	patches/icedtea-bytebuffer-compact.patch \
 	patches/memory-limits.patch \
 	patches/icedtea-sunsrc.patch \
@@ -210,7 +232,7 @@
 	patches/icedtea-alt-jar.patch \
 	patches/icedtea-jdk-use-ssize_t.patch \
 	patches/icedtea-use-idx_t.patch \
-	patches/params-cast-size_t.patch \
+	patches/hotspot/$(HSBUILD)/params-cast-size_t.patch \
 	patches/icedtea-clean-crypto.patch \
 	patches/icedtea-arch.patch \
 	patches/icedtea-lc_ctype.patch \
@@ -221,7 +243,7 @@
 	patches/icedtea-testenv.patch \
 	patches/icedtea-samejvm-safe.patch \
 	patches/icedtea-pr261.patch \
-	patches/icedtea-sparc-buildfixes.patch \
+	patches/hotspot/$(HSBUILD)/sparc-buildfixes.patch \
 	patches/icedtea-sparc64-linux.patch \
 	patches/icedtea-sparc-ptracefix.patch \
 	patches/icedtea-sparc-trapsfix.patch \
@@ -237,7 +259,6 @@
 	patches/icedtea-disable-cc-incompatible-sanity-checks.patch \
 	patches/icedtea-explicit-target-arch.patch \
 	patches/icedtea-gcc-stack-markings.patch \
-	patches/icedtea-no-precompiled.patch \
 	patches/icedtea-parisc.patch \
 	patches/icedtea-sh4-support.patch \
 	patches/icedtea-policy-evaluation.patch \
@@ -246,6 +267,7 @@
 	patches/applet_hole.patch \
 	patches/icedtea-jtreg-httpTest.patch \
 	patches/arm.patch \
+	patches/hotspot/$(HSBUILD)/arm.patch \
 	patches/debug-dir.patch \
 	patches/no-sync.patch \
 	patches/icedtea-override-redirect-metacity.patch \
@@ -253,7 +275,6 @@
 	patches/fonts-rhel.patch \
 	patches/fonts-gentoo.patch \
 	patches/ipv4-mapped-ipv6-addresses.patch \
-	patches/icedtea-too-many-args.patch \
 	patches/icedtea-jtreg-OpenGLContextInit.patch \
 	patches/openjdk/6510892-httpserver_test.patch \
 	patches/openjdk/6638712-wildcard_types.patch \
@@ -261,7 +282,6 @@
 	patches/numa_on_early_glibc.patch \
 	patches/icedtea-jtreg-international-fonts.patch \
 	patches/openjdk/6967436-6976265-6967434-pisces.patch \
-	patches/openjdk/6997495-test_correction_6857159.patch \
 	patches/f14-fonts.patch \
 	patches/jtreg-WindowWithWarningTest.patch \
 	patches/jtreg-T6638712-fix.patch \
@@ -270,11 +290,31 @@
 	patches/jtreg-6929067-fix.patch \
 	patches/rendering-engine-tests.patch \
 	patches/openjdk/6800846-printing-quality.patch \
-	patches/661505-jpeg.patch \
+	patches/rh661505-jpeg.patch \
 	patches/6703377-freetypescaler.patch \
-	patches/ia64-fix.patch
+	patches/hotspot/$(HSBUILD)/ia64-fix.patch \
 	patches/openjdk/6642612-filechooser_button_sizes.patch \
-	patches/jtreg-international-fonts-styles.patch
+	patches/jtreg-international-fonts-styles.patch \
+	patches/openjdk/6736649-text_bearings.patch \
+	patches/openjdk/6797139-jbutton_truncation.patch \
+	patches/openjdk/6883341-text_bearing_exception.patch \
+	patches/jtreg-png-reader.patch \
+	patches/openjdk/4724552-CubicCurve2D.patch \
+	patches/openjdk/4493128-CubicCurve2D.patch \
+	patches/openjdk/4645692-CubicCurve2D.solveCubic.patch \
+	patches/no-static-linking.patch \
+	patches/rh676659-gcc-export-dynamic.patch \
+	patches/g344659-sparc_fix.patch \
+	patches/openjdk/6728834-blurred-lcd-aa-text.patch \
+	patches/openjdk/6749060-bad-lcd-aa-non-opaque-dest.patch \
+	patches/openjdk/6896068-sg2d.patch
+
+if !WITH_ALT_HSBUILD
+ICEDTEA_PATCHES += \
+	patches/hotspot/$(HSBUILD)/no-precompiled-headers.patch \
+	patches/hotspot/$(HSBUILD)/too-many-args.patch \
+	patches/openjdk/6997495-test_correction_6857159.patch
+endif
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
@@ -301,12 +341,8 @@
 endif
 
 if ENABLE_XRENDER
-ICEDTEA_PATCHES += patches/openjdk/6725214-direct3d-01.patch \
-	patches/openjdk/6307603-xrender-01.patch \
+ICEDTEA_PATCHES += patches/openjdk/6307603-xrender-01.patch \
 	patches/openjdk/6961633-xrender-02.patch \
-        patches/openjdk/6791612-opengl-jni-fix.patch \
-        patches/openjdk/6755274-glgetstring-crash.patch \
-        patches/openjdk/6984543-onscreen_rendering_resize_test.patch \
 	patches/xrender-gc-cleanup.patch
 endif
 
@@ -316,6 +352,7 @@
 
 if ENABLE_SYSTEMTAP
 ICEDTEA_PATCHES += patches/systemtap.patch \
+	patches/hotspot/$(HSBUILD)/systemtap.patch \
 	patches/systemtap-gcc-4.5.patch \
 	patches/systemtap-alloc-size-workaround.patch
 endif
@@ -842,7 +879,7 @@
 	  then \
 	    $(TAR) xf $(HOTSPOT_SRC_ZIP) ; \
 	    dir=$$($(AWK) 'version==$$1 {print gensub(/.*\/([^/]*)$$/,"\\1","g",$$2)}' \
-	      version=hs19 $(abs_top_srcdir)/hotspot.map) ; \
+	      version=$(HSBUILD) $(abs_top_srcdir)/hotspot.map) ; \
 	    chmod -R ug+w $$dir-* ; \
 	    mv $$dir-$$($(AWK) 'version==$$1 {print $$3}' version=$(HSBUILD) \
 	      $(abs_top_srcdir)/hotspot.map) openjdk/hotspot ; \
@@ -1898,6 +1935,11 @@
 
 check-jdk: stamps/jtreg.stamp
 	mkdir -p test/jdk/JTwork test/jdk/JTreport
+	if test "x$${DISPLAY}" = "x"; then XVFB_RUN="@XVFB_RUN_CMD@"; fi; \
+	if test "x$${DISPLAY}" = "x" && test "x$${XVFB_RUN}" = "x"; then \
+		echo "WARNING: DISPLAY not set and xvfb-run not found"; \
+	fi; \
+	$${XVFB_RUN} \
 	$(BOOT_DIR)/bin/java -jar test/jtreg.jar -v1 -a -ignore:quiet \
 		-w:test/jdk/JTwork -r:test/jdk/JTreport \
 		$${ICEDTEA_JTREG_OTHERVM:--samevm} \
--- a/NEWS	Sat Jan 22 03:48:53 2011 +0000
+++ b/NEWS	Thu Feb 17 23:36:09 2011 +0000
@@ -8,58 +8,578 @@
 
 CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
 
-New in release 1.10 (2010-XX-XX):
+New in release 1.10 (2011-XX-XX):
 
-* Upgrade to HotSpot 19 as default.
 * NetX and the plugin moved to the IcedTea-Web project with a separate
   release cycle.
 * Shark provided upstream rather than as part of IcedTea.
 * The option --with-openjdk becomes --with-jdk-home and --disable-bootstrap
-* Security updates
-  - S6914943, CVE-2009-3555: TLS: MITM attacks via session renegotiation 
-  - S6559775, CVE-2010-3568: OpenJDK Deserialization Race condition
-  - S6891766, CVE-2010-3554: OpenJDK corba reflection vulnerabilities
-  - S6925710, CVE-2010-3562: OpenJDK IndexColorModel double-free
-  - S6938813, CVE-2010-3557: OpenJDK Swing mutable static
-  - S6957564, CVE-2010-3548: OpenJDK DNS server IP address information leak
-  - S6958060, CVE-2010-3564: OpenJDK kerberos vulnerability
-  - S6963023, CVE-2010-3565: OpenJDK JPEG writeImage remote code execution
-  - S6963489, CVE-2010-3566: OpenJDK ICC Profile remote code execution
-  - S6966692, CVE-2010-3569: OpenJDK Serialization inconsistencies
-  - S6622002, CVE-2010-3553: UIDefault.ProxyLazyValue has unsafe reflection usage
+* Support for building with HotSpot 20 from its stable tree
+* Import of OpenJDK6 b21 including upgrade to HotSpot 19
+  - S6961870: More rebranding fixes for templates/gpl-*-header files
+  - S6976186: Shark build system changes
+  - S6962318: Update copyright year
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S6891766: Vulnerabilities in use of reflection in CORBA
+  - S6962318: Update copyright year
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S6962193: Rebrand some Zero files
+  - S6980711: HotSpot assembler_sparc changes needed for GNU/Linux on SPARC build
+  - S6910182: CMS: assert(_cursor[j] == _survivor_plab_array[j].end(),"Ctl pt invariant")
+  - S6914050: jvm assertion "guard pages must be in use" in -Xcomp mode
+  - S6933402: RFE: Improve PrintSafepointStatistics output to track cleanup time
+  - S6932536: JSR 292 modified JDK MethodHandlesTest fails on x86_64
+  - S6932270: Allow Java's ELF symtab reader to use separate debuginfo files
+  - S6919934: JSR 292 needs to support x86 C1
+  - S6932496: c1: deoptimization of jsr subroutine fails on sparcv9
+  - S6934089: Zero 32-bit/64kb page fix
+  - S6934494: JSR 292 MethodHandles adapters should be generated into their own CodeBlob
+  - S6935466: new CodeCache flushing code is not guarded by the flag
+  - S6934966: JSR 292 add C1 logic for saved SP over MethodHandle calls
+  - S6935535: String.indexOf() returns incorrect result on x86 with SSE4.2
+  - S6930043: C2: SIGSEGV in javasoft.sqe.tests.lang.arr017.arr01702.arr01702.loop_forw(II)I
+  - S6932091: JSR 292 x86 code cleanup
+  - S4396719: Mark Sweep stack overflow on deeply nested Object arrays
+  - S6755988: G1: assert(new_obj != 0 || ... "should be forwarded")
+  - S6921710: G1: assert(new_finger >= _finger && new_finger < _region_limit,"invariant")
+  - S6935839: excessive marking stack growth during full gcs
+  - S6935821: G1: threads created during marking do not active their SATB queues
+  - S6936366: Fork HS17 to HS18 - renumber Major and build numbers of JVM
+  - S6940419: Bump the HS18 build number to 02
+  - S6929067: Stack guard pages should be removed when thread is detached
+  - S6934758: Expose the break down of clean up task time during safepoint.
+  - S6923488: 4/4 need minor tweaks to HotSpot build for Cygwin
+  - S6935224: Adding new DTrace probes to work with Palantir
+  - S6936168: Recent fix for unmapping stack guard pages doesn't close /proc/self/maps
+  - S6938185: 3/4 6923488 breaks Windows command shell builds
+  - S6926979: should simplify catch_inline_exception
+  - S6939180: Zero locking fix
+  - S6939731: JSR 292 Zero build fix after 6934494
+  - S6939845: zero needs fallback path in C++ interpreter for platform dependent fast bytecodes
+  - S6936709: AsyncGetCallTrace doesn't handle inexact stack walking properly
+  - S6939804: ciConstant::print() prints incorrect bool value
+  - S6892265: System.arraycopy unable to reference elements beyond Integer.MAX_VALUE bytes
+  - S6894807: No ClassCastException for HashAttributeSet constructors if run with -Xcomp
+  - S6626217: Fixed loader constraint array handling
+  - S6932480: Fix crash in CompilerThread/Parser. Unloaded array klass?
+  - S6938627: Make temporary directory use property java.io.tmpdir when specified
+  - S6937160: G1: should observe GCTimeRatio
+  - S6677708: G1: re-enable parallel RSet updating and scanning
+  - S6940310: G1: MT-unsafe calls to CM::region_stack_push() / CM::region_stack_pop()
+  - S6909756: G1: guarantee(G1CollectedHeap::heap()->mark_in_progress(),"Precondition.")
+  - S6940894: G1: assert(new_obj != 0 || ... "should be forwarded") for compaction tests
+  - S6940520: CodeCache::scavenge_root_nmethods_do must fix oop relocations
+  - S6940677: Use 64 bytes chunk copy for arraycopy on Sparc
+  - S6940701: Don't align loops in stubs for Niagara sparc
+  - S6940733: allocate non static oop fields in super and sub classes together
+  - S6940726: Use BIS instruction for allocation prefetch on Sparc
+  - S6941529: SharedRuntime::raw_exception_handler_for_return_address must reset thread MethodHandle flag
+  - S6942223: c1 64 bit fixes
+  - S6944398: Bump the HS18 build number to 03
+  - S6938026: C2 compiler fails in Node::rematerialize()const
+  - S6939930: exception unwind changes in 6919934 hurts compilation speed
+  - S6941224: Improved stack overflow handling for Zero
+  - S6944028: 6940701 broke Zero
+  - S6944473: 6941224 misses new files
+  - S6944503: Improved Zero crash dump
+  - S6945219: minor SA fixes
+  - S6858496: Clear all SoftReferences before an out-of-memory due to GC overhead limit.
+  - S6937142: G1: improvements to debugging output (S-M)
+  - S6943926: G1: Integer overflow during heap region verification
+  - S6939027: G1: assertion failure during the concurrent phase of cleanup
+  - S6942253: G1: replace G1ParallelGCAllocBufferSize with YoungPLABSize and OldPLABSize
+  - S6897143: Stress test crashes during HeapInspection using ParallelGC.
+  - S6819061: G1: eliminate serial Other times that are proportional to the collection set length
+  - S6871109: G1: remove the concept of the scan only prefix
+  - S6946040: add intrinsic for short and char reverseBytes
+  - S6943485: JVMTI always on capabilities change code generation too much
+  - S6946892: c1 shouldn't sign-extend to upper 32bits on x64
+  - S6946056: assert((intptr_t) sp()<=(intptr_t) result,"result must>=than stack pointer"), frame_x86.cpp:295
+  - S6888953: some calls to function-like macros are missing semicolons
+  - S6888954: argument formatting for assert() and friends
+  - S6948636: Bump the HS18 build number to 04
+  - S6950438: Add 6u18 and 6u20 release values explicitly to jprt.properties file
+  - S6951190: assert(!klass_is_exact(),"only non-exact klass") while building JDK
+  - S6944822: Fix for 6938627 exposes problem with hard-coded buffer sizes
+  - S6935118: UseCompressedOops modification in methodOopDesc::sort_methods() causes JCK timeout
+  - S6949118: jvm.dll shows the company name as Sun Microsystems
+  - S6829193: JSR 292 needs to support SPARC
+  - S6948602: Disable use of SSE4.2 in String.indexOf intrinsic until 6942326 is fixed
+  - S6939182: Zero JNI handles fix
+  - S6943304: remove tagged stack interpreter
+  - S6939134: JSR 292 adjustments to method handle invocation
+  - S6939196: method handle signatures off the boot class path get linkage errors
+  - S6949423: remove tagged stack interpreter for Zero
+  - S6949830: 6939134 broke Zero
+  - S6950178: Zero stack improvements
+  - S6950617: Zero/Shark interface updates
+  - S6951784: Zero deoptimizer changes
+  - S6948537: CMS: BOT walkers observe out-of-thin-air zeros on sun4v sparc/CMT
+  - S6919638: CMS: ExplicitGCInvokesConcurrent misinteracts with gc locker
+  - S6951188: CMS: move PromotionInfo into its own file
+  - S6951923: some uses of fatal1 were missed by 6888954
+  - S6931180: Migration to recent versions of MS Platform SDK
+  - S6951582: Build problems on win64
+  - S6952178: Fork HS18 to HS19 - renumber Major and build numbers of JVM
+  - S6745217: jmap assertion failure
+  - S6951686: Using large pages on Linux prevents zero based compressed oops
+  - S6950075: nmethod sweeper should operate concurrently
+  - S6953267: assert in EA code with -XX:+StressReflectiveCode
+  - S6953539: after 6892658 c1 reports that it doesn't inline StringBuffer.append
+  - S6953576: bottom_type for matched AddPNodes doesn't always agree with ideal
+  - S6937111: Restore optimization for Phi of AddP (6552204)
+  - S6921317: (partial) G1: assert(top() == bottom() || zfs == Allocated,"Region must be empty, or we must be setting it to
+  - S6948539: CMS+UseCompressedOops: placement of cms_free bit interferes with promoted object link
+  - S6951319: enable solaris builds using Sun Studio 12 update 1
+  - S6953483: Typo related to ReduceInitialCardMarks leaves concurrent collectors vulnerable to heap corruption
+  - S6953952: collectedHeap.cpp should use #ifdef _LP64 not LP64
+  - S6911922: JVM must throw VerifyError for jsr or jsr_w opcodes in class file v.51+
+  - S6693236: A class file whose version number is greater than to 50.0 must be verified using the typechecker
+  - S6953588: hotspot\src\share\vm\interpreter\bytecodes.cpp doesn't compile with VS2010 on AMD64
+  - S6956513: Bump the HS19 build number to 02
+  - S6941466: Oracle rebranding changes for Hotspot repositories
+  - S6951083: oops and relocations should part of nmethod not CodeBlob
+  - S6930772: JSR 292 needs to support SPARC C1
+  - S6939207: refactor constant pool index processing
+  - S6934104: JSR 292 needs to support SPARC C2
+  - S6490487: java support on 64 bit solaris x86 machines is broken.
+  - S6956164: nightly regressions from 6939207
+  - S6916623: Align object to 16 bytes to use Compressed Oops with java heap up to 64Gb
+  - S6955349: C1: Make G1 barriers work with x64
+  - S6957004: MethodComparator uses the wrong CP index accessor
+  - S6957080: MethodComparator needs stress testing
+  - S6954029: Improve implicit null check generation with compressed oops
+  - S6957882: nsk/sajdi tests failed with NullPointerException
+  - S6956931: assert(SafepointSynchronize::is_at_safepoint()) failed: must be executed at a safepoint
+  - S6930994: Code cache is full warning should be visible in product
+  - S6958254: -XX:+VerifyOops is broken on x86
+  - S6958292: C1: Enable parallel compilation
+  - S6958485: fix for 6879921 was insufficient
+  - S6930553: classfile format checker allows invalid method descriptor in CONSTANT_NameAndType_info in some cases
+  - S6852873: Reduce safepoint cleanup time
+  - S6941378: G1: change default value of G1UseFixedWindowMMUTracker to true
+  - S6956472: test/runtime/6888954/vmerrors.sh uses ksh-specific syntax
+  - S6953058: G1: A bigapp crashes with SIGSEGV in compiled code
+  - S6939203: JSR 292 needs method handle constants
+  - S6730276: JDI_REGRESSION tests fail with "Error: count must be non-zero" error on x86
+  - S6960865: ldc of unloaded class throws an assert in ciTypeFlow
+  - S6960550: Missing semicolon in Zero
+  - S6952176: Remove debug flag from adlc makefile for 6Update trains
+  - S6959430: Make sure raw loads have control edge
+  - S6949307: G1: raise a vm error, do not core dump, if target pause time and target interval are inconsistent
+  - S6946048: G1: improvements to +PrintGCDetails output
+  - S6952853: SIGSEGV with UseAdaptiveGCBoundary on 64b linux running jvm2008
+  - S6956958: assert(is_clean() || is_call_to_compiled() || is_call_to_interpreted() || is_optimized() || is_megam
+  - S6656830: assert((*p)->is_oop(),"expected an oop while scanning weak refs")
+  - S6962980: C1: stub area should take into account method handle deopt stub
+  - S6947341: JVM Crash running Oracle ATG CRMDemo
+  - S6964479: widen normalization of small int and long values should be symmetric
+  - S6677629: PhaseIterGVN::subsume_node() should call hash_delete() and add_users_to_worklist()
+  - S6964774: Adjust optimization flags setting
+  - S6939019: Source code adjustments for parfait compilation of hotspot
+  - S6888573: class data sharing does not always disable large pages
+  - S6965671: fatal error: acquiring lock JNIGlobalHandle_lock/16 out of order with lock CodeCache_lock/1
+  - S6966411: escape.cpp:450 assert(base->Opcode() == Op_ConP
+  - S6957084: simplify TaskQueue overflow handling
+  - S6964164: MonitorInUseLists leak of contended objects
+  - S6967423: Hotspot support for modules image
+  - S6965184: possible races in make_not_entrant_or_zombie
+  - S6958668: repeated uncommon trapping for new of klass which is being initialized
+  - S6968385: malformed xml in sweeper logging
+  - S6968646: JVM crashes with SIGFPE during startup
+  - S6968368: SIGSEGV in the BCEscapeAnalyzer::copy_dependencies
+  - S6968336: VM crash guarantee(!nm->is_zombie()) failed: cannot lock a zombie method
+  - S6958458: Bump the HS19 build number to 03
+  - S6961079: Build JDK7 for 64 bit Windows using free Windows 7.1 SDK 64 bit compilers
+  - S6964882: 32 bit JDK does not build on 64 bit Windows platforms
+  - S6966252: Bump the HS19 build number to 04
+  - S6962569: assembler_sparc.cpp:1969: assert(false) failed: error
+  - S6944166: G1: explicit GCs are not always handled correctly
+  - S6964498: JSR 292 invokedynamic sites need local bootstrap methods
+  - S6969574: invokedynamic call sites deoptimize instead of executing
+  - S6970566: runThese fails with SIGSEGV
+  - S6962947: shared TaskQueue statistics
+  - S6956639: G1: assert(cached_ptr != card_ptr) failed: shouldn't be, concurrentG1Refine.cpp:307
+  - S6649594: Intermittent IOExceptions during dynamic attach on linux and solaris
+  - S6964170: Verifier crashes
+  - S6888526: Linux getCurrentThreadCpuTime is drastically slower than Windows
+  - S6958465: Sparc aten build24.0: openjdk-7.ea-b96 failed Error: Formal argument ... requires an lvalue
+  - S6953477: Increase portability and flexibility of building Hotspot
+  - S6969569: assert(is_static() && is_constant()) failed: illegal call to constant_value()
+  - S6973308: Missing zero length check before repne scas in check_klass_subtype_slow_path()
+  - S6973963: SEGV in ciBlock::start_bci() with EA
+  - S6974682: CTW: assert(target != NULL) failed: must not be null
+  - S6975049: nsk/regression/b4287029 crashes with -Xss64 on solaris-i586
+  - S6975078: assert(allocated_on_res_area() || allocated_on_C_heap() || allocated_on_arena()
+  - S6975027: use of movptr to set length of array
+  - S6975855: don't emit deopt MH handler in C1 if not required
+  - S6976186: integrate Shark HotSpot changes
+  - S6973329: C2 with Zero based COOP produces code with broken anti-dependency on x86
+  - S6378314: Bad warning message when agent library not found. local directory is not searched.
+  - S6581734: CMS Old Gen's collection usage is zero after GC which is incorrect
+  - S6814437: G1: remove the _new_refs array
+  - S6962589: remove breadth first scanning code from parallel gc
+  - S6963209: G1: remove the concept of abandoned pauses
+  - S6930581: G1: assert(ParallelGCThreads > 1 || n_yielded() == _hrrs->occupied(),"Should have yielded all the ..
+  - S6966222: G1: simplify TaskQueue overflow handling
+  - S6970376: ParNew: shared TaskQueue statistics
+  - S6973570: OrderAccess::storestore() scales poorly on multi-socket x64 and sparc: cache-line ping-ponging
+  - S6976378: ParNew:  stats are printed unconditionally in debug builds
+  - S6973381: Bump the HS19 build number to 05
+  - S6977051: Bump the HS19 build number to 06
+  - S6977952: Test: Sync missing tests from hs16.3 to hs17.x
+  - S6948538: CMS: BOT walkers can fall into object allocation and initialization cracks
+  - S6959014: G1: assert(minimum_desired_capacity <= maximum_desired_capacity) failed: sanity check
+  - S6974928: G1: sometimes humongous objects are allocated in young regions
+  - S6975964: G1: print out a more descriptive message for evacuation failure when +PrintGCDetails is set
+  - S6977970: CMS: concurrentMarkSweepGeneration.cpp:7947 assert(addr <= _limit) failed: sweep invariant
+  - S6977924: Changes for 6975078 produce build error with certain gcc versions
+  - S6978726: Bump the HS19 build number to 07
+  - S6974176: ShouldNotReachHere, instanceKlass.cpp:1426
+  - S6975006: assert(check.is_deoptimized_frame()) failed: missed deopt
+  - S6976372: #  assert(_owner == Thread::current()) failed: invariant
+  - S6977640: Zero and Shark fixes
+  - S6978249: spill between cpu and fpu registers when those moves are fast
+  - S6978533: CMS: Elide BOT  update asserts until 6977974 is fixed correctly
+  - S6978889: Remove premature change of build number to Hotspot 19 Build 07
+  - S6978915: Remove Mercurial tags for Hotspot 19 Build 06
+  - S6987149: Fix incorrect Oracle copyright header in make/templates files
+  - S4809552: Optimize Arrays.fill(...)
+  - S6976400: "Meet Not Symmetric"
+  - S6980978: assert(mt == t->xmeet(this)) failed: meet not commutative
+  - S6981431: IdealKit should support I_O projections
+  - S6969586: OptimizeStringConcat: SIGSEGV in LoadNode::Value()
+  - S6980262: Memory leak when exception is thrown in static initializer
+  - S6981773: incorrect fill value with OptimizeFill
+  - S6896381: CTW fails share/vm/ci/bcEscapeAnalyzer.cpp:99, assert(_stack_height < _max_stack,"stack overflow")
+  - S6978641: Fix for 6929067 introduces additional overhead in thread creation/termination paths
+  - S6982370: SIGBUS in jbyte_fill
+  - S6982488: Bump the HS19 build number to 07 for 6Updates
+  - S6982533: Crash in  ~StubRoutines::jbyte_fill with AggressiveOpts enabled
+  - S6983013: Change the HS_MINOR version to 6 for the 6Update train
+  - S6984346: Remove development code in type.hpp
+  - S6984368: Large default heap size does not allow to use zero based compressed oops
+  - S6942092: Loader-constraint test is failing
+  - S6984979: OptimizeFill misses some cases with an odd memory graph
+  - S6975210: java.lang.VerifyError in some of JCK tests
+  - S6985396: Bump the HS19 build number to 08
+  - S6982489: Update Hotspot 19 to use jdk6u21p as the default JPRT release target
+  - S6423256: GC stacks should use a better data structure
+  - S6942771: SEGV in ParScanThreadState::take_from_overflow_stack
+  - S6982537: Crash in Node*step_through_mergemem
+  - S6986028: assert(_base == Int) failed: Not an Int in CmpINode::sub
+  - S6916062: assert(_inserts <= _insert_limit,"hash table overflow") in NodeHash::hash_insert
+  - S6988678: fatal error deadlock handling was unintentionally disabled
+  - S6965815: OptimizeStringConcat: assert(!q->is_MergeMem()) failed with specjbb2000
+  - S6988018: dtrace/hotspot/MethodInvocation/MethodInvocation002 crashes with client compiler
+  - S6966589: hs16-b08 causes java.lang.StackOverflowError
+  - S6990124: supplemental fix for 6361589
+  - S6980792: Crash "exception happened outside interpreter, nmethods and vtable stubs (1)"
+  - S6990756: Bump the HS19 build number to 09
+  - S6994130: Zero PowerPC fix
+  - S7002666: eclipse CDT projects crash with compressed oops
+  - S6980392: TEST_BUG: gc/6581734/Test6581734.java has typo
+  - S7009828: Fix for 6938627 breaks visualvm monitoring when -Djava.io.tmpdir is defined
+  - S6960333: Add make level ALLOW_DOWNLOADS=true option
+  - S6981408: Upgrade jaxp to 1.4.4
+  - S7002248: Update urls for jaxp and jaxws source downloads
+  - S6962318: Update copyright year
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S6960333: Add make level ALLOW_DOWNLOADS=true option
+  - S7002248: Update urls for jaxp and jaxws source downloads
+  - S6962318: Update copyright year
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S6948909: Jarsigner removes MANIFEST.MF info for badly packages jar's
+  - S6954621: small error in 6948909 fix
+  - S6961732: FontMetrics.getLeading() may be negative in freetype-based OpenJDK builds.
+  - S6939022: Source code adjustments for parfait compilation
+  - S6933622: Duplicate class files in rt.jar and charsets.jar
+  - S6895003: JarReorder is not excluding a requested file.
+  - S6942989: 2/2 Memory leak of java.lang.ref.WeakReference objects
+  - S4356282, RH525870: RFE: T2K should be used to rasterize CID/CFF fonts
+  - S6687968: PNGImageReader leaks native memory through an Inflater.
+  - S6969395: TEST_BUG: Tests in java/net sun/net problems
+  - S6941287: 4/4 jrunscriptTest.sh test does not work right under Cygwin
+  - S6962804: 4/4 ShellScaffold tests can fail without a specific reason
+  - S6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
+  - S6971847: 4/4 jmap '-histo:live' option is necessary for proper leak detection
+  - S6795060: VM crash on Linux in ICU layout library when processing \u0DDD (Sinhalese)
+  - S6954424: Support OpenType/CFF fonts in JDK 7
+  - S6918573: sun.security.pkcs11.P11RSACipher.finalize() is a scalability blocker
+  - S6591117: Poor preformance of PKCS#11 security provider compared to Sun default provider
+  - S6837847: PKCS#11 A SecureRandom and a serialization error following installation of 1.5.0_18
+  - S6695485: SignedObject constructor throws ProviderException if it's called using provider "SunPKCS11-Solaris"
+  - S6678385: Random java.lang.StackOverflowError from various JDKs
+  - S6438179: XToolkit.isTraySupported() result has nothing to do with the system tray
+  - S6633613: (str) StringCoding optimizations to avoid unnecessary array copies with Charset arg
+  - S6675802: Regression: heavyweight popups cause SecurityExceptions in applets
+  - S6691503: Malicious applet can show always-on-top popup menu which has whole screen size
+  - S6632959: swing html parser doesn't know &euro; or &rsaquo;
+  - S6721088: Bad window size calculation after using pack()
+  - S6949710: 3/3 the GC'able nature of Logging objects needs to be made brutally clear
   - S6623943: javax.swing.TimerQueue's thread occasionally fails to start
-  - S6925672, CVE-2010-3561: Privileged ServerSocket.accept allows receiving connections from any host
-  - S6952017, CVE-2010-3549: HttpURLConnection chunked encoding issue (Http request splitting)
-  - S6952603, CVE-2010-3551: NetworkInterface reveals local network address to untrusted code
-  - S6961084, CVE-2010-3541: limit setting of some request headers in HttpURLConnection
-  - S6963285, CVE-2010-3567: Crash in ICU Opentype layout engine due to mismatch in character counts
-  - S6980004, CVE-2010-3573: limit HTTP request cookie headers in HttpURLConnection
-  - S6981426, CVE-2010-3574: limit use of TRACE method in HttpURLConnection
+  - S6976186: Shark build system changes
+  - S6914943: Implement final TLS renegotiation fix
+  - S6957564: Disclosure of DNS server IP address
+  - S6958060: Malformed AP-REQ crashes acceptor side
+  - S6925710: IndexColorModel.finalize can be made to double free
+  - S6963285: Crash in ICU Opentype layout engine due to mismatch in character counts
+  - S6963023: ZDI-CAN-809: Sun JRE JPEGImageWriter.writeImage Remote Code Execution Vulnerability
+  - S6926623: Thread clone issues
+  - S6963489: ZDI-CAN-803: Sun JRE ICC Profile Device Information Tag Remote Code Execution Vulnerability
+  - S6952603: NetworkInterface reveals local network address to untrusted code
+  - S6952017: HttpURLConnection chunked encoding issue (Http request splitting)
+  - S6974093: Thread.clone should NOT invoke addUnstarted on started threads
+  - S6980004: limit HTTP request cookie headers in HttpURLConnection
+  - S6961084: limit setting of some request headers in HttpURLConnection
+  - S6981426: limit use of TRACE method in HttpURLConnection
+  - S6622002: UIDefault.ProxyLazyValue has unsafe reflection usage
+  - S6559775: Race allows defaultReadObject to be invoked instead of readFields during deserialization
+  - S6966692: defaultReadObject can set a field multiple times
   - S6990437: Update with correct copyright info for source and test files from SSR10_02 fixes
+  - S6993206: Removing non-functional tests.
+  - S6979979, RH508185: Rounding error in font sizes selected by the GTK Look and Feel
+  - S6795356, PR590: Leak caused by javax.swing.UIDefaults.ProxyLazyValue.acc
+  - S6853592: VM test nsk.regression.b4261880  fails with "X Error of failed request:  BadWindow" inconsistently.
+  - S6950553: Applet: IE process crash in OLE32.DLL when playing a sound
+  - S6622432: RFE: Performance improvements to java.math.BigDecimal
+  - S6850606: Regression from JDK 1.6.0_12
+  - S6876282: BigDecimal's divide(BigDecimal bd, RoundingFormat r) produces incorrect result
+  - S6963720: typo in ServerHandshaker.java
+  - S6962318: Update copyright year
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S6941936: Broken pipe error of test case DNSIdentities.java
+  - S6943219: test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java fail in linux
+  - S6560348: PIT : java/awt/xembed/server/RunTestXEmbed.java fails
+  - S6668231: Presence of a critical subjectAltName causes JSSE's SunX509 to fail trusted checks
+  - S6963870: NPE in CompoundBorder.getInsets()
+  - S6541476: PNG imageio plugin incorrectly handles iTXt chunk
+  - S6782079: PNG: reading metadata may cause OOM on truncated images.
+  - S6877961: langtools build should allow more options when running jtreg
+  - S6724551: Use Queues instead of Lists to link compiler phases
+  - S6726015: JavaCompiler: replace desugarLater by compileStates
+  - S6734819: Javac performs flows analysis on already translated classes
+  - S6956638: JavacTask.generate does not generate all required files
+  - S6724327: eliminate use of shell tests for simple golden file tests
+  - S6962540: langtools Makefile sets DEV_NULL incorrectly
+  - S6420151: need to improve byfile compile policy to eliminate footprint issues
+  - S6813059: replace use of JavaCompiler.errorCount with shouldContinue
+  - S6595666: fix -Werror
+  - S6795365: NetBeans projects in langtools repository are not NB6.5-friendly
+  - S6962236: backport JavacFileManager fixes from 7 to 6-open
+  - S6410637: Make decision on deprecated methods in DefaultFileManager and BaseFileObject.
+  - S6419701: DefaultFileManager clean up: URI.create
+  - S6483788: DefaultFileManager.ZipFileObject.toUri() fails to escape space characters
+  - S6501502: JSR 199: FileObject.toUri should return file:///c:/ or file:/c:/ not file://c:/
+  - S6508981: cleanup file separator handling in JavacFileManager
+  - S6625520: javac handles missing entries on classpath badly
+  - S6705935: javac reports path name of entry in ZipFileIndex incorectly
+  - S6705945: com.sun.tools.javac.zip files do not have valid copyright
+  - S6714364: refactor javac File handling code into new javac.file package
+  - S6714365: refactor JavacFileManager to move nested classes to top level
+  - S6743107: clean up use of static caches in file manager
+  - S6794582: javadoc should read files using a FileManager
+  - S6832154: refactor Paths to be just a utility class for JavacFileManager
+  - S6838467: JSR199 FileObjects don't obey general contract of equals.
+  - S6877206: JavaFileObject.toUri returns bogus URI (win)
+  - S6877223: tests @ignored because of issues with File.toURI on Windows
+  - S6885123: JavaFileObject getName issues
+  - S6907660: stupid typo in ZipFileIndex guarantees NPE
+  - S6930076: "null" can incorrectly appear in error message compiler.err.error.reading.file
+  - S6889255: javac MethodSymbol throws NPE if ClassReader does not read parameter names correctly
+  - S7008723: Remove binary plugs creation and use from openjdk
+  - S6962318: Update copyright year
+  - S7008433: Minor copyright changes
 * Backports
-  - S4356282, RH525870: RFE: T2K should be used to rasterize CID/CFF fonts
-  - S6954424: Support OpenType/CFF fonts in JDK 7
-  - S6438179: XToolkit.isTraySupported() result has nothing to do with the system tray
-  - S6638712: Inference with wildcard types causes selection of inapplicable method
-  - S6650759: Inference of formal type parameter (unused in formal parameters) is not performed
-  - S6991430, PR579: Zero PowerPC fix.
+  - S6800846, RH662230: Printing quality degraded with Java 6 compared to 5.0, index out of bounds exception.
+  - S6642612: JFileChooser's approve buttons should be the same size (GTK)
+  - S6984543: Test sun/java2d/DirectX/OnScreenRenderingResizeTest fails on GNOME
+  - S6997495: correction of regression test compiler/6857159/Test6857159
+  - S6736649: test/closed/javax/swing/JMenuItem/6458123/ManualBug6458123.java fails on Linux
+  - S6797139: JButton title is truncating for some strings irrespective of preferred size.
+  - S6883341: SWAT: jdk7-b72 swat build(2009-09-17) threw exceptions when running Java2D demo by clicking Paint ta
+  - S4493128: CubicCurve2D intersects method fails
+  - S4724552: CubicCurve2D.contains(Rectangle2D) returns true when partially contained.
+  - S4645692: CubicCurve2D.solveCubic does not return all solutions.
+  - S4993545: NativeInLightFixer adds asynchronousity
+  - S6637796: setBounds doesn't enlarge Component
+  - S6607660: java.awt.Container.getMouseEventTargetImpl should be invoked while holding the TreeLock
+  - S6607170: Focus not set by requestFocus
+  - S6616323: consider benefits of replacing a component array with other collection from the awt.Container class
+  - S6682046: Mixing code does not always recalculate shapes correctly when resizing components
+  - S6797195: Forward-port enhancements for hw/lw mixing from 6u12 to 7
+  - S6725214: D3D: forward-port the new pipeline from 6u10
+  - S6633275: Need to support shaped/translucent windows
+  - S7015232: missing copyright header in CheckZOrderChange.java
+  - S7017581: missing copyright header in test/sun/java2d/pipe/RegionOps.java
+  - S6896068: SunGraphics2D exposes a reference to itself while non fully initialised.
+  - PR632: patches/security/20110215/6878713.patch breaks shark zero build
+  - S6749060: LCD AA text rendered incorrectly when destination is non opaque (sw pipeline only)
+  - S6728834: D3D/OGL: LCD AA text becomes bold and blurred when rendering to a non-opaque destination
+  - S6693253: Security Warning appearance requires enhancements
+  - S6779717: A Window does not show applet security warning icon on X platforms
+  - S6785058: Parent don't get the focus after dialog is closed if security warning is applied
+* Bug fixes
+  - RH661505: JPEGs with sRGB IEC61966-2.1 color profiles have wrong colors
+  - PR616, PR99: Don't statically link libstdc++ or libgcc
+
+New in release 1.9.7 (2011-02-15):
+
+* Security updates
+  - S6878713, CVE-2010-4469: Hotspot backward jsr heap corruption
+  - S6907662, CVE-2010-4465: Swing timer-based security manager bypass
+  - S6994263, CVE-2010-4472: Untrusted code allowed to replace DSIG/C14N implementation
+  - S6981922, CVE-2010-4448: DNS cache poisoning by untrusted applets
+  - S6983554, CVE-2010-4450: Launcher incorrect processing of empty library path entries
+  - S6985453, CVE-2010-4471: Java2D font-related system property leak
+  - S6927050, CVE-2010-4470: JAXP untrusted component state manipulation
+  - RH677332, CVE-2011-0706: Multiple signers privilege escalation
+* Bug fixes
+  - RH676659: Pass -export-dynamic flag to linker using -Wl, as option in gcc 4.6+ is broken
+  - G344659: Fix issue when building on SPARC
+  - Fix latent JAXP bug caused by missing import
+
+New in release 1.8.7 (2011-02-15):
+
+* Security updates
+  - S6878713, CVE-2010-4469: Hotspot backward jsr heap corruption
+  - S6907662, CVE-2010-4465: Swing timer-based security manager bypass
+  - S6994263, CVE-2010-4472: Untrusted code allowed to replace DSIG/C14N implementation
+  - S6981922, CVE-2010-4448: DNS cache poisoning by untrusted applets
+  - S6983554, CVE-2010-4450: Launcher incorrect processing of empty library path entries
+  - S6985453, CVE-2010-4471: Java2D font-related system property leak
+  - S6927050, CVE-2010-4470: JAXP untrusted component state manipulation
+  - RH677332, CVE-2011-0706: Multiple signers privilege escalation
+* Bug fixes
+  - RH676659: Pass -export-dynamic flag to linker using -Wl, as option in gcc 4.6+ is broken
+  - Fix latent JAXP bug caused by missing import
+
+New in release 1.7.10 (2011-02-15):
+
+* Security updates
+  - S6878713, CVE-2010-4469: Hotspot backward jsr heap corruption
+  - S6907662, CVE-2010-4465: Swing timer-based security manager bypass
+  - S6994263, CVE-2010-4472: Untrusted code allowed to replace DSIG/C14N implementation
+  - S6981922, CVE-2010-4448: DNS cache poisoning by untrusted applets
+  - S6983554, CVE-2010-4450: Launcher incorrect processing of empty library path entries
+  - S6985453, CVE-2010-4471: Java2D font-related system property leak
+  - S6927050, CVE-2010-4470: JAXP untrusted component state manipulation
+  - RH677332, CVE-2011-0706: Multiple signers privilege escalation
+* Bug fixes
+  - RH676659: Pass -export-dynamic flag to linker using -Wl, as option in gcc 4.6+ is broken
+  - Fix latent JAXP bug caused by missing import
+
+New in release 1.9.6 (2011-02-09):
+
+* Security updates
+  - S4421494, CVE-2010-4476: infinite loop while parsing double literal.
+
+New in release 1.8.6 (2011-02-09):
+
+* Security updates
+  - S4421494, CVE-2010-4476: infinite loop while parsing double literal.
+
+New in release 1.7.9 (2011-02-09):
+
+* Security updates
+  - S4421494, CVE-2010-4476: infinite loop while parsing double literal.
+
+New in release 1.9.5 (2011-02-01):
+
+* Security updates
+  - RH672262, CVE-2011-0025: IcedTea jarfile signature verification bypass
+* Backports
+  - S6687968: PNGImageReader leaks native memory through an Inflater
+  - S6541476, RH665355: PNG imageio plugin incorrectly handles iTXt chunk
+  - S6782079: PNG: reading metadata may cause OOM on truncated images
+* Fixes
+  - RH647157, RH582455: Update fontconfig files for rhel 6
+  - PR619: Improper finalization by the plugin can crash the browser
+
+New in release 1.8.5 (2011-02-01):
+
+* Security updates
+  - RH672262, CVE-2011-0025: IcedTea jarfile signature verification bypass
+* Backports
+  - S6687968: PNGImageReader leaks native memory through an Inflater
+  - S6541476, RH665355: PNG imageio plugin incorrectly handles iTXt chunk
+  - S6782079: PNG: reading metadata may cause OOM on truncated images
+* Fixes
+  - RH647157, RH582455: Update fontconfig files for rhel 6
+  - PR619: Improper finalization by the plugin can crash the browser
+
+New in release 1.7.8 (2011-02-01):
+
+* Security updates
+  - RH672262, CVE-2011-0025: IcedTea jarfile signature verification bypass
+* Backports
+  - S6687968: PNGImageReader leaks native memory through an Inflater
+  - S6541476, RH665355: PNG imageio plugin incorrectly handles iTXt chunk
+  - S6782079: PNG: reading metadata may cause OOM on truncated images
+* Fixes:
+  - RH647157, RH582455: Update fontconfig files for rhel 6
+  - PR619: Improper finalization by the plugin can crash the browser
+
+New in release 1.9.4 (2011-01-18):
+
+* Security updates
+  - RH663680, CVE-2010-4351: IcedTea JNLP SecurityManager bypass
+* Backports
+  - S4356282: RFE: JDK should support OpenType/CFF fonts
+  - S6954424, RH525870: Support OpenType/CFF fonts in JDK 7
+  - S6795356, PR590: Leak caused by javax.swing.UIDefaults.ProxyLazyValue.acc
   - S6967436, RH597227: lines longer than 2^15 can fill window.
   - S6967433: dashed lines broken when using scaling transforms.
   - S6976265: No STROKE_CONTROL
   - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality.
+  - S6438179, RH569121: XToolkit.isTraySupported() result has nothing to do with the system tray
+* Fixes
+  - S7003777, RH647674: JTextPane produces incorrect content after parsing the html text
+
+New in release 1.8.4 (2011-01-18):
+
+* Security updates
+  - RH663680, CVE-2010-4351: IcedTea JNLP SecurityManager bypass
+* Backports
+  - S6438179, RH569121: XToolkit.isTraySupported() result has nothing to do with the system tray
+  - S4356282: RFE: JDK should support OpenType/CFF fonts
+  - S6954424, RH525870: Support OpenType/CFF fonts in JDK 7
+  - S6795356, PR590: Leak caused by javax.swing.UIDefaults.ProxyLazyValue.acc
+  - S6967436, RH597227: lines longer than 2^15 can fill window.
+  - S6967433: dashed lines broken when using scaling transforms.
+  - S6976265: No STROKE_CONTROL
+  - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality.
+* Fixes:
+  - S7003777, RH647674: JTextPane produces incorrect content after parsing the html text
+
+New in release 1.7.7 (2011-01-18):
+
+* Security updates
+  - RH663680, CVE-2010-4351: IcedTea JNLP SecurityManager bypass
+* Backports
+  - S6438179, RH569121: XToolkit.isTraySupported() result has nothing to do with the system tray
+  - S4356282: RFE: JDK should support OpenType/CFF fonts
+  - S6954424, RH525870: Support OpenType/CFF fonts in JDK 7
+  - S6795356, PR590: Leak caused by javax.swing.UIDefaults.ProxyLazyValue.acc
+  - S6967436, RH597227: lines longer than 2^15 can fill window.
+  - S6967433: dashed lines broken when using scaling transforms.
+  - S6976265: No STROKE_CONTROL
+  - S6967434, PR450, RH530642: Round joins/caps of scaled up lines have poor quality.
+* Fixes:
+  - S7003777, RH647674: JTextPane produces incorrect content after parsing the html text
+
+New in release 1.9.3 (2010-12-01):
+
+* Re-enable compressed oops by default now 7002666 is fixed.
+* Backports
   - S7002666: Eclipse CDT projects crash with compressed oops
-  - S6979979, RH508185: Rounding error in font sizes selected by the GTK Look and Feel
-  - S6795356: Leak caused by javax.swing.UIDefaults.ProxyLazyValue.acc
-  - S6800846, RH662230: Printing quality degraded with Java 6 compared to 5.0, index out of bounds exception.
-  - S6687968: PNGImageReader leaks native memory through an Inflater
-  - S6541476, RH665355: PNG imageio plugin incorrectly handles iTXt chunk
-  - S6782079: PNG: reading metadata may cause OOM on truncated images
-  - RH661505: JPEGs with sRGB IEC61966-2.1 color profiles have wrong colors
-  - S6642612: JFileChooser's approve buttons should be the same size (GTK)
-* Bug fixes
-  - S7003777, RH647674: JTextPane produces incorrect content after parsing the html text
-  - S7004655, PR590: Unable to activate (click) checkboxes in jtable
-  - RH647157,RH582455: Update fontconfig files for rhel 6
+* Fixes
+  - Reapply ia64 fix from 6896043 which was reverted by 6953477
 
 New in release 1.9.2 (2010-11-24):
 
@@ -1315,6 +1835,7 @@
   - S6969395: Synchronization of HttpServlet regression test with OpenJDK7
   - S6510892: com/sun/net/httpserver/bugs/B6361557.java fails
   - S6307603: [X11] Use RENDER extension for complex operations done in software
+  - S6961633: gui applications cause a jvm crash on windows
   - S6668231: Presence of a critical subjectAltName causes JSSE's SunX509 to fail trusted checks
   - S6678385: Random java.lang.StackOverflowError from various JDKs
   - S6725214: D3D: forward-port the new pipeline from 6u10
--- a/acinclude.m4	Sat Jan 22 03:48:53 2011 +0000
+++ b/acinclude.m4	Thu Feb 17 23:36:09 2011 +0000
@@ -917,7 +917,7 @@
 AC_DEFUN([AC_CHECK_WITH_HOTSPOT_BUILD],
 [
   ORIGINAL_BUILD="original"
-  ALTERNATE_BUILD="original"
+  ALTERNATE_BUILD="hs20"
   DEFAULT_BUILD=${ORIGINAL_BUILD}
   AC_MSG_CHECKING([which HotSpot build to use])
   AC_ARG_WITH([hotspot-build],
--- a/configure.ac	Sat Jan 22 03:48:53 2011 +0000
+++ b/configure.ac	Thu Feb 17 23:36:09 2011 +0000
@@ -53,6 +53,10 @@
 IT_CAN_HARDLINK_TO_SOURCE_TREE
 IT_CHECK_FOR_PAX
 
+# Use xvfb-run if found to run gui tests (check-jdk).
+AC_CHECK_PROG(XVFB_RUN_CMD, xvfb-run, [xvfb-run -a -e xvfb-errors], [])
+AC_SUBST(XVFB_RUN_CMD)
+
 AC_MSG_CHECKING([for an Ant home directory])
 AC_ARG_WITH([ant-home],
             [AS_HELP_STRING([--with-ant-home],
--- a/hotspot.map	Sat Jan 22 03:48:53 2011 +0000
+++ b/hotspot.map	Thu Feb 17 23:36:09 2011 +0000
@@ -1,1 +1,2 @@
 # version url changeset md5sum
+hs20 http://hg.openjdk.java.net/hsx/hsx20/baseline 6aa467001334 236fa9a7fdb01339184378bb35e42e34
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw16.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw24.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw32.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-bw48.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim16.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim24.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim32.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-interim48.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow16.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow24.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow32.png has changed
Binary file overlays/openjdk/jdk/src/solaris/classes/sun/awt/X11/security-icon-yellow48.png has changed
Binary file overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning.ico has changed
Binary file overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning_bw.ico has changed
Binary file overlays/openjdk/jdk/src/windows/native/sun/windows/security_warning_int.ico has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/broken_images/x00n0g01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/broken_images/xcrn0g04.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/broken_images/xlfn0g04.png	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,13 @@
+‰PNG
+
+
+
+
+
+IHDR  “áÈ)ÈIDATxœ]ÑÁ
+Â0P*@ð¡#°
+
+#TâÈ10lPF`Ø F=•ŸÄIQâ*çÅuí”`%qk
+Hžñšˆ©ñ´€m÷Íüµàߟ	Ñ=,¸fìOK
+
+ç ÐtŽÀ(Èïä’צíF;èPº€¯¾{xpç]9‡/p*$(ì*éyìÕƒ ×þÚéçè@÷C¼ 	cÔqž‹NÛU#„)11·.räðfä0°ägh(¥týÙÂEøÿ‰kIEND®B`‚
\ No newline at end of file
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi0g01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi0g02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi4a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi4a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi6a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basi6a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn0g01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn0g02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn4a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn4a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn6a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/basn6a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgai4a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgai4a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgan6a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgan6a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgbn4a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bggn4a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgwn6a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/bgyn6a16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ccwn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ccwn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cdfn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cdhn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cdsn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cdun2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ch1n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ch2n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cm0n0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cm7n0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cm9n0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs3n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs3n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs5n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs5n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs8n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/cs8n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ct0n0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ct1n0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ctzn0g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f00n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f00n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f01n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f01n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f02n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f02n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f03n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f03n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f04n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/f04n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g03n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g03n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g03n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g04n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g04n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g04n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g05n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g05n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g05n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g07n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g07n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g07n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g10n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g10n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g10n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g25n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g25n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/g25n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi1n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi1n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi2n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi2n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi4n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi4n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi9n0g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/oi9n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/pngsuite_logo.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/pp0n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/pp0n6a08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ps1n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ps1n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ps2n0g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/ps2n2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s01i3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s01n3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s02i3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s02n3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s03i3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s03n3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s04i3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s04n3p01.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s05i3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s05n3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s06i3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s06n3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s07i3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s07n3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s08i3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s08n3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s09i3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s09n3p02.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s32i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s32n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s33i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s33n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s34i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s34n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s35i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s35n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s36i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s36n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s37i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s37n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s38i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s38n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s39i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s39n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s40i3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/s40n3p04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbbn1g04.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbbn2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbbn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbgn2c16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbgn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbrn2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbwn1g16.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbwn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tbyn3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tp0n1g08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tp0n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tp0n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/tp1n3p08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/z00n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/z03n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/z06n2c08.png has changed
Binary file overlays/openjdk/jdk/test/javax/imageio/plugins/png/PngReader/good_images/z09n2c08.png has changed
--- a/patches/661505-jpeg.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
---- openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c.old	2010-12-24 13:20:49.444589072 -0500
-+++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2010-12-24 13:21:58.059463767 -0500
-@@ -1488,2 +1488,4 @@
- 
-+#define JPEG_APP1  (JPEG_APP0 + 1)  /* EXIF APP1 marker code  */
-+
- JNIEXPORT jlong JNICALL
-@@ -1541,2 +1543,3 @@
-     jpegsavemarkers(cinfo, ICC_MARKER, 0xFFFF);
-+    jpegsavemarkers(cinfo, JPEG_APP1, 0xFFFF);
- 
-@@ -1601,4 +1604,2 @@
- 
--#define JPEG_APP1  (JPEG_APP0 + 1)  /* EXIF APP1 marker code  */
--
- /*
--- a/patches/arm.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/arm.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -112,61 +112,6 @@
 +
 +#endif // HOTSPOT_ASM
  }
-diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp
---- openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2010-05-28 11:10:30.000000000 +0100
-+++ openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2010-06-17 17:28:49.000000000 +0100
-@@ -1,6 +1,7 @@
- /*
-  * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
-  * Copyright 2009 Red Hat, Inc.
-+ * Copyright 2009 Edward Nevill
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -23,4 +24,42 @@
-  *
-  */
- 
--// This file is intentionally empty
-+#ifdef HOTSPOT_ASM
-+#define _iaccess_0      ((Bytecodes::Code)0xdb)
-+#define _iaccess_1      ((Bytecodes::Code)0xdc)
-+#define _iaccess_2      ((Bytecodes::Code)0xdd)
-+#define _iaccess_3      ((Bytecodes::Code)0xde)
-+
-+#define _invokeresolved         ((Bytecodes::Code)0xdf)
-+#define _invokespecialresolved  ((Bytecodes::Code)0xe0)
-+#define _invokestaticresolved   ((Bytecodes::Code)0xe1)
-+
-+#define _iload_iload    ((Bytecodes::Code)0xe3)
-+#define _iload_iload_N  ((Bytecodes::Code)0xe4)
-+
-+#define _dmac           ((Bytecodes::Code)0xe6)
-+
-+        _iload_0_iconst_N       ,       // 231
-+        _iload_1_iconst_N       ,       // 232
-+        _iload_2_iconst_N       ,       // 233
-+        _iload_3_iconst_N       ,       // 234
-+        _iload_iconst_N         ,       // 235
-+        _iadd_istore_N          ,       // 236
-+        _isub_istore_N          ,       // 237
-+        _iand_istore_N          ,       // 238
-+        _ior_istore_N           ,       // 239
-+        _ixor_istore_N          ,       // 240
-+        _iadd_u4store           ,       // 241
-+        _isub_u4store           ,       // 242
-+        _iand_u4store           ,       // 243
-+        _ior_u4store            ,       // 244
-+        _ixor_u4store           ,       // 245
-+        _iload_0_iload          ,       // 246
-+        _iload_1_iload          ,       // 247
-+        _iload_2_iload          ,       // 248
-+        _iload_3_iload          ,       // 249
-+        _iload_0_iload_N        ,       // 250
-+        _iload_1_iload_N        ,       // 251
-+        _iload_2_iload_N        ,       // 252
-+        _iload_3_iload_N        ,       // 253
-+#endif // HOTSPOT_ASM
 diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
 --- openjdk.orig/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2010-06-16 14:11:07.000000000 +0100
 +++ openjdk/hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp	2010-06-17 17:30:02.000000000 +0100
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/g344659-sparc_fix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,12 @@
+diff -uNr openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp openjdk/hotspot/src/os_cpu/linux_sparc/vm/v_version_linux_sparc.cpp
+--- openjdk.orig/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	2010-06-21 22:12:15.000000000 +0100
++++ openjdk/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	2010-11-29 20:15:36.179541001 +0000
+@@ -35,7 +35,7 @@
+   }
+ 
+   while (!feof(fp)) {
+-    if (fscanf(fp, "cpu\t\t: %100[^\n]", &cpu) == 1) {
++    if (fscanf(fp, "cpu\t\t: %100[^\n]", &cpu[0]) == 1) {
+       if (strstr(cpu, "Niagara") != NULL) {
+         rv = true;
+       }
--- a/patches/gcc-suffix.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-diff -Nru openjdk.orig/hotspot/agent/src/os/linux/Makefile openjdk/hotspot/agent/src/os/linux/Makefile
---- openjdk.orig/hotspot/agent/src/os/linux/Makefile	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/agent/src/os/linux/Makefile	2010-09-19 14:09:17.907131214 +0100
-@@ -23,7 +23,7 @@
- #
- 
- ARCH := $(shell if ([ `uname -m` = "ia64" ])  ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
--GCC      = gcc
-+GCC      = gcc$(GCC_SUFFIX)
- 
- JAVAH    = ${JAVA_HOME}/bin/javah
- 
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2010-09-19 14:07:15.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2010-09-19 14:09:58.015272246 +0100
-@@ -26,11 +26,11 @@
- # CC, CPP & AS
- 
- ifdef ALT_COMPILER_PATH
--CPP = $(ALT_COMPILER_PATH)/g++
--CC  = $(ALT_COMPILER_PATH)/gcc
-+CPP = $(ALT_COMPILER_PATH)/g++$(GCC_SUFFIX)
-+CC  = $(ALT_COMPILER_PATH)/gcc$(GCC_SUFFIX)
- else
--CPP = g++
--CC  = gcc
-+CPP = g++$(GCC_SUFFIX)
-+CC  = gcc$(GCC_SUFFIX)
- endif
- 
- AS  = $(CC) -c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/arm.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,57 @@
+diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2011-01-28 01:46:18.769782690 +0000
+@@ -1,6 +1,7 @@
+ /*
+  * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2009 Red Hat, Inc.
++ * Copyright 2009 Edward Nevill
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -26,6 +27,44 @@
+ #ifndef CPU_ZERO_VM_BYTECODES_ZERO_HPP
+ #define CPU_ZERO_VM_BYTECODES_ZERO_HPP
+ 
+-// This file is intentionally empty
++#ifdef HOTSPOT_ASM
++#define _iaccess_0      ((Bytecodes::Code)0xdb)
++#define _iaccess_1      ((Bytecodes::Code)0xdc)
++#define _iaccess_2      ((Bytecodes::Code)0xdd)
++#define _iaccess_3      ((Bytecodes::Code)0xde)
++
++#define _invokeresolved         ((Bytecodes::Code)0xdf)
++#define _invokespecialresolved  ((Bytecodes::Code)0xe0)
++#define _invokestaticresolved   ((Bytecodes::Code)0xe1)
++
++#define _iload_iload    ((Bytecodes::Code)0xe3)
++#define _iload_iload_N  ((Bytecodes::Code)0xe4)
++
++#define _dmac           ((Bytecodes::Code)0xe6)
++
++        _iload_0_iconst_N       ,       // 231
++        _iload_1_iconst_N       ,       // 232
++        _iload_2_iconst_N       ,       // 233
++        _iload_3_iconst_N       ,       // 234
++        _iload_iconst_N         ,       // 235
++        _iadd_istore_N          ,       // 236
++        _isub_istore_N          ,       // 237
++        _iand_istore_N          ,       // 238
++        _ior_istore_N           ,       // 239
++        _ixor_istore_N          ,       // 240
++        _iadd_u4store           ,       // 241
++        _isub_u4store           ,       // 242
++        _iand_u4store           ,       // 243
++        _ior_u4store            ,       // 244
++        _ixor_u4store           ,       // 245
++        _iload_0_iload          ,       // 246
++        _iload_1_iload          ,       // 247
++        _iload_2_iload          ,       // 248
++        _iload_3_iload          ,       // 249
++        _iload_0_iload_N        ,       // 250
++        _iload_1_iload_N        ,       // 251
++        _iload_2_iload_N        ,       // 252
++        _iload_3_iload_N        ,       // 253
++#endif // HOTSPOT_ASM
+ 
+ #endif // CPU_ZERO_VM_BYTECODES_ZERO_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/gcc-suffix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,31 @@
+diff -Nru openjdk.orig/hotspot/agent/src/os/linux/Makefile openjdk/hotspot/agent/src/os/linux/Makefile
+--- openjdk.orig/hotspot/agent/src/os/linux/Makefile	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/agent/src/os/linux/Makefile	2011-01-28 00:43:20.632487152 +0000
+@@ -23,7 +23,7 @@
+ #
+ 
+ ARCH := $(shell if ([ `uname -m` = "ia64" ])  ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
+-GCC      = gcc
++GCC      = gcc$(GCC_SUFFIX)
+ 
+ JAVAH    = ${JAVA_HOME}/bin/javah
+ 
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2011-01-28 00:35:53.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2011-01-28 00:43:56.676866099 +0000
+@@ -28,11 +28,11 @@
+ # When cross-compiling the ALT_COMPILER_PATH points
+ # to the cross-compilation toolset
+ ifdef CROSS_COMPILE_ARCH
+-CPP = $(ALT_COMPILER_PATH)/g++
+-CC  = $(ALT_COMPILER_PATH)/gcc
++CPP = $(ALT_COMPILER_PATH)/g++$(GCC_SUFFIX)
++CC  = $(ALT_COMPILER_PATH)/gcc$(GCC_SUFFIX)
+ else
+-CPP = g++
+-CC  = gcc
++CPP = g++$(GCC_SUFFIX)
++CC  = gcc$(GCC_SUFFIX)
+ endif
+ 
+ AS  = $(CC) -c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/ia64-fix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,15 @@
+--- openjdk/hotspot/src/share/vm/opto/connode.cpp~	2010-10-08 20:29:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/opto/connode.cpp	2010-11-29 07:57:22.000000000 +0000
+@@ -712,12 +712,7 @@
+   if( t == Type::TOP ) return Type::TOP;
+   if( t == Type::FLOAT ) return Type::DOUBLE;
+   const TypeF *tf = t->is_float_constant();
+-#ifndef IA64
+   return TypeD::make( (double)tf->getf() );
+-#else
+-  float x = tf->getf();
+-  return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero );
+-#endif
+ }
+ 
+ //=============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/params-cast-size_t.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,270 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2011-01-28 01:06:11.887088930 +0000
+@@ -2645,7 +2645,7 @@
+   if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
+     size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
+     n_blks +=  CMSOldPLABReactivityFactor*multiple*n_blks;
+-    n_blks = MIN2(n_blks, CMSOldPLABMax);
++    n_blks = MIN2(n_blks, (size_t)CMSOldPLABMax);
+   }
+   assert(n_blks > 0, "Error");
+   _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -955,7 +955,7 @@
+   if (free_percentage < desired_free_percentage) {
+     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
+     assert(desired_capacity >= capacity(), "invalid expansion size");
+-    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
++    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
+   }
+   if (expand_bytes > 0) {
+     if (PrintGCDetails && Verbose) {
+@@ -6238,7 +6238,7 @@
+     HeapWord* curAddr = _markBitMap.startWord();
+     while (curAddr < _markBitMap.endWord()) {
+       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
+-      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
++      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
+       _markBitMap.clear_large_range(chunk);
+       if (ConcurrentMarkSweepThread::should_yield() &&
+           !foregroundGCIsActive() &&
+@@ -6533,7 +6533,7 @@
+     return;
+   }
+   // Double capacity if possible
+-  size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
++  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) MarkStackSizeMax);
+   // Do not give up existing stack until we have managed to
+   // get the double capacity that we desired.
+   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2011-01-28 00:50:00.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -471,7 +471,7 @@
+   _regionStack(),
+   // _finger set in set_non_marking_state
+ 
+-  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
++  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
+   // _active_tasks set in set_non_marking_state
+   // _tasks set inside the constructor
+   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
+@@ -575,7 +575,7 @@
+       _sleep_factor             = sleep_factor;
+       _marking_task_overhead    = marking_task_overhead;
+     } else {
+-      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
++      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
+       _sleep_factor             = 0.0;
+       _marking_task_overhead    = 1.0;
+     }
+@@ -3371,7 +3371,7 @@
+   // of things to do) or totally (at the very end).
+   size_t target_size;
+   if (partially)
+-    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
++    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
+   else
+     target_size = 0;
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -1074,7 +1074,7 @@
+ // This can be done by either mutator threads together with the
+ // concurrent refinement threads or GC threads.
+ int HeapRegionRemSet::num_par_rem_sets() {
+-  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
++  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
+ }
+ 
+ HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -895,8 +895,8 @@
+ void PSParallelCompact::initialize_dead_wood_limiter()
+ {
+   const size_t max = 100;
+-  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+-  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
++  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
++  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
+   DEBUG_ONLY(_dwl_initialized = true;)
+   _dwl_adjustment = normal_distribution(1.0);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -69,7 +69,7 @@
+   _last_used = current_live;
+ 
+   // We have different alignment constraints than the rest of the heap.
+-  const size_t alignment = MAX2(MinPermHeapExpansion,
++  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
+                                 virtual_space()->alignment());
+ 
+   // Compute the desired size:
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2011-01-28 01:06:11.895089019 +0000
+@@ -188,7 +188,7 @@
+   const size_t num_overflow_elems = of_stack->size();
+   const size_t space_available = queue->max_elems() - queue->size();
+   const size_t num_take_elems = MIN3(space_available / 4,
+-                                     ParGCDesiredObjsFromOverflowList,
++                                     (size_t) ParGCDesiredObjsFromOverflowList,
+                                      num_overflow_elems);
+   // Transfer the most recent num_take_elems from the overflow
+   // stack to our work queue.
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -328,7 +328,7 @@
+     // yield a size that is too small) and bound it by MaxNewSize above.
+     // Ergonomics plays here by previously calculating the desired
+     // NewSize and MaxNewSize.
+-    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
++    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
+   }
+   assert(max_new_size > 0, "All paths should set max_new_size");
+ 
+@@ -355,7 +355,7 @@
+       // generally small compared to the NewRatio calculation.
+       _min_gen0_size = NewSize;
+       desired_new_size = NewSize;
+-      max_new_size = MAX2(max_new_size, NewSize);
++      max_new_size = MAX2(max_new_size, (size_t) NewSize);
+     } else {
+       // For the case where NewSize is the default, use NewRatio
+       // to size the minimum and initial generation sizes.
+@@ -363,10 +363,10 @@
+       // NewRatio is overly large, the resulting sizes can be too
+       // small.
+       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
+-                          NewSize);
++                          (size_t) NewSize);
+       desired_new_size =
+         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
+-             NewSize);
++             (size_t) NewSize);
+     }
+ 
+     assert(_min_gen0_size > 0, "Sanity check");
+@@ -421,14 +421,14 @@
+       // Adjust gen0 down to accomodate OldSize
+       *gen0_size_ptr = heap_size - min_gen0_size;
+       *gen0_size_ptr =
+-        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
+              min_alignment());
+       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
+       result = true;
+     } else {
+       *gen1_size_ptr = heap_size - *gen0_size_ptr;
+       *gen1_size_ptr =
+-        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
+                        min_alignment());
+     }
+   }
+@@ -452,7 +452,7 @@
+   // for setting the gen1 maximum.
+   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
+   _max_gen1_size =
+-    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
++    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
+          min_alignment());
+   // If no explicit command line flag has been set for the
+   // gen1 size, use what is left for gen1.
+@@ -466,11 +466,11 @@
+       "gen0 has an unexpected minimum size");
+     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
+     set_min_gen1_size(
+-      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
+            min_alignment()));
+     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
+     set_initial_gen1_size(
+-      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
+            min_alignment()));
+ 
+   } else {
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -240,7 +240,7 @@
+   size_t init_sz;
+ 
+   if (TLABSize > 0) {
+-    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
++    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
+   } else if (global_stats() == NULL) {
+     // Startup issue - main thread initialized before heap initialized.
+     init_sz = min_size();
+diff -Nru openjdk.orig/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
+--- openjdk.orig/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2011-01-28 01:06:11.891088974 +0000
+@@ -46,7 +46,7 @@
+   const size_t beg_index = size_t(index);
+   assert(beg_index < len || len == 0, "index too large");
+ 
+-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
++  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
+   const size_t end_index = beg_index + stride;
+   T* const base = (T*)a->base();
+   T* const beg = base + beg_index;
+@@ -80,7 +80,7 @@
+   const size_t beg_index = size_t(index);
+   assert(beg_index < len || len == 0, "index too large");
+ 
+-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
++  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
+   const size_t end_index = beg_index + stride;
+   T* const base = (T*)a->base();
+   T* const beg = base + beg_index;
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2011-01-28 00:49:59.000000000 +0000
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2011-01-28 01:06:11.891088974 +0000
+@@ -1161,7 +1161,7 @@
+     // NewSize was set on the command line and it is larger than
+     // preferred_max_new_size.
+     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
+-      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
++      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
+     } else {
+       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
+     }
+@@ -1180,7 +1180,7 @@
+     // there was no obvious reason.  Also limit to the case where
+     // MaxNewSize has not been set.
+ 
+-    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
++    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
+ 
+     // Code along this path potentially sets NewSize and OldSize
+ 
+@@ -1222,8 +1222,8 @@
+       // Unless explicitly requested otherwise, make young gen
+       // at least min_new, and at most preferred_max_new_size.
+       if (FLAG_IS_DEFAULT(NewSize)) {
+-        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
+-        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
++	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
++        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
+         if (PrintGCDetails && Verbose) {
+           // Too early to use gclog_or_tty
+           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
+@@ -1234,7 +1234,7 @@
+       // later NewRatio will decide how it grows; see above.
+       if (FLAG_IS_DEFAULT(OldSize)) {
+         if (max_heap > NewSize) {
+-          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
++	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
+           if (PrintGCDetails && Verbose) {
+             // Too early to use gclog_or_tty
+             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/sparc-buildfixes.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,26 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/defs.make openjdk/hotspot/make/linux/makefiles/defs.make
+--- openjdk.orig/hotspot/make/linux/makefiles/defs.make	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/defs.make	2011-01-28 01:21:25.609237228 +0000
+@@ -58,7 +58,7 @@
+ endif
+ 
+ # sparc
+-ifeq ($(ARCH), sparc64)
++ifneq (,$(filter $(ARCH), sparc sparc64))
+   ifeq ($(ARCH_DATA_MODEL), 64)
+     ARCH_DATA_MODEL  = 64
+     MAKE_ARGS        += LP64=1
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2011-01-28 01:14:57.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2011-01-28 01:21:25.609237228 +0000
+@@ -64,6 +64,10 @@
+ PICFLAG = -fpic
+ endif
+ 
++ifneq ($(filter sparc sparcv9,$(BUILDARCH)),)
++PICFLAG = -fPIC
++endif
++
+ VM_PICFLAG/LIBJVM = $(PICFLAG)
+ VM_PICFLAG/AOUT   =
+ VM_PICFLAG        = $(VM_PICFLAG/$(LINK_INTO))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/systemtap.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,100 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2011-01-28 02:39:02.052518309 +0000
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
++ * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -25,7 +26,7 @@
+ #ifndef SHARE_VM_UTILITIES_DTRACE_HPP
+ #define SHARE_VM_UTILITIES_DTRACE_HPP
+ 
+-#if defined(SOLARIS) && defined(DTRACE_ENABLED)
++#if defined(DTRACE_ENABLED)
+ 
+ #include <sys/sdt.h>
+ 
+@@ -36,7 +37,7 @@
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
+   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
+ 
+-#else // ndef SOLARIS || ndef DTRACE_ENABLED
++#else // ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+ #define NOT_DTRACE(x) x
+@@ -47,11 +48,18 @@
+ #define DTRACE_PROBE3(a,b,c,d,e) {;}
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
++#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
++#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
++#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
++#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
++#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
+ 
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+ 
+ #endif
+ 
++#if defined(SOLARIS)
++// Solaris dtrace needs actual extern function decls.
+ #define HS_DTRACE_PROBE_FN(provider,name)\
+   __dtrace_##provider##___##name
+ 
+@@ -59,6 +67,11 @@
+   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
+ #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
+   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
++#else
++// Systemtap dtrace compatible probes on GNU/Linux don't.
++#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
++#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
++#endif 
+ 
+ /* Dtrace probe declarations */
+ #define HS_DTRACE_PROBE_DECL(provider,name) \
+@@ -97,6 +110,8 @@
+     uintptr_t,uintptr_t,uintptr_t))
+ 
+ /* Dtrace probe definitions */
++#if defined(SOLARIS)
++// Solaris dtrace uses actual function calls.
+ #define HS_DTRACE_PROBE_N(provider,name, args) \
+   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
+ 
+@@ -132,5 +147,31 @@
+   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
+     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
+     (uintptr_t)a8,(uintptr_t)a9))
++#else
++// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
++#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
++#define HS_DTRACE_PROBE0(provider,name)\
++  DTRACE_PROBE(provider,name)
++#define HS_DTRACE_PROBE1(provider,name,a0)\
++  DTRACE_PROBE1(provider,name,a0)
++#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
++  DTRACE_PROBE2(provider,name,a0,a1)
++#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
++  DTRACE_PROBE3(provider,name,a0,a1,a2)
++#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
++  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
++#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
++  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
++#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
++  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
++#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
++  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
++#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
++  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
++#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#endif
+ 
+ #endif // SHARE_VM_UTILITIES_DTRACE_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/hs20/text-relocations.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,63 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2011-01-28 00:32:20.817556386 +0000
+@@ -58,7 +58,11 @@
+ # Compiler flags
+ 
+ # position-independent code
++ifneq ($(filter alpha parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),)
+ PICFLAG = -fPIC
++else
++PICFLAG = -fpic
++endif
+ 
+ VM_PICFLAG/LIBJVM = $(PICFLAG)
+ VM_PICFLAG/AOUT   =
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/rules.make openjdk/hotspot/make/linux/makefiles/rules.make
+--- openjdk.orig/hotspot/make/linux/makefiles/rules.make	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/rules.make	2011-01-28 00:32:52.857892660 +0000
+@@ -146,20 +146,10 @@
+ include $(GAMMADIR)/make/pic.make
+ endif
+ 
+-# The non-PIC object files are only generated for 32 bit platforms.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+-	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
+diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/rules.make openjdk/hotspot/make/solaris/makefiles/rules.make
+--- openjdk.orig/hotspot/make/solaris/makefiles/rules.make	2011-01-25 22:57:24.000000000 +0000
++++ openjdk/hotspot/make/solaris/makefiles/rules.make	2011-01-28 00:33:15.158126725 +0000
+@@ -146,20 +146,10 @@
+ include $(GAMMADIR)/make/pic.make
+ endif
+ 
+-# Sun compiler for 64 bit Solaris does not support building non-PIC object files.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE), \
+-	   $(COMPILE.CC) $(DEPFLAGS) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/arm.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,55 @@
+diff -Nru openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp
+--- openjdk.orig/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2010-05-28 11:10:30.000000000 +0100
++++ openjdk/hotspot/src/cpu/zero/vm/bytecodes_zero.hpp	2010-06-17 17:28:49.000000000 +0100
+@@ -1,6 +1,7 @@
+ /*
+  * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
+  * Copyright 2009 Red Hat, Inc.
++ * Copyright 2009 Edward Nevill
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -23,4 +24,42 @@
+  *
+  */
+ 
+-// This file is intentionally empty
++#ifdef HOTSPOT_ASM
++#define _iaccess_0      ((Bytecodes::Code)0xdb)
++#define _iaccess_1      ((Bytecodes::Code)0xdc)
++#define _iaccess_2      ((Bytecodes::Code)0xdd)
++#define _iaccess_3      ((Bytecodes::Code)0xde)
++
++#define _invokeresolved         ((Bytecodes::Code)0xdf)
++#define _invokespecialresolved  ((Bytecodes::Code)0xe0)
++#define _invokestaticresolved   ((Bytecodes::Code)0xe1)
++
++#define _iload_iload    ((Bytecodes::Code)0xe3)
++#define _iload_iload_N  ((Bytecodes::Code)0xe4)
++
++#define _dmac           ((Bytecodes::Code)0xe6)
++
++        _iload_0_iconst_N       ,       // 231
++        _iload_1_iconst_N       ,       // 232
++        _iload_2_iconst_N       ,       // 233
++        _iload_3_iconst_N       ,       // 234
++        _iload_iconst_N         ,       // 235
++        _iadd_istore_N          ,       // 236
++        _isub_istore_N          ,       // 237
++        _iand_istore_N          ,       // 238
++        _ior_istore_N           ,       // 239
++        _ixor_istore_N          ,       // 240
++        _iadd_u4store           ,       // 241
++        _isub_u4store           ,       // 242
++        _iand_u4store           ,       // 243
++        _ior_u4store            ,       // 244
++        _ixor_u4store           ,       // 245
++        _iload_0_iload          ,       // 246
++        _iload_1_iload          ,       // 247
++        _iload_2_iload          ,       // 248
++        _iload_3_iload          ,       // 249
++        _iload_0_iload_N        ,       // 250
++        _iload_1_iload_N        ,       // 251
++        _iload_2_iload_N        ,       // 252
++        _iload_3_iload_N        ,       // 253
++#endif // HOTSPOT_ASM
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/gcc-suffix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,31 @@
+diff -Nru openjdk.orig/hotspot/agent/src/os/linux/Makefile openjdk/hotspot/agent/src/os/linux/Makefile
+--- openjdk.orig/hotspot/agent/src/os/linux/Makefile	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/agent/src/os/linux/Makefile	2010-09-19 14:09:17.907131214 +0100
+@@ -23,7 +23,7 @@
+ #
+ 
+ ARCH := $(shell if ([ `uname -m` = "ia64" ])  ; then echo ia64 ; elif ([ `uname -m` = "x86_64" ]) ; then echo amd64; elif ([ `uname -m` = "sparc64" ]) ; then echo sparc; else echo i386 ; fi )
+-GCC      = gcc
++GCC      = gcc$(GCC_SUFFIX)
+ 
+ JAVAH    = ${JAVA_HOME}/bin/javah
+ 
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2010-09-19 14:07:15.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2010-09-19 14:09:58.015272246 +0100
+@@ -26,11 +26,11 @@
+ # CC, CPP & AS
+ 
+ ifdef ALT_COMPILER_PATH
+-CPP = $(ALT_COMPILER_PATH)/g++
+-CC  = $(ALT_COMPILER_PATH)/gcc
++CPP = $(ALT_COMPILER_PATH)/g++$(GCC_SUFFIX)
++CC  = $(ALT_COMPILER_PATH)/gcc$(GCC_SUFFIX)
+ else
+-CPP = g++
+-CC  = gcc
++CPP = g++$(GCC_SUFFIX)
++CC  = gcc$(GCC_SUFFIX)
+ endif
+ 
+ AS  = $(CC) -c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/ia64-fix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,30 @@
+--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp~	2010-10-08 20:29:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	2010-11-29 07:56:22.000000000 +0000
+@@ -1287,12 +1287,7 @@
+           jfloat f;
+           jdouble r;
+           f = STACK_FLOAT(-1);
+-#ifdef IA64
+-          // IA64 gcc bug
+-          r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero;
+-#else
+           r = (jdouble) f;
+-#endif
+           MORE_STACK(-1); // POP
+           SET_STACK_DOUBLE(r, 1);
+           UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2);
+--- openjdk/hotspot/src/share/vm/opto/connode.cpp~	2010-10-08 20:29:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/opto/connode.cpp	2010-11-29 07:57:22.000000000 +0000
+@@ -712,12 +712,7 @@
+   if( t == Type::TOP ) return Type::TOP;
+   if( t == Type::FLOAT ) return Type::DOUBLE;
+   const TypeF *tf = t->is_float_constant();
+-#ifndef IA64
+   return TypeD::make( (double)tf->getf() );
+-#else
+-  float x = tf->getf();
+-  return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero );
+-#endif
+ }
+ 
+ //=============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/no-precompiled-headers.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,35 @@
+--- openjdk/hotspot/make/linux/makefiles/gcc.make~	2009-10-30 11:54:26.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2009-10-30 11:55:34.000000000 +0100
+@@ -34,13 +34,14 @@
+ CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
+ CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
+ 
++ifeq (,$(DISABLE_PRECOMPILED_HEADER))
+ # check for precompiled headers support
+ ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
+ USE_PRECOMPILED_HEADER=1
+ PRECOMPILED_HEADER_DIR=.
+ PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
+ endif
+-
++endif
+ 
+ #------------------------------------------------------------------------
+ # Compiler flags
+--- openjdk/hotspot/make/solaris/makefiles/gcc.make~	2009-10-30 11:54:26.000000000 +0100
++++ openjdk/hotspot/make/solaris/makefiles/gcc.make	2009-10-30 11:56:05.000000000 +0100
+@@ -45,12 +45,14 @@
+ $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
+ 
+ 
++ifeq (,$(DISABLE_PRECOMPILED_HEADER))
+ # check for precompiled headers support
+ ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
+ USE_PRECOMPILED_HEADER=1
+ PRECOMPILED_HEADER_DIR=.
+ PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
+ endif
++endif
+ 
+ 
+ #------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/params-cast-size_t.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,295 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2010-09-19 16:07:14.939307365 +0100
+@@ -2619,7 +2619,7 @@
+   if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
+     size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
+     n_blks +=  CMSOldPLABReactivityFactor*multiple*n_blks;
+-    n_blks = MIN2(n_blks, CMSOldPLABMax);
++    n_blks = MIN2(n_blks, (size_t)CMSOldPLABMax);
+   }
+   assert(n_blks > 0, "Error");
+   _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-09-19 16:07:14.915307286 +0100
+@@ -967,7 +967,7 @@
+   if (free_percentage < desired_free_percentage) {
+     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
+     assert(desired_capacity >= capacity(), "invalid expansion size");
+-    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
++    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
+   }
+   if (expand_bytes > 0) {
+     if (PrintGCDetails && Verbose) {
+@@ -6191,7 +6191,7 @@
+     HeapWord* curAddr = _markBitMap.startWord();
+     while (curAddr < _markBitMap.endWord()) {
+       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
+-      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
++      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
+       _markBitMap.clear_large_range(chunk);
+       if (ConcurrentMarkSweepThread::should_yield() &&
+           !foregroundGCIsActive() &&
+@@ -6484,7 +6484,7 @@
+     return;
+   }
+   // Double capacity if possible
+-  size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
++  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) MarkStackSizeMax);
+   // Do not give up existing stack until we have managed to
+   // get the double capacity that we desired.
+   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-09-19 15:38:16.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-09-19 16:07:14.915307286 +0100
+@@ -452,7 +452,7 @@
+   _regionStack(),
+   // _finger set in set_non_marking_state
+ 
+-  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
++  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
+   // _active_tasks set in set_non_marking_state
+   // _tasks set inside the constructor
+   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
+@@ -503,7 +503,7 @@
+   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
+   satb_qs.set_buffer_size(G1SATBBufferSize);
+ 
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
+   for (int i = 0 ; i < size; i++) {
+     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
+@@ -562,7 +562,7 @@
+       _sleep_factor             = sleep_factor;
+       _marking_task_overhead    = marking_task_overhead;
+     } else {
+-      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
++      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
+       _sleep_factor             = 0.0;
+       _marking_task_overhead    = 1.0;
+     }
+@@ -689,7 +689,7 @@
+ }
+ 
+ ConcurrentMark::~ConcurrentMark() {
+-  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
++  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
+   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
+                     _par_cleanup_thread_state);
+@@ -1781,7 +1781,7 @@
+   if (has_aborted()) return;
+ 
+   int first = 0;
+-  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
++  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
+   for (int t = 0; t < last; t++) {
+     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
+     assert(list->well_formed(), "Inv");
+@@ -3281,7 +3281,7 @@
+   // of things to do) or totally (at the very end).
+   size_t target_size;
+   if (partially)
+-    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
++    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
+   else
+     target_size = 0;
+ 
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-09-19 16:07:14.915307286 +0100
+@@ -1066,7 +1066,7 @@
+ // This can be done by either mutator threads together with the
+ // concurrent refinement threads or GC threads.
+ int HeapRegionRemSet::num_par_rem_sets() {
+-  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
++  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
+ }
+ 
+ HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-09-19 16:07:14.915307286 +0100
+@@ -864,8 +864,8 @@
+ void PSParallelCompact::initialize_dead_wood_limiter()
+ {
+   const size_t max = 100;
+-  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+-  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
++  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
++  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
+   DEBUG_ONLY(_dwl_initialized = true;)
+   _dwl_adjustment = normal_distribution(1.0);
+diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
+--- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-09-19 16:07:14.915307286 +0100
+@@ -63,7 +63,7 @@
+   _last_used = current_live;
+ 
+   // We have different alignment constraints than the rest of the heap.
+-  const size_t alignment = MAX2(MinPermHeapExpansion,
++  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
+                                 virtual_space()->alignment());
+ 
+   // Compute the desired size:
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-09-19 16:07:14.939307365 +0100
+@@ -297,7 +297,7 @@
+     // yield a size that is too small) and bound it by MaxNewSize above.
+     // Ergonomics plays here by previously calculating the desired
+     // NewSize and MaxNewSize.
+-    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
++    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
+   }
+   assert(max_new_size > 0, "All paths should set max_new_size");
+ 
+@@ -324,7 +324,7 @@
+       // generally small compared to the NewRatio calculation.
+       _min_gen0_size = NewSize;
+       desired_new_size = NewSize;
+-      max_new_size = MAX2(max_new_size, NewSize);
++      max_new_size = MAX2(max_new_size, (size_t) NewSize);
+     } else {
+       // For the case where NewSize is the default, use NewRatio
+       // to size the minimum and initial generation sizes.
+@@ -332,10 +332,10 @@
+       // NewRatio is overly large, the resulting sizes can be too
+       // small.
+       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
+-                          NewSize);
++                          (size_t) NewSize);
+       desired_new_size =
+         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
+-             NewSize);
++             (size_t) NewSize);
+     }
+ 
+     assert(_min_gen0_size > 0, "Sanity check");
+@@ -390,14 +390,14 @@
+       // Adjust gen0 down to accomodate OldSize
+       *gen0_size_ptr = heap_size - min_gen0_size;
+       *gen0_size_ptr =
+-        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
+              min_alignment());
+       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
+       result = true;
+     } else {
+       *gen1_size_ptr = heap_size - *gen0_size_ptr;
+       *gen1_size_ptr =
+-        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
++        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
+                        min_alignment());
+     }
+   }
+@@ -421,7 +421,7 @@
+   // for setting the gen1 maximum.
+   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
+   _max_gen1_size =
+-    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
++    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
+          min_alignment());
+   // If no explicit command line flag has been set for the
+   // gen1 size, use what is left for gen1.
+@@ -435,11 +435,11 @@
+       "gen0 has an unexpected minimum size");
+     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
+     set_min_gen1_size(
+-      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
+            min_alignment()));
+     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
+     set_initial_gen1_size(
+-      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
++      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
+            min_alignment()));
+ 
+   } else {
+diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
+--- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-09-01 01:23:45.000000000 +0100
++++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-09-19 16:07:14.939307365 +0100
+@@ -221,7 +221,7 @@
+   size_t init_sz;
+ 
+   if (TLABSize > 0) {
+-    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
++    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
+   } else if (global_stats() == NULL) {
+     // Startup issue - main thread initialized before heap initialized.
+     init_sz = min_size();
+diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
+--- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-09-19 15:38:15.000000000 +0100
++++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-09-19 16:07:14.939307365 +0100
+@@ -1073,7 +1073,7 @@
+     // NewSize was set on the command line and it is larger than
+     // preferred_max_new_size.
+     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
+-      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
++      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
+     } else {
+       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
+     }
+@@ -1092,7 +1092,7 @@
+     // there was no obvious reason.  Also limit to the case where
+     // MaxNewSize has not been set.
+ 
+-    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
++    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
+ 
+     // Code along this path potentially sets NewSize and OldSize
+ 
+@@ -1134,8 +1134,8 @@
+       // Unless explicitly requested otherwise, make young gen
+       // at least min_new, and at most preferred_max_new_size.
+       if (FLAG_IS_DEFAULT(NewSize)) {
+-        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
+-        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
++	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
++        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
+         if (PrintGCDetails && Verbose) {
+           // Too early to use gclog_or_tty
+           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
+@@ -1146,7 +1146,7 @@
+       // later NewRatio will decide how it grows; see above.
+       if (FLAG_IS_DEFAULT(OldSize)) {
+         if (max_heap > NewSize) {
+-          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
++	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
+           if (PrintGCDetails && Verbose) {
+             // Too early to use gclog_or_tty
+             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
+--- openjdk.orig/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2010-10-28 05:45:16.000000000 -0400
++++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2010-10-28 05:46:22.000000000 -0400
+@@ -37,7 +37,7 @@ void objArrayKlass::objarray_follow_cont
+   const size_t beg_index = size_t(index);
+   assert(beg_index < len || len == 0, "index too large");
+ 
+-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
++  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
+   const size_t end_index = beg_index + stride;
+   T* const base = (T*)a->base();
+   T* const beg = base + beg_index;
+@@ -71,7 +71,7 @@ void objArrayKlass::objarray_follow_cont
+   const size_t beg_index = size_t(index);
+   assert(beg_index < len || len == 0, "index too large");
+ 
+-  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
++  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
+   const size_t end_index = beg_index + stride;
+   T* const base = (T*)a->base();
+   T* const beg = base + beg_index;
+--- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp~	2010-10-08 20:29:24.000000000 +0000
++++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2010-11-29 07:27:56.000000000 +0000
+@@ -163,7 +163,7 @@
+   const size_t num_overflow_elems = of_stack->size();
+   const size_t space_available = queue->max_elems() - queue->size();
+   const size_t num_take_elems = MIN3(space_available / 4,
+-                                     ParGCDesiredObjsFromOverflowList,
++                                     (size_t) ParGCDesiredObjsFromOverflowList,
+                                      num_overflow_elems);
+   // Transfer the most recent num_take_elems from the overflow
+   // stack to our work queue.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/sparc-buildfixes.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,35 @@
+--- openjdk/hotspot/make/linux/makefiles/gcc.make.orig	2008-12-04 20:29:08.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2008-12-04 20:32:54.000000000 +0000
+@@ -52,6 +52,10 @@
+ PICFLAG = -fpic
+ endif
+ 
++ifneq ($(filter sparc sparcv9,$(BUILDARCH)),)
++PICFLAG = -fPIC
++endif
++
+ VM_PICFLAG/LIBJVM = $(PICFLAG)
+ VM_PICFLAG/AOUT   =
+ VM_PICFLAG        = $(VM_PICFLAG/$(LINK_INTO))
+--- openjdk/hotspot/make/linux/makefiles/defs.make.orig	2008-12-04 20:29:04.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/defs.make	2008-12-04 20:32:54.000000000 +0000
+@@ -59,7 +59,7 @@
+ endif
+ 
+ # sparc
+-ifeq ($(ARCH), sparc64)
++ifneq (,$(filter $(ARCH), sparc sparc64))
+   ifeq ($(ARCH_DATA_MODEL), 64)
+     ARCH_DATA_MODEL  = 64
+     MAKE_ARGS        += LP64=1
+--- openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp.orig	2008-12-04 20:32:19.000000000 +0000
++++ openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp	2008-12-04 20:32:54.000000000 +0000
+@@ -264,7 +264,7 @@
+ 
+  private:
+ 
+-  constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const;
++  constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const;
+ 
+ #ifndef CC_INTERP
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/systemtap.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,98 @@
+diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
+--- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 20:30:52.000000000 +0100
++++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 22:38:19.569540300 +0100
+@@ -1,5 +1,6 @@
+ /*
+  * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright 2009 Red Hat, Inc.
+  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  *
+  * This code is free software; you can redistribute it and/or modify it
+@@ -22,7 +23,7 @@
+  *
+  */
+ 
+-#if defined(SOLARIS) && defined(DTRACE_ENABLED)
++#if defined(DTRACE_ENABLED)
+ 
+ #include <sys/sdt.h>
+ 
+@@ -33,7 +34,7 @@
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
+   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
+ 
+-#else // ndef SOLARIS || ndef DTRACE_ENABLED
++#else // ndef DTRACE_ENABLED
+ 
+ #define DTRACE_ONLY(x)
+ #define NOT_DTRACE(x) x
+@@ -44,11 +45,18 @@
+ #define DTRACE_PROBE3(a,b,c,d,e) {;}
+ #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
+ #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
++#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
++#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
++#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
++#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
++#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
+ 
+ #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
+ 
+ #endif
+ 
++#if defined(SOLARIS)
++// Solaris dtrace needs actual extern function decls.
+ #define HS_DTRACE_PROBE_FN(provider,name)\
+   __dtrace_##provider##___##name
+ 
+@@ -56,6 +64,11 @@
+   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
+ #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
+   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
++#else
++// Systemtap dtrace compatible probes on GNU/Linux don't.
++#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
++#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
++#endif 
+ 
+ /* Dtrace probe declarations */
+ #define HS_DTRACE_PROBE_DECL(provider,name) \
+@@ -94,6 +107,8 @@
+     uintptr_t,uintptr_t,uintptr_t))
+ 
+ /* Dtrace probe definitions */
++#if defined(SOLARIS)
++// Solaris dtrace uses actual function calls.
+ #define HS_DTRACE_PROBE_N(provider,name, args) \
+   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
+ 
+@@ -129,3 +144,29 @@
+   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
+     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
+     (uintptr_t)a8,(uintptr_t)a9))
++#else
++// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
++#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
++#define HS_DTRACE_PROBE0(provider,name)\
++  DTRACE_PROBE(provider,name)
++#define HS_DTRACE_PROBE1(provider,name,a0)\
++  DTRACE_PROBE1(provider,name,a0)
++#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
++  DTRACE_PROBE2(provider,name,a0,a1)
++#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
++  DTRACE_PROBE3(provider,name,a0,a1,a2)
++#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
++  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
++#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
++  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
++#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
++  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
++#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
++  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
++#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
++  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
++#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
++  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
++#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/text-relocations.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,61 @@
+diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
+--- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2008-07-17 08:40:27.000000000 +0100
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	2008-07-21 23:10:50.000000000 +0100
+@@ -46,7 +46,11 @@
+ # Compiler flags
+ 
+ # position-independent code
++ifneq ($(filter alpha parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),)
+ PICFLAG = -fPIC
++else
++PICFLAG = -fpic
++endif
+ 
+ VM_PICFLAG/LIBJVM = $(PICFLAG)
+ VM_PICFLAG/AOUT   =
+--- rules.make.orig	2008-12-12 11:23:31.000000000 -0500
++++ openjdk/hotspot/make/linux/makefiles/rules.make	2008-12-12 11:32:26.000000000 -0500
+@@ -138,20 +138,10 @@
+ include $(GAMMADIR)/make/pic.make
+ endif
+ 
+-# The non-PIC object files are only generated for 32 bit platforms.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
+-	   $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
+--- rules.make.orig	2008-12-12 11:42:55.000000000 -0500
++++ openjdk/hotspot/make/solaris/makefiles/rules.make	2008-12-12 11:44:01.000000000 -0500
+@@ -138,20 +138,10 @@
+ include $(GAMMADIR)/make/pic.make
+ endif
+ 
+-# Sun compiler for 64 bit Solaris does not support building non-PIC object files.
+-ifdef LP64
+ %.o: %.cpp
+ 	@echo Compiling $<
+ 	$(QUIETLY) $(REMOVE_TARGET)
+ 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
+-else
+-%.o: %.cpp
+-	@echo Compiling $<
+-	$(QUIETLY) $(REMOVE_TARGET)
+-	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
+-         $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
+-         $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
+-endif
+ 
+ %.o: %.s
+ 	@echo Assembling $<
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/hotspot/original/too-many-args.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,46 @@
+--- openjdk/hotspot/make/linux/makefiles/sa.make.orig	2010-06-21 23:12:13.000000000 +0200
++++ openjdk/hotspot/make/linux/makefiles/sa.make	2010-06-28 01:11:27.022322578 +0200
+@@ -45,6 +45,9 @@
+ AGENT_FILES1 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES1))
+ AGENT_FILES2 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES2))
+ 
++AGENT_FILES1_LIST := $(TOPDIR)/../agent1.classes.list
++AGENT_FILES2_LIST := $(TOPDIR)/../agent2.classes.list
++
+ SA_CLASSDIR = $(GENERATED)/saclasses
+ 
+ SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
+@@ -59,7 +62,7 @@
+ 	   $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
+ 	fi
+ 
+-$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2)
++$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2) agent_files_preclean
+ 	$(QUIETLY) echo "Making $@"
+ 	$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
+ 	  echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
+@@ -74,8 +77,11 @@
+ 	  mkdir -p $(SA_CLASSDIR);        \
+ 	fi
+ 
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
+-	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
++	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
++	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
++
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
++	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
+ 
+ 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
+ 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
+@@ -92,6 +98,10 @@
+ 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
+ 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.sparc.SPARCThreadContext
+ 
++agent_files_preclean:
++	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
++
+ clean:
+ 	rm -rf $(SA_CLASSDIR)
+ 	rm -rf $(GENERATED)/sa-jdi.jar
++	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
--- a/patches/ia64-fix.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
---- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp~	2010-10-08 20:29:24.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	2010-11-29 07:56:22.000000000 +0000
-@@ -1287,12 +1287,7 @@
-           jfloat f;
-           jdouble r;
-           f = STACK_FLOAT(-1);
--#ifdef IA64
--          // IA64 gcc bug
--          r = ( f == 0.0f ) ? (jdouble) f : (jdouble) f + ia64_double_zero;
--#else
-           r = (jdouble) f;
--#endif
-           MORE_STACK(-1); // POP
-           SET_STACK_DOUBLE(r, 1);
-           UPDATE_PC_AND_TOS_AND_CONTINUE(1, 2);
---- openjdk/hotspot/src/share/vm/opto/connode.cpp~	2010-10-08 20:29:24.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/opto/connode.cpp	2010-11-29 07:57:22.000000000 +0000
-@@ -712,12 +712,7 @@
-   if( t == Type::TOP ) return Type::TOP;
-   if( t == Type::FLOAT ) return Type::DOUBLE;
-   const TypeF *tf = t->is_float_constant();
--#ifndef IA64
-   return TypeD::make( (double)tf->getf() );
--#else
--  float x = tf->getf();
--  return TypeD::make( (x == 0.0f) ? (double)x : (double)x + ia64_double_zero );
--#endif
- }
- 
- //=============================================================================
--- a/patches/icedtea-nio2.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/icedtea-nio2.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -1,6 +1,6 @@
 diff -Nru openjdk.orig/jdk/make/common/shared/Defs-javadoc.gmk openjdk/jdk/make/common/shared/Defs-javadoc.gmk
---- openjdk.orig/jdk/make/common/shared/Defs-javadoc.gmk	2010-06-10 23:04:50.000000000 +0100
-+++ openjdk/jdk/make/common/shared/Defs-javadoc.gmk	2010-06-11 00:44:42.000000000 +0100
+--- openjdk.orig/jdk/make/common/shared/Defs-javadoc.gmk	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/common/shared/Defs-javadoc.gmk	2011-02-08 23:10:59.370265518 +0000
 @@ -41,6 +41,7 @@
  TREEAPI_FIRST_COPYRIGHT_YEAR        = 2005
  JNLP_FIRST_COPYRIGHT_YEAR           = 1998
@@ -10,8 +10,8 @@
  # Oracle name
  COMPANY_NAME = Oracle and/or its affiliates
 diff -Nru openjdk.orig/jdk/make/docs/CORE_PKGS.gmk openjdk/jdk/make/docs/CORE_PKGS.gmk
---- openjdk.orig/jdk/make/docs/CORE_PKGS.gmk	2010-05-26 09:32:35.000000000 +0100
-+++ openjdk/jdk/make/docs/CORE_PKGS.gmk	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/docs/CORE_PKGS.gmk	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/docs/CORE_PKGS.gmk	2011-02-08 23:10:59.374265560 +0000
 @@ -36,6 +36,7 @@
    sunw.*                   \
    com.sun.*                \
@@ -21,8 +21,8 @@
    org.w3c.dom.css          \
    org.w3c.dom.html         \
 diff -Nru openjdk.orig/jdk/make/docs/Makefile openjdk/jdk/make/docs/Makefile
---- openjdk.orig/jdk/make/docs/Makefile	2010-06-10 23:04:50.000000000 +0100
-+++ openjdk/jdk/make/docs/Makefile	2010-06-11 00:42:38.000000000 +0100
+--- openjdk.orig/jdk/make/docs/Makefile	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/docs/Makefile	2011-02-08 23:10:59.374265560 +0000
 @@ -1076,6 +1076,58 @@
  
  #############################################################
@@ -83,8 +83,8 @@
  
  $(DIRECTORY_CACHE): $(ALL_SOURCE_DIRS)
 diff -Nru openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk openjdk/jdk/make/docs/NON_CORE_PKGS.gmk
---- openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk	2010-06-11 00:14:21.000000000 +0100
-+++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/docs/NON_CORE_PKGS.gmk	2011-02-08 22:57:19.000000000 +0000
++++ openjdk/jdk/make/docs/NON_CORE_PKGS.gmk	2011-02-08 23:10:59.374265560 +0000
 @@ -65,6 +65,16 @@
  HTTPSERVER_PKGS  = com.sun.net.httpserver       \
                     com.sun.net.httpserver.spi 
@@ -111,9 +111,9 @@
                     $(HTTPSERVER_PKGS) \
                     $(SMARTCARDIO_PKGS) \
 diff -Nru openjdk.orig/jdk/make/java/java/FILES_java.gmk openjdk/jdk/make/java/java/FILES_java.gmk
---- openjdk.orig/jdk/make/java/java/FILES_java.gmk	2010-06-11 00:14:20.000000000 +0100
-+++ openjdk/jdk/make/java/java/FILES_java.gmk	2010-06-11 00:35:39.000000000 +0100
-@@ -517,6 +517,13 @@
+--- openjdk.orig/jdk/make/java/java/FILES_java.gmk	2011-02-08 22:57:17.000000000 +0000
++++ openjdk/jdk/make/java/java/FILES_java.gmk	2011-02-08 23:10:59.374265560 +0000
+@@ -518,6 +518,13 @@
      sun/misc/JavaLangAccess.java \
      sun/misc/JavaIOAccess.java \
      sun/misc/JavaIODeleteOnExitAccess.java \
@@ -129,8 +129,8 @@
  
  FILES_java = $(JAVA_JAVA_java)
 diff -Nru openjdk.orig/jdk/make/java/nio/FILES_java.gmk openjdk/jdk/make/java/nio/FILES_java.gmk
---- openjdk.orig/jdk/make/java/nio/FILES_java.gmk	2010-06-11 00:14:21.000000000 +0100
-+++ openjdk/jdk/make/java/nio/FILES_java.gmk	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/java/nio/FILES_java.gmk	2011-02-08 22:57:17.000000000 +0000
++++ openjdk/jdk/make/java/nio/FILES_java.gmk	2011-02-08 23:10:59.378265602 +0000
 @@ -75,12 +75,13 @@
          sun/nio/ch/DefaultSelectorProvider.java \
  	sun/nio/ch/DirectBuffer.java \
@@ -330,8 +330,8 @@
  
  FILES_java = $(FILES_src) $(FILES_gen)
 diff -Nru openjdk.orig/jdk/make/java/nio/Makefile openjdk/jdk/make/java/nio/Makefile
---- openjdk.orig/jdk/make/java/nio/Makefile	2010-06-11 00:14:21.000000000 +0100
-+++ openjdk/jdk/make/java/nio/Makefile	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/java/nio/Makefile	2011-02-08 22:57:17.000000000 +0000
++++ openjdk/jdk/make/java/nio/Makefile	2011-02-08 23:10:59.378265602 +0000
 @@ -40,6 +40,11 @@
  SNIO_SRC = $(SHARE_SRC)/classes/sun/nio
  SNIO_GEN = $(GENSRCDIR)/sun/nio
@@ -678,8 +678,8 @@
 +
  .PHONY: sources
 diff -Nru openjdk.orig/jdk/make/java/nio/mapfile-linux openjdk/jdk/make/java/nio/mapfile-linux
---- openjdk.orig/jdk/make/java/nio/mapfile-linux	2010-04-06 17:51:43.000000000 +0100
-+++ openjdk/jdk/make/java/nio/mapfile-linux	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/java/nio/mapfile-linux	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/java/nio/mapfile-linux	2011-02-08 23:10:59.378265602 +0000
 @@ -20,6 +20,14 @@
  		Java_sun_nio_ch_EPollArrayWrapper_interrupt;
  		Java_sun_nio_ch_EPollArrayWrapper_offsetofData;
@@ -796,8 +796,8 @@
  	local:
  		*;
 diff -Nru openjdk.orig/jdk/make/java/nio/mapfile-solaris openjdk/jdk/make/java/nio/mapfile-solaris
---- openjdk.orig/jdk/make/java/nio/mapfile-solaris	2010-04-06 17:51:43.000000000 +0100
-+++ openjdk/jdk/make/java/nio/mapfile-solaris	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/java/nio/mapfile-solaris	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/java/nio/mapfile-solaris	2011-02-08 23:10:59.378265602 +0000
 @@ -73,6 +73,75 @@
  		Java_sun_nio_ch_ServerSocketChannelImpl_listen;
                  Java_sun_nio_ch_SocketChannelImpl_checkConnect;
@@ -875,8 +875,8 @@
  	local:
  		*;
 diff -Nru openjdk.orig/jdk/make/mkdemo/Makefile openjdk/jdk/make/mkdemo/Makefile
---- openjdk.orig/jdk/make/mkdemo/Makefile	2010-05-26 09:32:36.000000000 +0100
-+++ openjdk/jdk/make/mkdemo/Makefile	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/mkdemo/Makefile	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/mkdemo/Makefile	2011-02-08 23:10:59.378265602 +0000
 @@ -31,7 +31,7 @@
  PRODUCT = demos
  include $(BUILDDIR)/common/Defs.gmk
@@ -887,8 +887,8 @@
  all build:: nbproject
  	$(SUBDIRS-loop)
 diff -Nru openjdk.orig/jdk/make/mksample/nio/Makefile openjdk/jdk/make/mksample/nio/Makefile
---- openjdk.orig/jdk/make/mksample/nio/Makefile	2010-05-26 09:32:36.000000000 +0100
-+++ openjdk/jdk/make/mksample/nio/Makefile	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/make/mksample/nio/Makefile	2010-06-21 22:15:08.000000000 +0100
++++ openjdk/jdk/make/mksample/nio/Makefile	2011-02-08 23:10:59.378265602 +0000
 @@ -31,7 +31,7 @@
  PRODUCT = java
  include $(BUILDDIR)/common/Defs.gmk
@@ -899,8 +899,8 @@
  	$(SUBDIRS-loop)
  
 diff -Nru openjdk.orig/jdk/src/share/classes/java/io/File.java openjdk/jdk/src/share/classes/java/io/File.java
---- openjdk.orig/jdk/src/share/classes/java/io/File.java	2010-05-26 09:32:38.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/io/File.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/java/io/File.java	2010-06-21 22:15:18.000000000 +0100
++++ openjdk/jdk/src/share/classes/java/io/File.java	2011-02-08 23:10:59.378265602 +0000
 @@ -1958,6 +1958,13 @@
                  }
              }
@@ -916,9 +916,9 @@
  
  
 diff -Nru openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java openjdk/jdk/src/share/classes/java/net/NetworkInterface.java
---- openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java	2010-05-26 09:32:38.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java	2010-06-11 00:35:39.000000000 +0100
-@@ -533,4 +533,15 @@
+--- openjdk.orig/jdk/src/share/classes/java/net/NetworkInterface.java	2011-02-08 22:57:12.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/net/NetworkInterface.java	2011-02-08 23:10:59.378265602 +0000
+@@ -536,4 +536,15 @@
      }
      private static native void init();
  
@@ -935,8 +935,8 @@
 +
  }
 diff -Nru openjdk.orig/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java openjdk/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java
---- openjdk.orig/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java	2010-05-26 09:32:39.000000000 +0100
-+++ openjdk/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java	2010-06-21 22:15:21.000000000 +0100
++++ openjdk/jdk/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java	2011-02-08 23:10:59.378265602 +0000
 @@ -2004,4 +2004,23 @@
              }
          }
@@ -962,8 +962,8 @@
 +
  }
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/misc/Unsafe.java openjdk/jdk/src/share/classes/sun/misc/Unsafe.java
---- openjdk.orig/jdk/src/share/classes/sun/misc/Unsafe.java	2010-05-26 09:32:41.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/misc/Unsafe.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/misc/Unsafe.java	2010-06-21 22:15:30.000000000 +0100
++++ openjdk/jdk/src/share/classes/sun/misc/Unsafe.java	2011-02-08 23:10:59.378265602 +0000
 @@ -504,9 +504,33 @@
      /**
       * Sets all bytes in a given block of memory to a copy of another
@@ -1011,9 +1011,9 @@
       * Report the scale factor for addressing elements in the storage
       * allocation of a given array class.  However, arrays of "narrow" types
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java openjdk/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	2010-05-26 09:32:41.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	2010-06-11 00:35:39.000000000 +0100
-@@ -29,10 +29,28 @@
+--- openjdk.orig/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	2011-02-08 22:57:12.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java	2011-02-08 23:40:00.916516539 +0000
+@@ -29,11 +29,30 @@
  import java.io.IOException;
  import java.net.*;
  import java.nio.ByteBuffer;
@@ -1029,6 +1029,7 @@
 +import java.util.Set;
 +
  import java.lang.ref.SoftReference;
+-import sun.net.ResourceManager;
  
 +import org.classpath.icedtea.java.net.ProtocolFamily;
 +import org.classpath.icedtea.java.net.StandardProtocolFamily;
@@ -1041,10 +1042,12 @@
 +import org.classpath.icedtea.java.nio.channels.spi.SelectorProvider;
 +
 +import org.classpath.icedtea.misc.SharedSecrets;
++
++import sun.net.ResourceManager;
  
  /**
   * An implementation of DatagramChannels.
-@@ -53,6 +71,9 @@
+@@ -54,6 +73,9 @@
      // even after the value in the file descriptor object has been set to -1
      int fdVal;
  
@@ -1054,7 +1057,7 @@
      // IDs of native threads doing reads and writes, for signalling
      private volatile long readerThread = 0;
      private volatile long writerThread = 0;
-@@ -91,6 +112,9 @@
+@@ -92,6 +114,9 @@
      // Our socket adaptor, if any
      private DatagramSocket socket = null;
  
@@ -1064,27 +1067,29 @@
      // -- End of fields protected by stateLock
  
  
-@@ -98,15 +122,40 @@
-         throws IOException
-     {
+@@ -101,6 +126,8 @@
          super(sp);
-+        this.family = Net.isIPv6Available() ?
-+            StandardProtocolFamily.INET6 : StandardProtocolFamily.INET;
-         this.fd = Net.socket(false);
-         this.fdVal = IOUtil.fdVal(fd);
-         this.state = ST_UNCONNECTED;
+         ResourceManager.beforeUdpCreate();
+         try {
++            this.family = Net.isIPv6Available() ?
++              StandardProtocolFamily.INET6 : StandardProtocolFamily.INET;
+             this.fd = Net.socket(false);
+             this.fdVal = IOUtil.fdVal(fd);
+             this.state = ST_UNCONNECTED;
+@@ -110,10 +137,33 @@
+         }
      }
  
 +    public DatagramChannelImpl(SelectorProvider sp, ProtocolFamily family) {
 +        super(sp);
 +        if ((family != StandardProtocolFamily.INET) &&
 +            (family != StandardProtocolFamily.INET6))
-+        {
-+            if (family == null)
-+                throw new NullPointerException("'family' is null");
-+            else
-+                throw new UnsupportedOperationException("Protocol family not supported");
-+        }
++            {
++                if (family == null)
++                    throw new NullPointerException("'family' is null");
++                else
++                    throw new UnsupportedOperationException("Protocol family not supported");
++            }
 +        if (family == StandardProtocolFamily.INET6) {
 +            if (!Net.isIPv6Available()) {
 +                throw new UnsupportedOperationException("IPv6 not available");
@@ -1105,7 +1110,7 @@
          this.fd = fd;
          this.fdVal = IOUtil.fdVal(fd);
          this.state = ST_UNCONNECTED;
-@@ -499,7 +548,7 @@
+@@ -506,7 +556,7 @@
          }
      }
  
@@ -1114,15 +1119,15 @@
          synchronized (readLock) {
              synchronized (writeLock) {
                  synchronized (stateLock) {
-@@ -515,6 +564,7 @@
+@@ -522,6 +572,7 @@
                  }
              }
          }
-+	return this;
++        return this;
      }
  
      public boolean isConnected() {
-@@ -704,4 +754,350 @@
+@@ -712,4 +763,350 @@
          initIDs();
      }
  
@@ -1174,7 +1179,7 @@
 +                    throw new IllegalArgumentException("Cannot set IP_MULTICAST_IF to 'null'");
 +                NetworkInterface interf = (NetworkInterface)value;
 +                if (family == StandardProtocolFamily.INET6) {
-+		    int index = SharedSecrets.getJavaNetGetIndexAccess().getIndex(interf);
++                    int index = SharedSecrets.getJavaNetGetIndexAccess().getIndex(interf);
 +                    if (index == -1)
 +                        throw new IOException("Network interface cannot be identified");
 +                    Net.setInterface6(fd, index);
@@ -1474,8 +1479,8 @@
 +
  }
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	2010-05-26 09:32:41.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	2010-06-21 22:15:30.000000000 +0100
++++ openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	2011-02-08 23:10:59.378265602 +0000
 @@ -32,8 +32,15 @@
  import java.io.IOException;
  import java.nio.ByteBuffer;
@@ -1525,8 +1530,8 @@
          ensureOpen();
          int rv = -1;
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java openjdk/jdk/src/share/classes/sun/nio/ch/Net.java
---- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java	2010-05-26 09:32:41.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java	2011-02-08 22:57:12.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java	2011-02-08 23:16:14.657580027 +0000
 @@ -30,6 +30,15 @@
  import java.net.*;
  import java.nio.channels.*;
@@ -1549,7 +1554,7 @@
  
 +    static native boolean isIPv6Available0();
 +
-     static FileDescriptor socket(boolean stream) {
+     static FileDescriptor socket(boolean stream) throws IOException {
 -        return IOUtil.newFD(socket0(stream, false));
 +        return socket(UNSPEC, stream);
 +    }
@@ -1887,8 +1892,8 @@
 +
  }
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java openjdk/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java
---- openjdk.orig/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java	2010-05-26 09:32:41.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java	2010-06-21 22:15:30.000000000 +0100
++++ openjdk/jdk/src/share/classes/sun/nio/ch/SelectorProviderImpl.java	2011-02-08 23:10:59.378265602 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
@@ -1935,8 +1940,8 @@
 -
  }
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/security/util/SecurityConstants.java openjdk/jdk/src/share/classes/sun/security/util/SecurityConstants.java
---- openjdk.orig/jdk/src/share/classes/sun/security/util/SecurityConstants.java	2010-05-26 09:32:42.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/security/util/SecurityConstants.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/security/util/SecurityConstants.java	2010-06-21 22:15:35.000000000 +0100
++++ openjdk/jdk/src/share/classes/sun/security/util/SecurityConstants.java	2011-02-08 23:10:59.378265602 +0000
 @@ -52,6 +52,7 @@
      public static final String FILE_EXECUTE_ACTION = "execute";
      public static final String FILE_READ_ACTION = "read";
@@ -1946,8 +1951,8 @@
      public static final String SOCKET_RESOLVE_ACTION = "resolve";
      public static final String SOCKET_CONNECT_ACTION = "connect";
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java
---- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java	2010-06-21 22:15:44.000000000 +0100
++++ openjdk/jdk/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java	2011-02-08 23:10:59.378265602 +0000
 @@ -25,11 +25,12 @@
  
  package sun.nio.ch;
@@ -1963,8 +1968,8 @@
   * Creates this platform's default SelectorProvider
   */
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java openjdk/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java
---- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java	2010-06-21 22:15:44.000000000 +0100
++++ openjdk/jdk/src/solaris/classes/sun/nio/ch/FileDispatcher.java	2011-02-08 23:10:59.378265602 +0000
 @@ -35,6 +35,11 @@
  class FileDispatcher extends NativeDispatcher
  {
@@ -2026,8 +2031,8 @@
 +
  }
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java openjdk/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java
---- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java	2010-06-21 22:15:44.000000000 +0100
++++ openjdk/jdk/src/solaris/classes/sun/nio/ch/InheritedChannel.java	2011-02-08 23:10:59.382265644 +0000
 @@ -34,7 +34,8 @@
  import java.nio.channels.SocketChannel;
  import java.nio.channels.ServerSocketChannel;
@@ -2039,8 +2044,8 @@
  class InheritedChannel {
  
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c
---- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c	2010-06-21 22:15:45.000000000 +0100
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c	2011-02-08 23:10:59.382265644 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2723,8 +2728,8 @@
  /* Declared in nio_util.h */
  
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/nio_util.h openjdk/jdk/src/solaris/native/sun/nio/ch/nio_util.h
---- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/nio_util.h	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/nio/ch/nio_util.h	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/nio_util.h	2010-06-21 22:15:45.000000000 +0100
++++ openjdk/jdk/src/solaris/native/sun/nio/ch/nio_util.h	2011-02-08 23:10:59.382265644 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2002, Oracle and/or its affiliates. All rights reserved.
@@ -2749,8 +2754,8 @@
  /* NIO utility procedures */
  
 diff -Nru openjdk.orig/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java openjdk/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java
---- openjdk.orig/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java	2010-05-26 09:32:51.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java	2010-06-11 00:35:39.000000000 +0100
+--- openjdk.orig/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java	2010-06-21 22:15:46.000000000 +0100
++++ openjdk/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java	2011-02-08 23:10:59.382265644 +0000
 @@ -36,6 +36,11 @@
  class FileDispatcher extends NativeDispatcher
  {
--- a/patches/icedtea-no-precompiled.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/gcc.make~	2009-10-30 11:54:26.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2009-10-30 11:55:34.000000000 +0100
-@@ -34,13 +34,14 @@
- CC_VER_MAJOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f1)
- CC_VER_MINOR := $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
- 
-+ifeq (,$(DISABLE_PRECOMPILED_HEADER))
- # check for precompiled headers support
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
- USE_PRECOMPILED_HEADER=1
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
- endif
--
-+endif
- 
- #------------------------------------------------------------------------
- # Compiler flags
---- openjdk/hotspot/make/solaris/makefiles/gcc.make~	2009-10-30 11:54:26.000000000 +0100
-+++ openjdk/hotspot/make/solaris/makefiles/gcc.make	2009-10-30 11:56:05.000000000 +0100
-@@ -45,12 +45,14 @@
- $(shell $(CC) -dumpversion | sed 's/egcs-//' | cut -d'.' -f2)
- 
- 
-+ifeq (,$(DISABLE_PRECOMPILED_HEADER))
- # check for precompiled headers support
- ifneq "$(shell expr \( $(CC_VER_MAJOR) \> 3 \) \| \( \( $(CC_VER_MAJOR) = 3 \) \& \( $(CC_VER_MINOR) \>= 4 \) \))" "0"
- USE_PRECOMPILED_HEADER=1
- PRECOMPILED_HEADER_DIR=.
- PRECOMPILED_HEADER=$(PRECOMPILED_HEADER_DIR)/incls/_precompiled.incl.gch
- endif
-+endif
- 
- 
- #------------------------------------------------------------------------
--- a/patches/icedtea-nomotif-6706121.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/icedtea-nomotif-6706121.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -1239,584 +1239,6 @@
  		awt_display;
  		awt_lock;
  		awt_Lock;
-diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux.orig openjdk/jdk/make/sun/awt/mapfile-vers-linux.orig
---- openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux.orig	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/make/sun/awt/mapfile-vers-linux.orig	2010-05-26 09:32:36.000000000 +0100
-@@ -0,0 +1,574 @@
-+#
-+# Copyright (c) 2002, 2007, 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.  Oracle designates this
-+# particular file as subject to the "Classpath" exception as provided
-+# by Oracle in the LICENSE file that accompanied this code.
-+#
-+# 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.
-+#
-+
-+# Define public interface for libawt.so on Linux.
-+# Linux port does not use mawt, all public symbols are in libawt.so
-+
-+SUNWprivate_1.1 {
-+	global:
-+		JNI_OnLoad;
-+
-+		Java_java_awt_CheckboxMenuItem_initIDs;
-+		Java_java_awt_Color_initIDs;
-+		Java_java_awt_FontMetrics_initIDs;
-+		Java_java_awt_image_BufferedImage_initIDs;
-+		Java_sun_awt_image_DataBufferNative_getElem;
-+		Java_sun_awt_image_DataBufferNative_setElem;
-+		Java_java_awt_image_ColorModel_initIDs;
-+		Java_java_awt_image_ComponentSampleModel_initIDs;
-+		Java_java_awt_image_IndexColorModel_initIDs;
-+		Java_java_awt_image_Kernel_initIDs;
-+		Java_java_awt_image_Raster_initIDs;
-+		Java_java_awt_image_SampleModel_initIDs;
-+		Java_java_awt_Label_initIDs;
-+		Java_java_awt_MenuBar_initIDs;
-+		Java_java_awt_ScrollPaneAdjustable_initIDs;
-+		Java_java_awt_Toolkit_initIDs;
-+		Java_java_awt_TrayIcon_initIDs;
-+                Java_sun_awt_DebugSettings_setCTracingOn__Z; 
-+                Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2; 
-+                Java_sun_awt_DebugSettings_setCTracingOn__ZLjava_lang_String_2I; 
-+		Java_sun_awt_image_ByteComponentRaster_initIDs;
-+		Java_sun_awt_image_GifImageDecoder_initIDs;
-+		Java_sun_awt_image_GifImageDecoder_parseImage;
-+		Java_sun_awt_image_Image_initIDs;
-+		Java_sun_awt_image_ImageRepresentation_initIDs;
-+		Java_sun_awt_image_ImageRepresentation_setDiffICM;
-+		Java_sun_awt_image_ImageRepresentation_setICMpixels;
-+		Java_sun_awt_image_ImagingLib_convolveBI;
-+		Java_sun_awt_image_ImagingLib_convolveRaster;
-+		Java_sun_awt_image_ImagingLib_init;
-+		Java_sun_awt_image_ImagingLib_transformBI;
-+		Java_sun_awt_image_ImagingLib_transformRaster;
-+		Java_sun_awt_image_IntegerComponentRaster_initIDs;
-+		Java_sun_awt_image_ShortComponentRaster_initIDs;
-+		Java_sun_java2d_pipe_SpanClipRenderer_eraseTile;
-+		Java_sun_java2d_pipe_SpanClipRenderer_fillTile;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_addSegment;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_moveTo;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_lineTo;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_quadTo;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_curveTo;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_closePath;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_pathDone;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_getNativeConsumer;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_appendPoly;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_dispose;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_getNativeIterator;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_getPathBox;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_initIDs;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_intersectClipBox;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_nextSpan;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_setNormalize;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_setOutputAreaXYXY;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_setRule;
-+                Java_sun_java2d_pipe_ShapeSpanIterator_skipDownTo;
-+
-+		Java_java_awt_Dimension_initIDs;
-+		Java_java_awt_event_MouseEvent_initIDs;
-+		Java_java_awt_image_DataBufferInt_initIDs;
-+		Java_java_awt_image_SinglePixelPackedSampleModel_initIDs;
-+		Java_java_awt_Rectangle_initIDs;
-+		Java_sun_awt_image_BufImgSurfaceData_getSurfaceData;
-+		Java_sun_awt_image_BufImgSurfaceData_initIDs;
-+		Java_sun_awt_image_BufImgSurfaceData_initRaster;
-+		Java_sun_awt_image_BufImgSurfaceData_setSurfaceData;
-+                Java_sun_awt_image_BufImgSurfaceData_freeNativeICMData;
-+		Java_sun_awt_image_BytePackedRaster_initIDs;
-+		Java_sun_awt_image_ImagingLib_lookupByteBI;
-+		Java_sun_awt_image_ImagingLib_lookupByteRaster;
-+		Java_sun_java2d_SurfaceData_initIDs;
-+		Java_sun_java2d_SurfaceData_isOpaqueGray;
-+		Java_sun_java2d_Disposer_initIDs;
-+		Java_sun_java2d_DefaultDisposerRecord_invokeNativeDispose;
-+		Java_sun_java2d_loops_BlitBg_BlitBg;
-+		Java_sun_java2d_loops_Blit_Blit;
-+		Java_sun_java2d_loops_ScaledBlit_Scale;
-+		Java_sun_java2d_loops_DrawLine_DrawLine;
-+		Java_sun_java2d_loops_DrawPolygons_DrawPolygons;
-+		Java_sun_java2d_loops_DrawRect_DrawRect;
-+		Java_sun_java2d_loops_FillRect_FillRect;
-+		Java_sun_java2d_loops_FillSpans_FillSpans;
-+		Java_sun_java2d_loops_GraphicsPrimitiveMgr_initIDs;
-+		Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
-+		Java_sun_java2d_loops_MaskBlit_MaskBlit;
-+		Java_sun_java2d_loops_MaskFill_MaskFill;
-+                Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
-+                Java_sun_java2d_pipe_RenderBuffer_copyFromArray;
-+		Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
-+		sun_awt_image_GifImageDecoder_initIDs;
-+
-+		# libmawt entry points
-+		SurfaceData_InitOps;
-+		SurfaceData_ThrowInvalidPipeException;
-+                Region_GetBounds;
-+                Region_GetInfo;
-+                Region_StartIteration;
-+                Region_CountIterationRects;
-+                Region_NextIteration;
-+                Region_EndIteration;
-+                GrPrim_CompGetXorInfo;
-+                GrPrim_CompGetAlphaInfo;
-+		img_makePalette;
-+		initInverseGrayLut;
-+		make_dither_arrays;
-+		make_uns_ordered_dither_array;
-+
-+		# variables exported to libmawt
-+		std_img_oda_red;
-+		std_img_oda_blue;
-+		std_img_oda_green;
-+		std_odas_computed;
-+		g_CMpDataID;
-+		colorValueID;
-+                jvm;
-+
-+		# CDE private entry point
-+                # This is in awt_LoadLibrary.c and falls through to libmawt.
-+                # Evidently CDE needs this for backward compatability.
-+		Java_sun_awt_motif_XsessionWMcommand;
-+
-+		# Java Plugin
-+                # This is in awt_LoadLibrary.c and falls through to libmawt.
-+                # Evidently plugin needs this for backward compatability.
-+		getAwtLockFunctions;
-+		getAwtData;
-+		getAwtDisplay;
-+
-+		# libfontmanager entry points
-+		AWTIsHeadless;
-+		GrPrim_Sg2dGetCompInfo;
-+		GrPrim_Sg2dGetClip;
-+		GetNativePrim;
-+		SurfaceData_IntersectBounds;
-+		SurfaceData_GetOps;
-+		Disposer_AddRecord;
-+		GrPrim_Sg2dGetEaRGB;
-+		GrPrim_Sg2dGetPixel;
-+		GrPrim_Sg2dGetLCDTextContrast;
-+
-+		Java_sun_awt_motif_MComponentPeer_restoreFocus;
-+		Java_sun_awt_DefaultMouseInfoPeer_fillPointWithCoords;
-+		Java_sun_awt_DefaultMouseInfoPeer_isWindowUnderMouse;
-+		Java_java_awt_AWTEvent_nativeSetSource;
-+		Java_java_awt_Checkbox_initIDs;
-+		Java_java_awt_Component_initIDs;
-+		Java_java_awt_Dialog_initIDs;
-+		Java_java_awt_Font_initIDs;
-+		Java_sun_awt_KeyboardFocusManagerPeerImpl_clearNativeGlobalFocusOwner;
-+                Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusOwner;
-+                Java_sun_awt_KeyboardFocusManagerPeerImpl_getNativeFocusedWindow;
-+                Java_java_awt_KeyboardFocusManager_initIDs;
-+		Java_java_awt_Menu_initIDs;
-+		Java_java_awt_MenuComponent_initIDs;
-+		Java_java_awt_MenuItem_initIDs;
-+		Java_java_awt_Scrollbar_initIDs;
-+		Java_java_awt_ScrollPane_initIDs;
-+		Java_java_awt_TextArea_initIDs;
-+		Java_sun_awt_FontDescriptor_initIDs;
-+		Java_sun_awt_motif_MButtonPeer_create;
-+		Java_sun_awt_motif_MButtonPeer_setLabel;
-+		Java_sun_awt_motif_MCanvasPeer_create;
-+		Java_sun_awt_motif_MCanvasPeer_initIDs;
-+		Java_sun_awt_motif_MCanvasPeer_resetTargetGC;
-+		Java_sun_awt_motif_MCheckboxMenuItemPeer_pSetState;
-+		Java_sun_awt_motif_MCheckboxPeer_create;
-+		Java_sun_awt_motif_MCheckboxPeer_setCheckboxGroup;
-+		Java_sun_awt_motif_MCheckboxPeer_setLabel;
-+		Java_sun_awt_motif_MCheckboxPeer_pSetState;
-+		Java_sun_awt_motif_MCheckboxPeer_pGetState;
-+		Java_sun_awt_motif_MChoicePeer_addItem;
-+		Java_sun_awt_motif_MChoicePeer_appendItems;
-+		Java_sun_awt_motif_MChoicePeer_create;
-+		Java_sun_awt_motif_MChoicePeer_pReshape;
-+		Java_sun_awt_motif_MChoicePeer_remove;
-+		Java_sun_awt_motif_MChoicePeer_removeAll;
-+		Java_sun_awt_motif_MChoicePeer_setBackground;
-+		Java_sun_awt_motif_MChoicePeer_pSelect;
-+		Java_sun_awt_motif_MChoicePeer_setFont;
-+		Java_sun_awt_motif_MChoicePeer_setForeground;
-+		Java_sun_awt_motif_MComponentPeer_addNativeDropTarget;
-+		Java_sun_awt_motif_MComponentPeer_createBackBuffer;
-+		Java_sun_awt_motif_MComponentPeer_destroyBackBuffer;
-+		Java_sun_awt_motif_MComponentPeer_getNativeColor;
-+		Java_sun_awt_motif_MComponentPeer_getWindow;
-+		Java_sun_awt_motif_MComponentPeer_pDisable;
-+		Java_sun_awt_motif_MComponentPeer_pDispose;
-+		Java_sun_awt_motif_MComponentPeer_pEnable;
-+		Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen;
-+		Java_sun_awt_motif_MComponentPeer_pGetLocationOnScreen2;
-+		Java_sun_awt_motif_MComponentPeer_pHide;
-+		Java_sun_awt_motif_MComponentPeer_pInitialize;
-+		Java_sun_awt_motif_MComponentPeer_pMakeCursorVisible;
-+		Java_sun_awt_motif_MComponentPeer_pReshape;
-+		Java_sun_awt_motif_MComponentPeer_pShow;
-+		Java_sun_awt_motif_MComponentPeer_removeNativeDropTarget;
-+		Java_sun_awt_motif_MComponentPeer_swapBuffers;
-+		Java_sun_awt_motif_MComponentPeer_pSetBackground;
-+		Java_sun_awt_motif_MComponentPeer_pSetFont;
-+                Java_sun_awt_motif_MComponentPeer_processSynchronousLightweightTransfer;
-+                Java_sun_awt_motif_MComponentPeer__1requestFocus;
-+		Java_sun_awt_motif_MCheckboxMenuItemPeer_getState;
-+		Java_sun_awt_motif_MComponentPeer_pSetForeground;
-+		Java_sun_awt_motif_MDragSourceContextPeer_startDrag;
-+		Java_sun_awt_motif_MDragSourceContextPeer_setNativeCursor;
-+		Java_sun_awt_motif_MDropTargetContextPeer_addTransfer;
-+		Java_sun_awt_motif_MDropTargetContextPeer_dropDone;
-+		Java_sun_awt_motif_MDropTargetContextPeer_startTransfer;
-+		Java_sun_awt_motif_X11DragSourceContextPeer_startDrag;
-+		Java_sun_awt_motif_X11DragSourceContextPeer_setNativeCursor;
-+		Java_sun_awt_motif_X11DropTargetContextPeer_sendResponse;
-+		Java_sun_awt_motif_X11DropTargetContextPeer_dropDone;
-+		Java_sun_awt_motif_X11DropTargetContextPeer_getData;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_NEFcreate;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_pShowImpl;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_pReshapePrivate;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_getBoundsPrivate;
-+		Java_sun_awt_motif_MFramePeer_pSetIconImage___3B_3I_3SII;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_requestXEmbedFocus;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedApplicationActive;
-+		Java_sun_awt_motif_MEmbeddedFramePeer_isXEmbedActive;
-+		Java_sun_awt_motif_MEmbeddedFrame_getWidget;
-+		Java_sun_awt_motif_MEmbeddedFrame_mapWidget;
-+		Java_sun_awt_motif_MFileDialogPeer_create;
-+		Java_sun_awt_motif_MFileDialogPeer_pDispose;
-+		Java_sun_awt_motif_MFileDialogPeer_pHide;
-+		Java_sun_awt_motif_MFileDialogPeer_pReshape;
-+		Java_sun_awt_motif_MFileDialogPeer_pShow;
-+		Java_sun_awt_motif_MFileDialogPeer_setFileEntry;
-+		Java_sun_awt_motif_MFileDialogPeer_setFont;
-+		Java_sun_awt_motif_MFramePeer_pGetIconSize;
-+		Java_sun_awt_motif_MGlobalCursorManager_cacheInit;
-+		Java_sun_awt_motif_MGlobalCursorManager_findComponentAt;
-+		Java_sun_awt_motif_MGlobalCursorManager_findHeavyweightUnderCursor;
-+		Java_sun_awt_motif_MGlobalCursorManager_getCursorPos;
-+		Java_sun_awt_motif_MGlobalCursorManager_getLocationOnScreen;
-+		Java_sun_awt_motif_MLabelPeer_create;
-+		Java_sun_awt_motif_MLabelPeer_setAlignment;
-+		Java_sun_awt_motif_MLabelPeer_setText;
-+		Java_sun_awt_motif_MListPeer_addItem;
-+		Java_sun_awt_motif_MListPeer_create;
-+		Java_sun_awt_motif_MListPeer_delItems;
-+		Java_sun_awt_motif_MListPeer_deselect;
-+		Java_sun_awt_motif_MListPeer_isSelected;
-+		Java_sun_awt_motif_MListPeer_makeVisible;
-+		Java_sun_awt_motif_MListPeer_select;
-+		Java_sun_awt_motif_MListPeer_setMultipleSelections;
-+		Java_sun_awt_motif_MMenuBarPeer_create;
-+		Java_sun_awt_motif_MMenuItemPeer_createMenuItem;
-+		Java_sun_awt_motif_MMenuItemPeer_pDisable;
-+		Java_sun_awt_motif_MMenuItemPeer_pDispose;
-+		Java_sun_awt_motif_MMenuItemPeer_pEnable;
-+		Java_sun_awt_motif_MMenuItemPeer_pSetLabel;
-+		Java_sun_awt_motif_MMenuPeer_createMenu;
-+		Java_sun_awt_motif_MMenuPeer_createSubMenu;
-+		Java_sun_awt_motif_MMenuPeer_pDispose;
-+		Java_sun_awt_motif_MPopupMenuPeer_createMenu;
-+		Java_sun_awt_motif_MPopupMenuPeer_pDispose;
-+		Java_sun_awt_motif_MPopupMenuPeer_pShow;
-+		Java_sun_awt_motif_MRobotPeer_getRGBPixelsImpl;
-+		Java_sun_awt_motif_MRobotPeer_keyPressImpl;
-+		Java_sun_awt_motif_MRobotPeer_keyReleaseImpl;
-+		Java_sun_awt_motif_MRobotPeer_mouseMoveImpl;
-+		Java_sun_awt_motif_MRobotPeer_mousePressImpl;
-+		Java_sun_awt_motif_MRobotPeer_mouseReleaseImpl;
-+		Java_sun_awt_motif_MRobotPeer_mouseWheelImpl;
-+		Java_sun_awt_motif_MRobotPeer_setup;
-+		Java_sun_awt_motif_MScrollbarPeer_create;
-+		Java_sun_awt_motif_MScrollbarPeer_setLineIncrement;
-+		Java_sun_awt_motif_MScrollbarPeer_setPageIncrement;
-+		Java_sun_awt_motif_MScrollbarPeer_pSetValues;
-+		Java_sun_awt_motif_MScrollPanePeer_create;
-+		Java_sun_awt_motif_MScrollPanePeer_pGetBlockIncrement;
-+		Java_sun_awt_motif_MScrollPanePeer_pGetScrollbarSpace;
-+		Java_sun_awt_motif_MScrollPanePeer_pGetShadow;
-+		Java_sun_awt_motif_MScrollPanePeer_pInsets;
-+		Java_sun_awt_motif_MScrollPanePeer_pSetIncrement;
-+		Java_sun_awt_motif_MScrollPanePeer_pSetScrollChild;
-+		Java_sun_awt_motif_MScrollPanePeer_setScrollPosition;
-+		Java_sun_awt_motif_MTextAreaPeer_initIDs;
-+		Java_sun_awt_motif_MTextAreaPeer_pCreate;
-+		Java_sun_awt_motif_MTextAreaPeer_getCaretPosition;
-+		Java_sun_awt_motif_MTextAreaPeer_getExtraHeight;
-+		Java_sun_awt_motif_MTextAreaPeer_getExtraWidth;
-+		Java_sun_awt_motif_MTextAreaPeer_getSelectionEnd;
-+		Java_sun_awt_motif_MTextAreaPeer_getSelectionStart;
-+		Java_sun_awt_motif_MTextAreaPeer_getText;
-+		Java_sun_awt_motif_MTextAreaPeer_insert;
-+		Java_sun_awt_motif_MTextAreaPeer_pMakeCursorVisible;
-+		Java_sun_awt_motif_MTextAreaPeer_pSetEditable;
-+		Java_sun_awt_motif_MTextAreaPeer_pShow2;
-+		Java_sun_awt_motif_MTextAreaPeer_replaceRange;
-+		Java_sun_awt_motif_MTextAreaPeer_select;
-+		Java_sun_awt_motif_MTextAreaPeer_setCaretPosition;
-+		Java_sun_awt_motif_MTextAreaPeer_setFont;
-+		Java_sun_awt_motif_MTextAreaPeer_setText;
-+		Java_sun_awt_motif_MTextAreaPeer_setTextBackground;
-+		Java_sun_awt_motif_MTextFieldPeer_initIDs;
-+		Java_sun_awt_motif_MTextFieldPeer_pCreate;
-+		Java_sun_awt_motif_MTextFieldPeer_getCaretPosition;
-+		Java_sun_awt_motif_MTextFieldPeer_getSelectionEnd;
-+		Java_sun_awt_motif_MTextFieldPeer_getSelectionStart;
-+		Java_sun_awt_motif_MTextFieldPeer_getText;
-+		Java_sun_awt_motif_MTextFieldPeer_insertReplaceText;
-+		Java_sun_awt_motif_MTextFieldPeer_preDispose;
-+		Java_sun_awt_motif_MTextFieldPeer_pSetEditable;
-+		Java_sun_awt_motif_MTextFieldPeer_select;
-+		Java_sun_awt_motif_MTextFieldPeer_setCaretPosition;
-+		Java_sun_awt_motif_MTextFieldPeer_setEchoChar;
-+		Java_sun_awt_motif_MTextFieldPeer_setFont;
-+		Java_sun_awt_motif_MTextFieldPeer_setText;
-+		Java_sun_awt_motif_MToolkit_beep;
-+		Java_sun_awt_motif_MToolkit_getLockingKeyStateNative;
-+		Java_sun_awt_motif_MToolkit_getMulticlickTime;
-+                Java_sun_awt_motif_MToolkit_getNumMouseButtons;
-+		Java_sun_awt_motif_MToolkit_getScreenHeight;
-+		Java_sun_awt_motif_MToolkit_getScreenResolution;
-+		Java_sun_awt_motif_MToolkit_getScreenWidth;
-+		Java_sun_awt_motif_MToolkit_init;
-+		Java_sun_awt_motif_MToolkit_isDynamicLayoutSupportedNative;
-+		Java_sun_awt_motif_MToolkit_isFrameStateSupported;
-+		Java_sun_awt_motif_MToolkit_loadSystemColors;
-+		Java_sun_awt_motif_MToolkit_makeColorModel;
-+		Java_sun_awt_motif_MToolkit_run;
-+		Java_sun_awt_motif_MToolkit_sync;
-+                Java_sun_awt_motif_MToolkit_isAlwaysOnTopSupported;
-+		Java_sun_awt_motif_MWindowAttributes_initIDs;
-+		Java_sun_awt_motif_MWindowPeer_pDispose;
-+		Java_sun_awt_motif_MWindowPeer_pHide;
-+		Java_sun_awt_motif_MWindowPeer_pReshape;
-+		Java_sun_awt_motif_MWindowPeer_pSetTitle;
-+		Java_sun_awt_motif_MWindowPeer_pShow;
-+		Java_sun_awt_motif_MWindowPeer_setResizable;
-+		Java_sun_awt_motif_MWindowPeer_toBack;
-+		Java_sun_awt_motif_MWindowPeer_addTextComponentNative;
-+		Java_sun_awt_motif_MWindowPeer_getState;
-+		Java_sun_awt_motif_MWindowPeer_pSetIMMOption;
-+		Java_sun_awt_motif_MWindowPeer_pSetMenuBar;
-+		Java_sun_awt_motif_MWindowPeer_pShowModal;
-+		Java_sun_awt_motif_MWindowPeer_removeTextComponentNative;
-+		Java_sun_awt_motif_MWindowPeer_setSaveUnder;
-+		Java_sun_awt_motif_MWindowPeer_setState;
-+		Java_sun_awt_motif_MWindowPeer_resetTargetGC;
-+		Java_sun_awt_motif_MWindowPeer_registerX11DropTarget;
-+		Java_sun_awt_motif_MWindowPeer_unregisterX11DropTarget;
-+                Java_sun_awt_motif_MWindowPeer_updateAlwaysOnTop;
-+		Java_sun_awt_motif_X11CustomCursor_cacheInit;
-+		Java_sun_awt_motif_X11CustomCursor_createCursor;
-+		Java_sun_awt_motif_X11CustomCursor_queryBestCursor;
-+		Java_sun_awt_motif_X11FontMetrics_bytesWidth;
-+		Java_sun_awt_motif_X11FontMetrics_getMFCharsWidth;
-+		Java_sun_awt_motif_X11FontMetrics_init;
-+		Java_sun_awt_X11InputMethod_disposeXIC;
-+		Java_sun_awt_X11InputMethod_isCompositionEnabledNative;
-+		Java_sun_awt_X11InputMethod_resetXIC;
-+		Java_sun_awt_X11InputMethod_setCompositionEnabledNative;
-+		Java_sun_awt_X11InputMethod_turnoffStatusWindow;
-+		Java_sun_awt_motif_MInputMethod_openXIMNative;
-+		Java_sun_awt_motif_MInputMethod_configureStatusAreaNative;
-+		Java_sun_awt_motif_MInputMethod_createXICNative;
-+		Java_sun_awt_motif_MInputMethod_reconfigureXICNative;
-+		Java_sun_awt_motif_MInputMethod_setXICFocusNative;
-+		Java_sun_awt_motif_X11Clipboard_getClipboardData;
-+		Java_sun_awt_motif_X11Clipboard_getClipboardFormats;
-+		Java_sun_awt_motif_X11Clipboard_registerClipboardViewer;
-+		Java_sun_awt_motif_X11Clipboard_unregisterClipboardViewer;
-+		Java_sun_awt_motif_X11Selection_init;
-+		Java_sun_awt_motif_X11Selection_pGetSelectionOwnership;
-+		Java_sun_awt_motif_X11Selection_clearNativeContext;
-+		Java_sun_awt_SunToolkit_closeSplashScreen;
-+		Java_sun_awt_PlatformFont_initIDs;
-+		Java_sun_awt_X11GraphicsConfig_init;
-+		Java_sun_awt_X11GraphicsConfig_dispose;
-+		Java_sun_awt_X11GraphicsConfig_pGetBounds;
-+		Java_sun_awt_X11GraphicsConfig_getNumColors;
-+		Java_sun_awt_X11GraphicsConfig_getXResolution;
-+		Java_sun_awt_X11GraphicsConfig_getYResolution;
-+		Java_sun_awt_X11GraphicsDevice_isDBESupported;
-+		Java_sun_awt_X11GraphicsDevice_getDisplay;
-+		Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
-+		Java_sun_awt_X11GraphicsDevice_getNumConfigs;
-+		Java_sun_awt_X11GraphicsDevice_initIDs;
-+                Java_sun_awt_X11GraphicsDevice_initXrandrExtension;
-+                Java_sun_awt_X11GraphicsDevice_enterFullScreenExclusive;
-+                Java_sun_awt_X11GraphicsDevice_exitFullScreenExclusive;
-+                Java_sun_awt_X11GraphicsDevice_getCurrentDisplayMode;
-+                Java_sun_awt_X11GraphicsDevice_enumDisplayModes;
-+                Java_sun_awt_X11GraphicsDevice_configDisplayMode;
-+                Java_sun_awt_X11GraphicsDevice_resetNativeData;
-+		Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
-+		Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
-+		Java_sun_awt_X11GraphicsEnvironment_getDisplayString;
-+		Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
-+		Java_sun_awt_X11GraphicsEnvironment_initDisplay;
-+		Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
-+		Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
-+        
-+        
-+
-+		Java_java_awt_AWTEvent_initIDs;
-+		Java_java_awt_Button_initIDs;
-+		Java_java_awt_Container_initIDs;
-+		Java_java_awt_Cursor_finalizeImpl;
-+		Java_java_awt_Cursor_initIDs;
-+		Java_java_awt_Event_initIDs;
-+		Java_java_awt_event_InputEvent_initIDs;
-+		Java_java_awt_event_KeyEvent_initIDs;
-+		Java_java_awt_FileDialog_initIDs;
-+		Java_java_awt_Frame_initIDs;
-+		Java_java_awt_Insets_initIDs;
-+		Java_java_awt_TextField_initIDs;
-+		Java_java_awt_Window_initIDs;
-+		Java_sun_awt_motif_MCheckboxPeer_getIndicatorSize;
-+		Java_sun_awt_motif_MCheckboxPeer_getSpacing;
-+		Java_sun_awt_motif_MChoicePeer_freeNativeData;
-+		Java_sun_awt_motif_MComponentPeer_getComponents_1NoClientCode;
-+		Java_sun_awt_motif_MComponentPeer_getParent_1NoClientCode;
-+		Java_sun_awt_motif_MComponentPeer_initIDs;
-+		Java_sun_awt_motif_MComponentPeer_nativeHandleEvent;
-+		Java_sun_awt_motif_MComponentPeer_pSetCursor;
-+		Java_sun_awt_motif_MComponentPeer_pSetInnerForeground;
-+		Java_sun_awt_motif_MComponentPeer_pSetScrollbarBackground;
-+		Java_sun_awt_motif_MComponentPeer_setTargetBackground;
-+		Java_sun_awt_motif_MDataTransferer_dragQueryFile;
-+		Java_sun_awt_motif_MDataTransferer_getAtomForTarget;
-+		Java_sun_awt_motif_MDataTransferer_getTargetNameForAtom;
-+		Java_sun_awt_motif_MFileDialogPeer_insertReplaceFileDialogText;
-+		Java_sun_awt_motif_MFontPeer_initIDs;
-+		Java_sun_awt_motif_MListPeer_setBackground;
-+		Java_sun_awt_motif_MMenuBarPeer_initIDs;
-+		Java_sun_awt_motif_MMenuBarPeer_pDispose;
-+		Java_sun_awt_motif_MMenuItemPeer_getParent_1NoClientCode;
-+		Java_sun_awt_motif_MMenuItemPeer_initIDs;
-+		Java_sun_awt_motif_MMenuItemPeer_pSetShortcut;
-+		Java_sun_awt_motif_MPopupMenuPeer_initIDs;
-+		Java_sun_awt_motif_MScrollbarPeer_initIDs;
-+		Java_sun_awt_motif_MScrollPanePeer_initIDs;
-+		Java_sun_awt_motif_MTextAreaPeer_pSetCursor;
-+		Java_sun_awt_motif_MToolkit_shutdown;
-+		Java_sun_awt_motif_MWindowPeer_initIDs;
-+		Java_sun_awt_motif_MWindowPeer_pCreate;
-+		Java_sun_awt_motif_MWindowPeer_wrapInSequenced;
-+		Java_sun_awt_motif_X11FontMetrics_initIDs;
-+		Java_sun_awt_X11InputMethod_initIDs;
-+		Java_sun_awt_motif_X11OffScreenImage_updateBitmask;
-+		Java_sun_awt_motif_X11Selection_initIDs;
-+		Java_sun_awt_motif_MToolkitThreadBlockedHandler_enter;
-+		Java_sun_awt_motif_MToolkitThreadBlockedHandler_exit;
-+		Java_sun_awt_X11GraphicsConfig_init;
-+		Java_sun_awt_X11GraphicsConfig_initIDs;
-+		Java_sun_awt_X11GraphicsConfig_makeColorModel;
-+		Java_sun_awt_X11GraphicsDevice_getConfigVisualId;
-+		Java_sun_awt_X11PMBlitLoops_Blit;
-+		Java_sun_awt_X11PMBlitBgLoops_nativeBlitBg;
-+		Java_sun_awt_X11Renderer_devFillSpans;
-+		Java_sun_awt_X11Renderer_doDrawArc;
-+		Java_sun_awt_X11Renderer_doDrawLine;
-+		Java_sun_awt_X11Renderer_doDrawOval;
-+		Java_sun_awt_X11Renderer_doDrawPoly;
-+		Java_sun_awt_X11Renderer_doDrawRect;
-+		Java_sun_awt_X11Renderer_doDrawRoundRect;
-+		Java_sun_awt_X11Renderer_doFillArc;
-+		Java_sun_awt_X11Renderer_doFillOval;
-+		Java_sun_awt_X11Renderer_doFillPoly;
-+		Java_sun_awt_X11Renderer_doFillRect;
-+		Java_sun_awt_X11Renderer_doFillRoundRect;
-+		Java_sun_awt_X11Renderer_devCopyArea;
-+		Java_sun_awt_X11SurfaceData_initIDs;
-+		Java_sun_awt_X11SurfaceData_initOps;
-+		Java_sun_awt_X11SurfaceData_initSurface;
-+		Java_sun_awt_X11SurfaceData_isDgaAvailable;
-+		Java_sun_awt_X11SurfaceData_setInvalid;
-+		Java_sun_awt_X11SurfaceData_flushNativeSurface;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_initDispatching;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_endDispatching;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_embedChild;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_childDestroyed;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedPreferredSize;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_getEmbedMinimumSize;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_getClientBounds;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_notifyChildEmbedded;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_detachChild;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_forwardKeyEvent;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_getAWTKeyCodeForKeySym;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__I;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_sendMessage__IJJJ;
-+                Java_sun_awt_motif_MEmbedCanvasPeer_getWindow;       
-+                Java_sun_awt_motif_MEmbedCanvasPeer_forwardEventToEmbedded;       
-+                Java_sun_awt_motif_GrabbedKey_initKeySymAndModifiers;
-+                Java_sun_awt_motif_MEmbeddedFramePeer_traverseOut;
-+		awt_display;
-+		awt_lock;
-+		awt_Lock;
-+		awt_Unlock;
-+	        awt_GetDrawingSurface;
-+	        awt_FreeDrawingSurface;
-+	        awt_GetComponent;
-+
-+		X11SurfaceData_GetOps;
-+		getDefaultConfig;
-+                Java_sun_font_FontManager_getFontConfig;
-+                Java_sun_font_FontManager_getFontConfigAASettings;
-+		Java_sun_font_FontManager_getFontPath;
-+		Java_sun_font_FontManager_setNativeFontPath;
-+		Java_sun_font_FontManager_populateFontFileNameMap;
-+
-+		# CDE private entry point
-+		Java_sun_awt_motif_XsessionWMcommand;
-+
-+		# Java Plugin
-+		getAwtLockFunctions;
-+		getAwtData;
-+		getAwtDisplay;
-+		
-+		# libfontmanager entry points
-+		AWTIsHeadless;
-+		AWTCountFonts;
-+                AWTLoadFont;
-+                AWTFreeFont;
-+                AWTFontMinByte1;
-+                AWTFontMaxByte1;
-+                AWTFontMinCharOrByte2;
-+                AWTFontMaxCharOrByte2;
-+                AWTFontDefaultChar;
-+                AWTFontPerChar;
-+                AWTFontMaxBounds;
-+                AWTFontTextExtents16;
-+                AWTFreeChar;
-+                AWTFontGenerateImage;
-+                AWTCharAdvance;
-+                AWTCharLBearing;
-+                AWTCharRBearing;
-+                AWTCharAscent;
-+                AWTCharDescent;
-+                AWTDrawGlyphList;
-+
-+	local:
-+		*;
-+};
-+
 diff -Nru openjdk.orig/jdk/make/sun/awt/mawt.gmk openjdk/jdk/make/sun/awt/mawt.gmk
 --- openjdk.orig/jdk/make/sun/awt/mawt.gmk	2010-05-26 09:32:36.000000000 +0100
 +++ openjdk/jdk/make/sun/awt/mawt.gmk	2010-05-26 13:11:21.000000000 +0100
--- a/patches/icedtea-sparc-buildfixes.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/gcc.make.orig	2008-12-04 20:29:08.000000000 +0000
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2008-12-04 20:32:54.000000000 +0000
-@@ -52,6 +52,10 @@
- PICFLAG = -fpic
- endif
- 
-+ifneq ($(filter sparc sparcv9,$(BUILDARCH)),)
-+PICFLAG = -fPIC
-+endif
-+
- VM_PICFLAG/LIBJVM = $(PICFLAG)
- VM_PICFLAG/AOUT   =
- VM_PICFLAG        = $(VM_PICFLAG/$(LINK_INTO))
---- openjdk/hotspot/make/linux/makefiles/defs.make.orig	2008-12-04 20:29:04.000000000 +0000
-+++ openjdk/hotspot/make/linux/makefiles/defs.make	2008-12-04 20:32:54.000000000 +0000
-@@ -59,7 +59,7 @@
- endif
- 
- # sparc
--ifeq ($(ARCH), sparc64)
-+ifneq (,$(filter $(ARCH), sparc sparc64))
-   ifeq ($(ARCH_DATA_MODEL), 64)
-     ARCH_DATA_MODEL  = 64
-     MAKE_ARGS        += LP64=1
---- openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp.orig	2008-12-04 20:32:19.000000000 +0000
-+++ openjdk/hotspot/src/cpu/sparc/vm/frame_sparc.hpp	2008-12-04 20:32:54.000000000 +0000
-@@ -264,7 +264,7 @@
- 
-  private:
- 
--  constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const;
-+  constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const;
- 
- #ifndef CC_INTERP
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-stdc-limit-macros.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,12 @@
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+@@ -72,7 +72,9 @@
+ # endif
+
+ #ifdef LINUX
++#ifndef __STDC_LIMIT_MACROS
+ #define __STDC_LIMIT_MACROS
++#endif
+ #include <inttypes.h>
+ #include <signal.h>
+ #include <ucontext.h>
--- a/patches/icedtea-text-relocations.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/gcc.make openjdk/hotspot/make/linux/makefiles/gcc.make
---- openjdk.orig/hotspot/make/linux/makefiles/gcc.make	2008-07-17 08:40:27.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/gcc.make	2008-07-21 23:10:50.000000000 +0100
-@@ -46,7 +46,11 @@
- # Compiler flags
- 
- # position-independent code
-+ifneq ($(filter alpha parisc ppc ppc64 s390 s390x sparc sparc64 sparcv9,$(ZERO_LIBARCH)),)
- PICFLAG = -fPIC
-+else
-+PICFLAG = -fpic
-+endif
- 
- VM_PICFLAG/LIBJVM = $(PICFLAG)
- VM_PICFLAG/AOUT   =
---- rules.make.orig	2008-12-12 11:23:31.000000000 -0500
-+++ openjdk/hotspot/make/linux/makefiles/rules.make	2008-12-12 11:32:26.000000000 -0500
-@@ -138,20 +138,10 @@
- include $(GAMMADIR)/make/pic.make
- endif
- 
--# The non-PIC object files are only generated for 32 bit platforms.
--ifdef LP64
- %.o: %.cpp
- 	@echo Compiling $<
- 	$(QUIETLY) $(REMOVE_TARGET)
- 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
--else
--%.o: %.cpp
--	@echo Compiling $<
--	$(QUIETLY) $(REMOVE_TARGET)
--	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
--	   $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
--	   $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
--endif
- 
- %.o: %.s
- 	@echo Assembling $<
---- rules.make.orig	2008-12-12 11:42:55.000000000 -0500
-+++ openjdk/hotspot/make/solaris/makefiles/rules.make	2008-12-12 11:44:01.000000000 -0500
-@@ -138,20 +138,10 @@
- include $(GAMMADIR)/make/pic.make
- endif
- 
--# Sun compiler for 64 bit Solaris does not support building non-PIC object files.
--ifdef LP64
- %.o: %.cpp
- 	@echo Compiling $<
- 	$(QUIETLY) $(REMOVE_TARGET)
- 	$(QUIETLY) $(COMPILE.CC) -o $@ $< $(COMPILE_DONE)
--else
--%.o: %.cpp
--	@echo Compiling $<
--	$(QUIETLY) $(REMOVE_TARGET)
--	$(QUIETLY) $(if $(findstring $@, $(NONPIC_OBJ_FILES)), \
--         $(subst $(VM_PICFLAG), ,$(COMPILE.CC)) -o $@ $< $(COMPILE_DONE), \
--         $(COMPILE.CC) -o $@ $< $(COMPILE_DONE))
--endif
- 
- %.o: %.s
- 	@echo Assembling $<
--- a/patches/icedtea-too-many-args.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
---- openjdk/hotspot/make/linux/makefiles/sa.make.orig	2010-06-21 23:12:13.000000000 +0200
-+++ openjdk/hotspot/make/linux/makefiles/sa.make	2010-06-28 01:11:27.022322578 +0200
-@@ -45,6 +45,9 @@
- AGENT_FILES1 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES1))
- AGENT_FILES2 := $(shell /usr/bin/test -d $(AGENT_DIR) && /bin/ls $(AGENT_FILES2))
- 
-+AGENT_FILES1_LIST := $(TOPDIR)/../agent1.classes.list
-+AGENT_FILES2_LIST := $(TOPDIR)/../agent2.classes.list
-+
- SA_CLASSDIR = $(GENERATED)/saclasses
- 
- SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)"
-@@ -59,7 +62,7 @@
- 	   $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
- 	fi
- 
--$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2)
-+$(GENERATED)/sa-jdi.jar: $(AGENT_FILES1) $(AGENT_FILES2) agent_files_preclean
- 	$(QUIETLY) echo "Making $@"
- 	$(QUIETLY) if [ "$(BOOT_JAVA_HOME)" = "" ]; then \
- 	  echo "ALT_BOOTDIR, BOOTDIR or JAVA_HOME needs to be defined to build SA"; \
-@@ -74,8 +77,11 @@
- 	  mkdir -p $(SA_CLASSDIR);        \
- 	fi
- 
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES1)
--	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) $(AGENT_FILES2)
-+	$(foreach file,$(AGENT_FILES1),$(shell echo $(file) >> $(AGENT_FILES1_LIST)))
-+	$(foreach file,$(AGENT_FILES2),$(shell echo $(file) >> $(AGENT_FILES2_LIST)))
-+
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES1_LIST)
-+	$(QUIETLY) $(REMOTE) $(COMPILE.JAVAC) -source 1.4 -target 1.4 -classpath $(SA_CLASSPATH) -sourcepath $(AGENT_SRC_DIR) -d $(SA_CLASSDIR) @$(AGENT_FILES2_LIST)
- 
- 	$(QUIETLY) $(REMOTE) $(COMPILE.RMIC)  -classpath $(SA_CLASSDIR) -d $(SA_CLASSDIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer
- 	$(QUIETLY) echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES)
-@@ -92,6 +98,10 @@
- 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext
- 	$(QUIETLY) $(REMOTE) $(RUN.JAVAH) -classpath $(SA_CLASSDIR) -d $(GENERATED) -jni sun.jvm.hotspot.debugger.sparc.SPARCThreadContext
- 
-+agent_files_preclean:
-+	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
-+
- clean:
- 	rm -rf $(SA_CLASSDIR)
- 	rm -rf $(GENERATED)/sa-jdi.jar
-+	rm -rf $(AGENT_FILES1_LIST) $(AGENT_FILES2_LIST)
--- a/patches/jtreg-6929067-fix.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/jtreg-6929067-fix.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -45,7 +45,7 @@
 +gcc ${COMP_FLAG} -o invoke \
 +-L${TESTJAVA}/jre/lib/${ARCH}/client \
 +-L${TESTJAVA}/jre/lib/${ARCH}/server \
-+-ljvm -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c
++-ljvm -lpthread -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c
 +
  ./invoke
  exit $?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/jtreg-png-reader.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,976 @@
+diff -Nu old/AbstractImageProcessor.java PngReader/AbstractImageProcessor.java
+--- openjdk/jdk/test/javax/imageio/plugins/png/PngReader/AbstractImageProcessor.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-old/jdk/test/javax/imageio/plugins/png/PngReader/AbstractImageProcessor.java	2011-01-31 13:59:40.976990000 +0100
+@@ -0,0 +1,316 @@
++/*
++ * Copyright 2011 Red Hat, 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.
++ */
++
++
++import java.awt.image.BufferedImage;
++import java.awt.image.RenderedImage;
++import java.io.File;
++import java.io.IOException;
++import java.util.Arrays;
++import java.util.HashMap;
++import java.util.Map;
++
++import javax.imageio.IIOImage;
++import javax.imageio.ImageIO;
++import javax.imageio.ImageReader;
++import javax.imageio.stream.ImageInputStream;
++
++/**
++ * Abstract class containing only one visible method named run. This method
++ * tries to read all images from given directory and then check if no exception
++ * is thrown during image reading or if expected exception is really thrown.
++ * 
++ * This method also prints basic information for each image. Names of files
++ * containing images are based on schema proposed by Willem van Schaik, such
++ * files are included in PNGSUITE. For more information about the images
++ * please see file pngsuite.doc or look at page:
++ * http://www.schaik.com/pngsuite/pngsuite.html
++ * 
++ * @author Pavel Tisnovsky
++ */
++public class AbstractImageProcessor {
++
++    // maps used for decoding image attributes from file name
++    static final Map<String, String> testTypes = new HashMap<String, String>();
++    static final Map<String, String> colorTypes = new HashMap<String, String>();
++
++    static {
++        // Background tests
++        testTypes.put("bga", "alpha no");
++        testTypes.put("bgw", "alpha white");
++        testTypes.put("bgg", "alpha gray");
++        testTypes.put("bgb", "alpha black");
++        testTypes.put("bgy", "alpha yellow");
++
++        // Gamma tests
++        testTypes.put("g03", "0.35:2.8");
++        testTypes.put("g04", "0.45:2.2 (PC)");
++        testTypes.put("g05", "0.55:1.8 (Mac)");
++        testTypes.put("g07", "0.70:1.4");
++        testTypes.put("g10", "1.00:1.0 (NeXT)");
++        testTypes.put("g25", "2.50:0.4");
++
++        // Transparency tests
++        testTypes.put("tp0", "not transparent for reference");
++        testTypes.put("tp1", "transparent, but no background chunk");
++        testTypes.put("tbw", "transparent + white background");
++        testTypes.put("tbg", "transparent + gray background");
++        testTypes.put("tbb", "transparent + black background");
++        testTypes.put("tby", "transparent + yellow background");
++        testTypes.put("tbr", "transparent + red background");
++
++        // Filtering tests
++        testTypes.put("f00", "no");
++        testTypes.put("f01", "sub");
++        testTypes.put("f02", "up");
++        testTypes.put("f03", "average");
++        testTypes.put("f04", "paeth");
++
++        // Additional palette tests
++        testTypes.put("pp", "normal palette chunk");
++        testTypes.put("ps", "suggested palette chunk");
++
++        // Chunk ordering tests
++        testTypes.put("oi1", "mother image with 1 idat-chunk");
++        testTypes.put("oi2", "image with 2 idat-chunks");
++        testTypes.put("oi4", "image with 4 unequal sized idat-chunks");
++        testTypes.put("oi9", "all idat-chunks of length one");
++
++        // Auxiliary chunks tests
++        testTypes.put("cs3", "3 significant bits");
++        testTypes.put("cs5", "5 significant bits");
++        testTypes.put("cs8", "8 significant bits (reference)");
++        testTypes.put("cdf", "physical pixel dimensions, 8x32 flat pixels");
++        testTypes.put("cdh", "physical pixel dimensions, 32x8 high pixels");
++        testTypes.put("cds", "physical pixel dimensions, 8x8 square pixels");
++        testTypes.put("cdu", "physical pixel dimensions, with unit-specifier");
++        testTypes.put("ccw", "primary chromaticities and white point");
++        testTypes.put("ch1", "histogram 15 colors");
++        testTypes.put("ch2", "histogram 256 colors");
++        testTypes.put("cm7", "modification time, 01-jan-1970");
++        testTypes.put("cm9", "modification time, 31-dec-1999");
++        testTypes.put("cm0", "modification time, 01-jan-2000");
++        testTypes.put("ct0", "no textual data");
++        testTypes.put("ct1", "with textual data");
++        testTypes.put("ctz", "with compressed textual data");
++
++        // Corrupted images
++        testTypes.put("x00", "empty IDAT chunk");
++        testTypes.put("xcr", "added cr bytes");
++        testTypes.put("xlf", "added lf bytes");
++        testTypes.put("xc0", "color type 0");
++        testTypes.put("xc9", "color type 9");
++        testTypes.put("xd0", "bit-depth 0");
++        testTypes.put("xd3", "bit-depth 3");
++        testTypes.put("xd9", "bit-depth 99");
++        testTypes.put("xcs", "incorrect IDAT checksum");
++
++        // Color types
++        colorTypes.put("0g", "grayscale");
++        colorTypes.put("1g", "grayscale");
++        colorTypes.put("2c", "RGB color");
++        colorTypes.put("3p", "palette");
++        colorTypes.put("4a", "grayscale + alpha");
++        colorTypes.put("6a", "RGB color + alpha");
++    }
++
++    /**
++     * This method tries to read external file containing raster image using
++     * ImageReader. When the image file is corrupted or does not contains any
++     * data, exception is thrown.
++     *
++     * @param file path to image file
++     * @return RenderedImage extracted from given file
++     * @throws ImageReadException thrown in case image file is corrupted
++     */
++    protected RenderedImage readRenderedImage(File file) throws ImageReadException, Exception {
++        try {
++            ImageInputStream imageInputStream = ImageIO.createImageInputStream(file);
++            ImageReader imageReader = ImageIO.getImageReaders(imageInputStream).next();
++            imageReader.setInput(imageInputStream);
++            IIOImage image = imageReader.readAll(0, null);
++            return image.getRenderedImage();
++        }
++        catch (IOException e) {
++            //e.printStackTrace();
++            throw new ImageReadException(file.getName());
++        }
++    }
++
++    /**
++     * This method tries to read external file containing raster image using
++     * method ImageIO.read(). Because this method returns null if no registered
++     * ImageReader claims to be able to read the resulting stream, we need to
++     * cope with this.
++     * 
++     * @param file file path to image file
++     * @return BufferedImage extracted from given file
++     * @throws ImageReadException thrown in case image file is corrupted
++     */
++    protected BufferedImage readBufferedImage(File file) throws ImageReadException {
++        try {
++            BufferedImage bufferedImage = ImageIO.read(file);
++            // this is mandatory as we need to throw an exception when
++            // ImageIO.read() returns null!
++            if (bufferedImage == null) {
++                throw new ImageReadException(file.getName());
++            }
++            bufferedImage.toString();
++            return bufferedImage;
++        }
++        catch (IOException e) {
++            //e.printStackTrace();
++            throw new ImageReadException(file.getName());
++        }
++    }
++
++    /**
++     * This method extract various informations from name of image.
++     *
++     * @param fileName
++     * @return text containing basic info about image
++     */
++    private String getImageInfoFromFileName(String fileName) {
++        String testType = resolveTestType(fileName.substring(0, 3));
++        String interlaced = resolveInterlaced(fileName.charAt(3));
++        String colorType = fileName.substring(4, 6);
++        String bitDepth = fileName.substring(6, 8);
++        colorType = resolveColorType(fileName.substring(4, 6));
++        return String.format("test type:   %s\ninterlace:   %s\ncolor type:  %s\ncolor depth: %s",
++                testType, interlaced, colorType, bitDepth);
++    }
++
++    private String resolveTestType(String str) {
++        if ("bas".equals(str)) {
++            return "basic test";
++        }
++        switch (str.charAt(0)) {
++        case 'b':
++            return namedTestType("background", str, "background");
++        case 'c':
++            return namedTestType("auxiliary chunks", str);
++        case 'f':
++            return namedTestType("filtering", str, "filtering");
++        case 'g':
++            return gammaTest(str);
++        case 'o':
++            return namedTestType("chunk ordering", str);
++        case 'p':
++            return namedTestType("additional palette", str.substring(0, 2));
++        case 's':
++            return sizeTest(str);
++        case 't':
++            return namedTestType("transparency", str);
++        case 'x':
++            return namedTestType("corrupted image", str);
++        case 'z':
++            return compressionLevelTest(str);
++        default:
++            return "unknown " + str;
++        }
++    }
++
++    @SuppressWarnings("boxing")
++    private String sizeTest(String str) {
++        int size = Integer.parseInt(str.substring(1, 3));
++        String suffix = size > 1 ? "s" : "";
++        return String.format("size test for image of size %dx%s pixel%s", size, size, suffix);
++    }
++
++    private String namedTestType(String name, String str) {
++        return namedTestType(name, str, "");
++    }
++
++    private String namedTestType(String name, String str, String suffix) {
++        if (testTypes.containsKey(str)) {
++            return name + " test: " + testTypes.get(str) + " " + suffix;
++        }
++        return "unknown " + name + " test: " + str;
++    }
++
++    private String compressionLevelTest(String str) {
++        return "zlib test for compression level " + str.charAt(2);
++    }
++
++    private String gammaTest(String str) {
++        if (testTypes.containsKey(str)) {
++            String[] vals = testTypes.get(str).split(":");
++            return "gamma test: file-gamma = " + vals[0] + ", for display with gamma = " + vals[1];
++        }
++        return "unknown gamma test: " + str;
++    }
++
++    private String resolveColorType(String str) {
++        if (colorTypes.containsKey(str)) {
++            return colorTypes.get(str);
++        }
++        return "unknown! " + str;
++    }
++
++    private String resolveInterlaced(char ch) {
++        return ch == 'i' ? "interlaced" : "non-interlaced";
++    }
++
++    /**
++     * This method tries to read all images from given directory and then
++     * check if no exception is thrown (expectException==false) or if
++     * only expected exception is thrown (expectException==true).
++     *
++     * @param imageDirectoryName directory containing images
++     * @param expectException if IOException is expected to be thrown
++     *                        (ie the images are broken)
++     */
++    protected void run(String imageDirectoryName, boolean expectException) {
++        File imageDir = new File(System.getProperty("test.src", "."), imageDirectoryName);
++        String[] imageNames = imageDir.list();
++        Arrays.sort(imageNames);
++        int errors = 0;
++        for (String imageName : imageNames) {
++            File imageFile = new File(imageDir, imageName);
++            System.out.println("\nChecking image: " + imageFile.getAbsolutePath());
++            System.out.println(getImageInfoFromFileName(imageName));
++            try {
++                readBufferedImage(imageFile);
++                readRenderedImage(imageFile);
++                if (expectException) {
++                    errors++;
++                    System.out.println("Exception not thrown as expected!");
++                }
++            }
++            catch (ImageReadException e) {
++                if (!expectException) {
++                    errors++;
++                    System.out.println("Exception thrown where not expected!");
++                }
++                else {
++                    System.out.println("Exception thrown as expected");
++                }
++            }
++            catch (Exception e) {
++                errors++;
++                System.out.println("Unexpected exception! ");
++                e.printStackTrace();
++            }
++        }
++        if (errors > 0) {
++            throw new RuntimeException("Error processing " + errors + " images");
++        }
++    }
++
++}
+diff -Nu old/BrokenPngImageProcessor.java PngReader/BrokenPngImageProcessor.java
+--- openjdk/jdk/test/javax/imageio/plugins/png/PngReader/BrokenPngImageProcessor.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-old/jdk/test/javax/imageio/plugins/png/PngReader/BrokenPngImageProcessor.java	2011-01-31 13:59:40.976990000 +0100
+@@ -0,0 +1,36 @@
++/*
++ * Copyright 2011 Red Hat, 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.
++ */
++
++
++/**
++ * @test
++ * @summary This test checks if the ImageIO subsystem throws proper exception if
++ *          broken PNG image is to be read.
++ * 
++ * @author Pavel Tisnovsky
++ * 
++ */
++public class BrokenPngImageProcessor extends AbstractImageProcessor {
++    private static final String IMAGE_DIR = "broken_images";
++    private static final boolean EXPECT_EXCEPTION = true;
++
++    public static void main(String args[]) {
++        new BrokenPngImageProcessor().run(IMAGE_DIR, EXPECT_EXCEPTION);
++    }
++}
+diff -Nu old/GoodPngImageProcessor.java PngReader/GoodPngImageProcessor.java
+--- openjdk/jdk/test/javax/imageio/plugins/png/PngReader/GoodPngImageProcessor.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-old/jdk/test/javax/imageio/plugins/png/PngReader/GoodPngImageProcessor.java	2011-01-31 13:59:40.976990000 +0100
+@@ -0,0 +1,36 @@
++/*
++ * Copyright 2011 Red Hat, 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.
++ */
++
++
++/**
++ * @test
++ * @summary This test check if the ImageIO subsystem is able to process various
++ *          types of PNG images which are known to have valid format.
++ * 
++ * @author Pavel Tisnovsky
++ * 
++ */
++public class GoodPngImageProcessor extends AbstractImageProcessor {
++    private static final String IMAGE_DIR = "good_images";
++    private static final boolean EXPECT_EXCEPTION = false;
++
++    public static void main(String args[]) {
++        new GoodPngImageProcessor().run(IMAGE_DIR, EXPECT_EXCEPTION);
++    }
++}
+diff -Nu old/ImageReadException.java PngReader/ImageReadException.java
+--- openjdk/jdk/test/javax/imageio/plugins/png/PngReader/ImageReadException.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-old/jdk/test/javax/imageio/plugins/png/PngReader/ImageReadException.java	2011-01-31 13:59:40.976990000 +0100
+@@ -0,0 +1,48 @@
++/*
++ * Copyright 2011 Red Hat, 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.
++ */
++
++
++public class ImageReadException extends Exception {
++
++    private String fileName;
++
++    /**
++     * Generated serial version UID
++     */
++    private static final long serialVersionUID = 4418111891788280159L;
++
++    public ImageReadException(String fileName) {
++        this.setFileName(fileName);
++    }
++
++    /**
++     * @param fileName the fileName to set
++     */
++    public void setFileName(String fileName) {
++        this.fileName = fileName;
++    }
++
++    /**
++     * @return the fileName
++     */
++    public String getFileName() {
++        return this.fileName;
++    }
++
++}
+diff -Nu old/pngsuite.doc PngReader/pngsuite.doc
+--- openjdk/jdk/test/javax/imageio/plugins/png/PngReader/pngsuite.doc	1970-01-01 01:00:00.000000000 +0100
++++ openjdk-old/jdk/test/javax/imageio/plugins/png/PngReader/pngsuite.doc	2011-01-31 13:59:40.976990000 +0100
+@@ -0,0 +1,520 @@
++        PNGSUITE
++----------------
++
++        testset for PNG-(de)coders
++        created by Willem van Schaik
++------------------------------------
++
++This is a collection of graphics images created to test the png applications
++like viewers, converters and editors. All (as far as that is possible)
++formats supported by the PNG standard are represented.
++
++
++1.      INTRODUCTION
++--------------------
++
++1.1     PNG capabilities
++------------------------
++
++Supported color-types are:
++
++        -   grayscale
++        -   grayscale + alpha-channel
++        -   color palettes
++        -   rgb
++        -   rgb + alpha-channel
++
++Allowed bitdepths are depending on the color-type, but are in the range
++of 1-bit (grayscale, which is b&w) upto 16-bits.
++
++Special features are:
++
++        -   interlacing (Adam-7)
++        -   gamma-support
++        -   transparency (a poor-man's alpha solution)
++
++
++1.2     File naming
++-------------------
++
++Where possible, the testfiles are 32x32 bits icons. This results in a still
++reasonable size of the suite even with a large number of tests. The name
++of each test-file reflects thetype in the following way:
++
++        g04i2c08.png
++        || |||+---- bit-depth
++        || ||+----- color-type (descriptive)
++        || |+------ color-type (numerical)
++        || +------- interlaced or non-interlaced
++        |+--------- parameter of test (in this case gamma-value)
++        +---------- test feature (in this case gamma)
++
++
++1.3     PNG formats
++-------------------
++
++color-type:
++        0g          -   grayscale
++        2c          -   rgb color
++        3p          -   paletted
++        4a          -   grayscale + alpha channel
++        6a          -   rgb color + alpha channel
++
++bit-depth:
++        01          -   with color-type 0, 3
++        02          -   with color-type 0, 3
++        04          -   with color-type 0, 3
++        08          -   with color-type 0, 2, 3, 4, 6
++        16          -   with color-type 0, 2, 4, 6
++
++interlacing:
++        n           -   non-interlaced
++        i           -   interlaced
++
++
++2.      THE TESTS
++-----------------
++
++2.1     Sizes
++-------------
++
++These tests are there to check if your software handles pictures well, with
++picture sizes that are not a multiple of 8. This is particularly important
++with Adam-7 type interlacing. In the same way these tests check if pictures
++size 1x1 and similar are ok.
++
++        s01         -   1x1 pixel picture
++        s02         -   2x2 pixel picture
++        s03         -   3x3 pixel picture
++        s04         -   4x4 pixel picture
++        s05         -   5x5 pixel picture
++        s06         -   6x6 pixel picture
++        s07         -   7x7 pixel picture
++        s08         -   8x8 pixel picture
++        s09         -   9x9 pixel picture
++        s32         -   32x32 pixel picture
++        s33         -   33x33 pixel picture
++        s34         -   34x34 pixel picture
++        s35         -   35x35 pixel picture
++        s36         -   36x36 pixel picture
++        s37         -   37x37 pixel picture
++        s38         -   38x38 pixel picture
++        s39         -   39x39 pixel picture
++        s40         -   40x40 pixel picture
++
++
++2.2     Background
++------------------
++
++When the PNG file contains a background chunck, this should be used for
++pictures with alpha-channel or pictures with a transparency chunck. For
++pictures without this background-chunk, but with alpha, this testset
++assumes a black background.
++
++For the images in this test, the left-side should be 100% the background
++color, where moving to the right the color should gradually become the
++image pattern.
++
++        bga         -   alpha + no background
++        bgw         -   alpha + white background
++        bgg         -   alpha + gray background
++        bgb         -   alpha + black background
++        bgy         -   alpha + yellow background
++
++
++2.3     Transparency
++--------------------
++
++Transparency should be used together with a background chunk. To test the
++combination of the two the latter 4 tests are there. How to handle pictures
++with transparancy, but without a background, opinions can differ. Here we
++use black, but especially in the case of paletted images, the normal color
++would maybe even be better.
++
++        tp0         -   not transparent for reference
++        tp1         -   transparent, but no background chunk
++        tbw         -   transparent + white background
++        tbg         -   transparent + gray background
++        tbb         -   transparent + black background
++        tby         -   transparent + yellow background
++
++
++2.4     Gamma
++-------------
++
++To test if your viewer handles gamma-correction, 6 testfiles are available.
++They contain corrected color-ramps and a corresponding gamma-chunk with the
++file-gamma value. These are created in such a way that when the viewer does
++the gamma correction right, all 6 should be displayed identical.
++
++If they are different, probably the gamma correction is omitted. In that
++case, have a look at the two right coloumns in the 6 pictures. The image
++where those two look the same (when looked from far) reflects the gamma of
++your system. However, because of the limited size of the image, you should
++do more elaborate tests to determine your display gamma.
++
++        g03         -   file-gamma = 0.35, for display with gamma = 2.8
++        g04         -   file-gamma = 0.45, for display with gamma = 2.2 (PC)
++        g05         -   file-gamma = 0.55, for display with gamma = 1.8 (Mac)
++        g07         -   file-gamma = 0.70, for display with gamma = 1.4
++        g10         -   file-gamma = 1.00, for display with gamma = 1.0 (NeXT)
++        g25         -   file-gamma = 2.50, for display with gamma = 0.4
++
++
++2.5     Filtering
++-----------------
++
++PNG uses file-filtering, for optimal compression. Normally the type is of
++filtering is adjusted to the contents of the picture, but here each file
++has the same picture, with a different filtering.
++
++        f0          -   no filtering
++        f1          -   sub filtering
++        f2          -   up filtering
++        f3          -   average filtering
++        f4          -   paeth filtering
++
++
++2.6     Additional palettes
++---------------------------
++
++Besides the normal use of paletted images, palette chunks can in combination
++with true-color (and other) images also be used to select color lookup-tables
++when the video system is of limited capabilities. The suggested palette chunk
++is specially created for this purpose.
++
++        pp          -   normal palette chunk
++        ps          -   suggested palette chunk
++
++
++2.7     Ancillary chunks (under construction)
++------------------------
++
++To test the correct decoding of ancillary chunks, these test-files contain
++one or more examples of these chunkcs. Depending on the type of chunk, a
++number of typical values are selected to test. Unluckily, the testset can
++not contain all combinations, because that would be an endless set.
++
++The significant bits are used in files with the next higher bit-depth. They
++indicate howmany bits are valid.
++
++        cs3         -   3 significant bits
++        cs5         -   5 significant bits
++        cs8         -   8 significant bits (reference)
++        cs3         -   13 significant bits
++
++For the physical pixel dimensions, the result of each decoding should be
++a sqare picture. The first (cdf) image is an example of flat (horizontal)
++pixels, where the pHYS chunk (x is 1 per unit, y = 4 per unit) must take
++care of the correction. The second is just the other way round. The last
++example uses the unit specifier, for 1000 pixels per meter. This should
++result in a picture of 3.2 cm square.
++
++        cdf         -   physical pixel dimensions, 8x32 flat pixels
++        cdh         -   physical pixel dimensions, 32x8 high pixels
++        cds         -   physical pixel dimensions, 8x8 square pixels
++        cdu         -   physical pixel dimensions, with unit-specifier
++
++        ccw         -   primary chromaticities and white point
++
++        ch1         -   histogram 15 colors
++        ch2         -   histogram 256 colors
++
++        cm7         -   modification time, 01-jan-1970
++        cm9         -   modification time, 31-dec-1999
++        cm0         -   modification time, 01-jan-2000
++
++In the textual chunk, a number of the standard, and some non-standard
++text items are included.
++
++        ct0         -   no textual data
++        ct1         -   with textual data
++        ctz         -   with compressed textual data
++
++
++2.8     Chunk ordering (still under construction)
++----------------------
++
++These testfiles will test the obligatory ordering relations between various
++chunk types (not yet) as well as the number of data chunks used for the image.
++
++        oi1         -   mother image with 1 idat-chunk
++        oi2         -   image with 2 idat-chunks
++        oi4         -   image with 4 unequal sized idat-chunks
++        oi9         -   all idat-chunks of length one
++
++
++2.9     Compression level
++-------------------------
++
++Here you will find a set of images compressed by zlib, ranging from level 0 
++for no compression at maximum speed upto level 9 for maximum compression.
++
++        z00         -   zlib compression level 0 - none
++        z03         -   zlib compression level 3
++        z06         -   zlib compression level 6 - default
++        z09         -   zlib compression level 9 - maximum
++
++
++2.10     Corrupted files (under construction)
++-----------------------
++
++All these files are illegal. When decoding they should generate appropriate
++error-messages.
++
++        x00         -   empty IDAT chunk
++        xcr         -   added cr bytes
++        xlf         -   added lf bytes
++        xc0         -   color type 0
++        xc9         -   color type 9
++        xd0         -   bit-depth 0
++        xd3         -   bit-depth 3
++        xd9         -   bit-depth 99
++        xcs         -   incorrect IDAT checksum
++
++
++3.      TEST FILES
++------------------
++
++For each of the tests listed above, one or more test-files are created. A
++selection is made (for each test) for the color-type and bitdepth to be used
++for the tests. Further for a number of tests, both a non-interlaced as well
++as an interlaced version is available.
++
++
++3.1     Basic format test files (non-interlaced)
++------------------------------------------------
++
++        basn0g01    -   black & white
++        basn0g02    -   2 bit (4 level) grayscale
++        basn0g04    -   4 bit (16 level) grayscale
++        basn0g08    -   8 bit (256 level) grayscale
++        basn0g16    -   16 bit (64k level) grayscale
++        basn2c08    -   3x8 bits rgb color
++        basn2c16    -   3x16 bits rgb color
++        basn3p01    -   1 bit (2 color) paletted
++        basn3p02    -   2 bit (4 color) paletted
++        basn3p04    -   4 bit (16 color) paletted
++        basn3p08    -   8 bit (256 color) paletted
++        basn4a08    -   8 bit grayscale + 8 bit alpha-channel
++        basn4a16    -   16 bit grayscale + 16 bit alpha-channel
++        basn6a08    -   3x8 bits rgb color + 8 bit alpha-channel
++        basn6a16    -   3x16 bits rgb color + 16 bit alpha-channel
++
++
++3.2     Basic format test files (Adam-7 interlaced)
++---------------------------------------------------
++
++        basi0g01    -   black & white
++        basi0g02    -   2 bit (4 level) grayscale
++        basi0g04    -   4 bit (16 level) grayscale
++        basi0g08    -   8 bit (256 level) grayscale
++        basi0g16    -   16 bit (64k level) grayscale
++        basi2c08    -   3x8 bits rgb color
++        basi2c16    -   3x16 bits rgb color
++        basi3p01    -   1 bit (2 color) paletted
++        basi3p02    -   2 bit (4 color) paletted
++        basi3p04    -   4 bit (16 color) paletted
++        basi3p08    -   8 bit (256 color) paletted
++        basi4a08    -   8 bit grayscale + 8 bit alpha-channel
++        basi4a16    -   16 bit grayscale + 16 bit alpha-channel
++        basi6a08    -   3x8 bits rgb color + 8 bit alpha-channel
++        basi6a16    -   3x16 bits rgb color + 16 bit alpha-channel
++
++
++3.3     Sizes test files
++-----------------------
++
++        s01n3p01    -   1x1 paletted file, no interlacing
++        s02n3p01    -   2x2 paletted file, no interlacing
++        s03n3p01    -   3x3 paletted file, no interlacing
++        s04n3p01    -   4x4 paletted file, no interlacing
++        s05n3p02    -   5x5 paletted file, no interlacing
++        s06n3p02    -   6x6 paletted file, no interlacing
++        s07n3p02    -   7x7 paletted file, no interlacing
++        s08n3p02    -   8x8 paletted file, no interlacing
++        s09n3p02    -   9x9 paletted file, no interlacing
++        s32n3p04    -   32x32 paletted file, no interlacing
++        s33n3p04    -   33x33 paletted file, no interlacing
++        s34n3p04    -   34x34 paletted file, no interlacing
++        s35n3p04    -   35x35 paletted file, no interlacing
++        s36n3p04    -   36x36 paletted file, no interlacing
++        s37n3p04    -   37x37 paletted file, no interlacing
++        s38n3p04    -   38x38 paletted file, no interlacing
++        s39n3p04    -   39x39 paletted file, no interlacing
++        s40n3p04    -   40x40 paletted file, no interlacing
++
++        s01i3p01    -   1x1 paletted file, interlaced
++        s02i3p01    -   2x2 paletted file, interlaced
++        s03i3p01    -   3x3 paletted file, interlaced
++        s04i3p01    -   4x4 paletted file, interlaced
++        s05i3p02    -   5x5 paletted file, interlaced
++        s06i3p02    -   6x6 paletted file, interlaced
++        s07i3p02    -   7x7 paletted file, interlaced
++        s08i3p02    -   8x8 paletted file, interlaced
++        s09i3p02    -   9x9 paletted file, interlaced
++        s32i3p04    -   32x32 paletted file, interlaced
++        s33i3p04    -   33x33 paletted file, interlaced
++        s34i3p04    -   34x34 paletted file, interlaced
++        s35i3p04    -   35x35 paletted file, interlaced
++        s36i3p04    -   36x36 paletted file, interlaced
++        s37i3p04    -   37x37 paletted file, interlaced
++        s38i3p04    -   38x38 paletted file, interlaced
++        s39i3p04    -   39x39 paletted file, interlaced
++        s40i3p04    -   40x40 paletted file, interlaced
++
++
++3.4     Background test files (with alpha)
++------------------------------------------
++
++        bgai4a08    -   8 bit grayscale, alpha, no background chunk, interlaced
++        bgai4a16    -   16 bit grayscale, alpha, no background chunk, interlaced
++        bgan6a08    -   3x8 bits rgb color, alpha, no background chunk
++        bgan6a16    -   3x16 bits rgb color, alpha, no background chunk
++
++        bgbn4a08    -   8 bit grayscale, alpha, black background chunk
++        bggn4a16    -   16 bit grayscale, alpha, gray background chunk
++        bgwn6a08    -   3x8 bits rgb color, alpha, white background chunk
++        bgyn6a16    -   3x16 bits rgb color, alpha, yellow background chunk
++
++
++3.5     Transparency (and background) test files
++------------------------------------------------
++
++        tp0n1g08    -   not transparent for reference (logo on gray)
++        tbbn1g04    -   transparent, black background chunk
++        tbwn1g16    -   transparent, white background chunk
++        tp0n2c08    -   not transparent for reference (logo on gray)
++        tbrn2c08    -   transparent, red background chunk
++        tbgn2c16    -   transparent, green background chunk
++        tbbn2c16    -   transparent, blue background chunk
++        tp0n3p08    -   not transparent for reference (logo on gray)
++        tp1n3p08    -   transparent, but no background chunk
++        tbbn3p08    -   transparent, black background chunk
++        tbgn3p08    -   transparent, light-gray background chunk
++        tbwn3p08    -   transparent, white background chunk
++        tbyn3p08    -   transparent, yellow background chunk
++
++
++3.6     Gamma test files
++------------------------
++
++        g03n0g16    -   grayscale, file-gamma = 0.35
++        g04n0g16    -   grayscale, file-gamma = 0.45
++        g05n0g16    -   grayscale, file-gamma = 0.55
++        g07n0g16    -   grayscale, file-gamma = 0.70
++        g10n0g16    -   grayscale, file-gamma = 1.00
++        g25n0g16    -   grayscale, file-gamma = 2.50
++        g03n2c08    -   color, file-gamma = 0.35
++        g04n2c08    -   color, file-gamma = 0.45
++        g05n2c08    -   color, file-gamma = 0.55
++        g07n2c08    -   color, file-gamma = 0.70
++        g10n2c08    -   color, file-gamma = 1.00
++        g25n2c08    -   color, file-gamma = 2.50
++        g03n3p04    -   paletted, file-gamma = 0.35
++        g04n3p04    -   paletted, file-gamma = 0.45
++        g05n3p04    -   paletted, file-gamma = 0.55
++        g07n3p04    -   paletted, file-gamma = 0.70
++        g10n3p04    -   paletted, file-gamma = 1.00
++        g25n3p04    -   paletted, file-gamma = 2.50
++
++
++3.7     Filtering test files
++----------------------------
++
++        f00n0g08    -   grayscale, no interlacing, filter-type 0
++        f01n0g08    -   grayscale, no interlacing, filter-type 1
++        f02n0g08    -   grayscale, no interlacing, filter-type 2
++        f03n0g08    -   grayscale, no interlacing, filter-type 3
++        f04n0g08    -   grayscale, no interlacing, filter-type 4
++        f00n2c08    -   color, no interlacing, filter-type 0
++        f01n2c08    -   color, no interlacing, filter-type 1
++        f02n2c08    -   color, no interlacing, filter-type 2
++        f03n2c08    -   color, no interlacing, filter-type 3
++        f04n2c08    -   color, no interlacing, filter-type 4
++
++
++3.8     Additional palette chunk test files
++-------------------------------------------
++
++        pp0n2c16    -   six-cube palette-chunk in true-color image
++        pp0n6a08    -   six-cube palette-chunk in true-color+alpha image
++        ps1n0g08    -   six-cube suggested palette (1 byte) in grayscale image
++        ps1n2c16    -   six-cube suggested palette (1 byte) in true-color image
++        ps2n0g08    -   six-cube suggested palette (2 bytes) in grayscale image
++        ps2n2c16    -   six-cube suggested palette (2 bytes) in true-color image
++
++
++3.9     Ancillary chunks test files
++-----------------------------------
++
++        cs5n2c08    -   color, 5 significant bits
++        cs8n2c08    -   color, 8 significant bits (reference)
++        cs3n2c16    -   color, 13 significant bits
++        cs3n3p08    -   paletted, 3 significant bits
++        cs5n3p08    -   paletted, 5 significant bits
++        cs8n3p08    -   paletted, 8 significant bits (reference)
++
++        cdfn2c08    -   physical pixel dimensions, 8x32 flat pixels
++        cdhn2c08    -   physical pixel dimensions, 32x8 high pixels
++        cdsn2c08    -   physical pixel dimensions, 8x8 square pixels
++        cdun2c08    -   physical pixel dimensions, 1000 pixels per 1 meter
++
++        ccwn2c08    -   chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06
++        ccwn3p08    -   chroma chunk w:0.3127,0.3290 r:0.64,0.33 g:0.30,0.60 b:0.15,0.06
++
++        ch1n3p04    -   histogram 15 colors
++        ch2n3p08    -   histogram 256 colors
++
++        cm7n0g04    -   modification time, 01-jan-1970 00:00:00
++        cm9n0g04    -   modification time, 31-dec-1999 23:59:59
++        cm0n0g04    -   modification time, 01-jan-2000 12:34:56
++
++        ct0n0g04    -   no textual data
++        ct1n0g04    -   with textual data
++        ctzn0g04    -   with compressed textual data
++
++
++
++3.10    Chunk ordering
++----------------------
++
++        oi1n0g16    -   grayscale mother image with 1 idat-chunk
++        oi2n0g16    -   grayscale image with 2 idat-chunks
++        oi4n0g16    -   grayscale image with 4 unequal sized idat-chunks
++        oi9n0g16    -   grayscale image with all idat-chunks length one
++        oi1n2c16    -   color mother image with 1 idat-chunk
++        oi2n2c16    -   color image with 2 idat-chunks
++        oi4n2c16    -   color image with 4 unequal sized idat-chunks
++        oi9n2c16    -   color image with all idat-chunks length one
++
++
++
++3.11    Compression level
++-------------------------
++
++        z00n2c08    -   color, no interlacing, compression level 0 (none)
++        z03n2c08    -   color, no interlacing, compression level 3
++        z06n2c08    -   color, no interlacing, compression level 6 (default)
++        z09n2c08    -   color, no interlacing, compression level 9 (maximum)
++
++
++
++3.12     Currupted files
++-----------------------
++
++        x00n0g01    -   empty 0x0 grayscale file
++        xcrn0g04    -   added cr bytes
++        xlfn0g04    -   added lf bytes
++        xc0n0c08    -   color type 0
++        xc9n0c08    -   color type 9
++        xd0n2c00    -   bit-depth 0
++        xd3n2c03    -   bit-depth 3
++        xd9n2c99    -   bit-depth 99
++        xcsn2c08    -   incorrect IDAT checksum
++
++
++--------
++    (c) Willem van Schaik
++        willem@schaik.com
++        Singapore, October 1996
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/no-static-linking.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,44 @@
+diff -r f7afe7a5e086 make/common/shared/Compiler-gcc.gmk
+--- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	Fri Jan 21 16:21:28 2011 -0800
++++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	Thu Feb 03 11:34:13 2011 +0000
+@@ -61,7 +61,7 @@
+   CC             = $(COMPILER_PATH)gcc
+   CPP            = $(COMPILER_PATH)gcc -E
+   # statically link libstdc++ before C++ ABI is stablized on Linux
+-  STATIC_CXX     = true
++  STATIC_CXX     = false
+   ifeq ($(STATIC_CXX),true)
+     # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
+     # We need to use gcc to statically link the C++ runtime. gcc and g++ use
+diff -r 9797bcda6c12 make/linux/makefiles/vm.make
+--- openjdk.orig/hotspot/make/linux/makefiles/vm.make	Fri Jan 21 16:20:02 2011 -0800
++++ openjdk/hotspot/make/linux/makefiles/vm.make	Thu Feb 03 15:01:10 2011 +0000
+@@ -137,15 +137,7 @@
+ vm.def: $(Res_Files) $(Obj_Files)
+ 	sh $(GAMMADIR)/make/linux/makefiles/build_vm_def.sh *.o > $@
+ 
+-ifeq ($(SHARK_BUILD), true)
+-  STATIC_CXX = false
+-else
+-  ifeq ($(ZERO_LIBARCH), ppc64)
+-    STATIC_CXX = false
+-  else
+-    STATIC_CXX = true
+-  endif
+-endif
++STATIC_CXX = false
+ 
+ ifeq ($(LINK_INTO),AOUT)
+   LIBJVM.o                 =
+diff -r 05436b84e93a make/common/shared/Compiler-gcc.gmk
+--- openjdk.orig/corba/make/common/shared/Compiler-gcc.gmk	Sat Jan 16 01:04:04 2010 +0000
++++ openjdk/corba/make/common/shared/Compiler-gcc.gmk	Thu Feb 03 16:01:37 2011 +0000
+@@ -61,7 +61,7 @@
+   CC             = $(COMPILER_PATH)gcc
+   CPP            = $(COMPILER_PATH)gcc -E
+   # statically link libstdc++ before C++ ABI is stablized on Linux
+-  STATIC_CXX     = true
++  STATIC_CXX     = false
+   ifeq ($(STATIC_CXX),true)
+     # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++"
+     # We need to use gcc to statically link the C++ runtime. gcc and g++ use
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/4493128-CubicCurve2D.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,213 @@
+--- openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java.old	2011-01-31 12:38:24.340733697 -0500
++++ openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	2011-01-31 12:54:27.462601773 -0500
+@@ -1387,203 +1387,13 @@
+             return false;
+         }
+ 
+-        // Trivially accept if either endpoint is inside the rectangle
+-        // (not on its border since it may end there and not go inside)
+-        // Record where they lie with respect to the rectangle.
+-        //     -1 => left, 0 => inside, 1 => right
+-        double x1 = getX1();
+-        double y1 = getY1();
+-        int x1tag = getTag(x1, x, x+w);
+-        int y1tag = getTag(y1, y, y+h);
+-        if (x1tag == INSIDE && y1tag == INSIDE) {
+-            return true;
+-        }
+-        double x2 = getX2();
+-        double y2 = getY2();
+-        int x2tag = getTag(x2, x, x+w);
+-        int y2tag = getTag(y2, y, y+h);
+-        if (x2tag == INSIDE && y2tag == INSIDE) {
+-            return true;
+-        }
+-
+-        double ctrlx1 = getCtrlX1();
+-        double ctrly1 = getCtrlY1();
+-        double ctrlx2 = getCtrlX2();
+-        double ctrly2 = getCtrlY2();
+-        int ctrlx1tag = getTag(ctrlx1, x, x+w);
+-        int ctrly1tag = getTag(ctrly1, y, y+h);
+-        int ctrlx2tag = getTag(ctrlx2, x, x+w);
+-        int ctrly2tag = getTag(ctrly2, y, y+h);
+-
+-        // Trivially reject if all points are entirely to one side of
+-        // the rectangle.
+-        if (x1tag < INSIDE && x2tag < INSIDE &&
+-            ctrlx1tag < INSIDE && ctrlx2tag < INSIDE)
+-        {
+-            return false;       // All points left
+-        }
+-        if (y1tag < INSIDE && y2tag < INSIDE &&
+-            ctrly1tag < INSIDE && ctrly2tag < INSIDE)
+-        {
+-            return false;       // All points above
+-        }
+-        if (x1tag > INSIDE && x2tag > INSIDE &&
+-            ctrlx1tag > INSIDE && ctrlx2tag > INSIDE)
+-        {
+-            return false;       // All points right
+-        }
+-        if (y1tag > INSIDE && y2tag > INSIDE &&
+-            ctrly1tag > INSIDE && ctrly2tag > INSIDE)
+-        {
+-            return false;       // All points below
+-        }
+-
+-        // Test for endpoints on the edge where either the segment
+-        // or the curve is headed "inwards" from them
+-        // Note: These tests are a superset of the fast endpoint tests
+-        //       above and thus repeat those tests, but take more time
+-        //       and cover more cases
+-        if (inwards(x1tag, x2tag, ctrlx1tag) &&
+-            inwards(y1tag, y2tag, ctrly1tag))
+-        {
+-            // First endpoint on border with either edge moving inside
+-            return true;
+-        }
+-        if (inwards(x2tag, x1tag, ctrlx2tag) &&
+-            inwards(y2tag, y1tag, ctrly2tag))
+-        {
+-            // Second endpoint on border with either edge moving inside
+-            return true;
+-        }
+-
+-        // Trivially accept if endpoints span directly across the rectangle
+-        boolean xoverlap = (x1tag * x2tag <= 0);
+-        boolean yoverlap = (y1tag * y2tag <= 0);
+-        if (x1tag == INSIDE && x2tag == INSIDE && yoverlap) {
+-            return true;
+-        }
+-        if (y1tag == INSIDE && y2tag == INSIDE && xoverlap) {
+-            return true;
+-        }
+-
+-        // We now know that both endpoints are outside the rectangle
+-        // but the 4 points are not all on one side of the rectangle.
+-        // Therefore the curve cannot be contained inside the rectangle,
+-        // but the rectangle might be contained inside the curve, or
+-        // the curve might intersect the boundary of the rectangle.
+-
+-        double[] eqn = new double[4];
+-        double[] res = new double[4];
+-        if (!yoverlap) {
+-            // Both y coordinates for the closing segment are above or
+-            // below the rectangle which means that we can only intersect
+-            // if the curve crosses the top (or bottom) of the rectangle
+-            // in more than one place and if those crossing locations
+-            // span the horizontal range of the rectangle.
+-            fillEqn(eqn, (y1tag < INSIDE ? y : y+h), y1, ctrly1, ctrly2, y2);
+-            int num = solveCubic(eqn, res);
+-            num = evalCubic(res, num, true, true, null,
+-                            x1, ctrlx1, ctrlx2, x2);
+-            // odd counts imply the crossing was out of [0,1] bounds
+-            // otherwise there is no way for that part of the curve to
+-            // "return" to meet its endpoint
+-            return (num == 2 &&
+-                    getTag(res[0], x, x+w) * getTag(res[1], x, x+w) <= 0);
+-        }
+-
+-        // Y ranges overlap.  Now we examine the X ranges
+-        if (!xoverlap) {
+-            // Both x coordinates for the closing segment are left of
+-            // or right of the rectangle which means that we can only
+-            // intersect if the curve crosses the left (or right) edge
+-            // of the rectangle in more than one place and if those
+-            // crossing locations span the vertical range of the rectangle.
+-            fillEqn(eqn, (x1tag < INSIDE ? x : x+w), x1, ctrlx1, ctrlx2, x2);
+-            int num = solveCubic(eqn, res);
+-            num = evalCubic(res, num, true, true, null,
+-                            y1, ctrly1, ctrly2, y2);
+-            // odd counts imply the crossing was out of [0,1] bounds
+-            // otherwise there is no way for that part of the curve to
+-            // "return" to meet its endpoint
+-            return (num == 2 &&
+-                    getTag(res[0], y, y+h) * getTag(res[1], y, y+h) <= 0);
+-        }
+-
+-        // The X and Y ranges of the endpoints overlap the X and Y
+-        // ranges of the rectangle, now find out how the endpoint
+-        // line segment intersects the Y range of the rectangle
+-        double dx = x2 - x1;
+-        double dy = y2 - y1;
+-        double k = y2 * x1 - x2 * y1;
+-        int c1tag, c2tag;
+-        if (y1tag == INSIDE) {
+-            c1tag = x1tag;
+-        } else {
+-            c1tag = getTag((k + dx * (y1tag < INSIDE ? y : y+h)) / dy, x, x+w);
+-        }
+-        if (y2tag == INSIDE) {
+-            c2tag = x2tag;
+-        } else {
+-            c2tag = getTag((k + dx * (y2tag < INSIDE ? y : y+h)) / dy, x, x+w);
+-        }
+-        // If the part of the line segment that intersects the Y range
+-        // of the rectangle crosses it horizontally - trivially accept
+-        if (c1tag * c2tag <= 0) {
+-            return true;
+-        }
+-
+-        // Now we know that both the X and Y ranges intersect and that
+-        // the endpoint line segment does not directly cross the rectangle.
+-        //
+-        // We can almost treat this case like one of the cases above
+-        // where both endpoints are to one side, except that we may
+-        // get one or three intersections of the curve with the vertical
+-        // side of the rectangle.  This is because the endpoint segment
+-        // accounts for the other intersection in an even pairing.  Thus,
+-        // with the endpoint crossing we end up with 2 or 4 total crossings.
+-        //
+-        // (Remember there is overlap in both the X and Y ranges which
+-        //  means that the segment itself must cross at least one vertical
+-        //  edge of the rectangle - in particular, the "near vertical side"
+-        //  - leaving an odd number of intersections for the curve.)
+-        //
+-        // Now we calculate the y tags of all the intersections on the
+-        // "near vertical side" of the rectangle.  We will have one with
+-        // the endpoint segment, and one or three with the curve.  If
+-        // any pair of those vertical intersections overlap the Y range
+-        // of the rectangle, we have an intersection.  Otherwise, we don't.
+-
+-        // c1tag = vertical intersection class of the endpoint segment
+-        //
+-        // Choose the y tag of the endpoint that was not on the same
+-        // side of the rectangle as the subsegment calculated above.
+-        // Note that we can "steal" the existing Y tag of that endpoint
+-        // since it will be provably the same as the vertical intersection.
+-        c1tag = ((c1tag * x1tag <= 0) ? y1tag : y2tag);
+-
+-        // Now we have to calculate an array of solutions of the curve
+-        // with the "near vertical side" of the rectangle.  Then we
+-        // need to sort the tags and do a pairwise range test to see
+-        // if either of the pairs of crossings spans the Y range of
+-        // the rectangle.
+-        //
+-        // Note that the c2tag can still tell us which vertical edge
+-        // to test against.
+-        fillEqn(eqn, (c2tag < INSIDE ? x : x+w), x1, ctrlx1, ctrlx2, x2);
+-        int num = solveCubic(eqn, res);
+-        num = evalCubic(res, num, true, true, null, y1, ctrly1, ctrly2, y2);
+-
+-        // Now put all of the tags into a bucket and sort them.  There
+-        // is an intersection iff one of the pairs of tags "spans" the
+-        // Y range of the rectangle.
+-        int tags[] = new int[num+1];
+-        for (int i = 0; i < num; i++) {
+-            tags[i] = getTag(res[i], y, y+h);
+-        }
+-        tags[num] = c1tag;
+-        Arrays.sort(tags);
+-        return ((num >= 1 && tags[0] * tags[1] <= 0) ||
+-                (num >= 3 && tags[2] * tags[3] <= 0));
++        int numCrossings = rectCrossings(x, y, w, h);
++        // the intended return value is
++        // numCrossings != 0 || numCrossings == Curve.RECT_INTERSECTS
++        // but if (numCrossings != 0) numCrossings == INTERSECTS won't matter
++        // and if !(numCrossings != 0) then numCrossings == 0, so
++        // numCrossings != RECT_INTERSECT
++        return numCrossings != 0;
+     }
+ 
+     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/4645692-CubicCurve2D.solveCubic.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,717 @@
+diff -Nr --unified=3 ./openjdk.old/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java ./openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java
+--- ./openjdk.old/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	2011-02-01 10:52:21.560149275 -0500
++++ ./openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	2011-02-01 10:52:37.112148647 -0500
+@@ -31,6 +31,10 @@
+ import java.io.Serializable;
+ import sun.awt.geom.Curve;
+ 
++import static java.lang.Math.abs;
++import static java.lang.Math.max;
++import static java.lang.Math.ulp;
++
+ /**
+  * The <code>CubicCurve2D</code> class defines a cubic parametric curve
+  * segment in {@code (x,y)} coordinate space.
+@@ -1083,95 +1087,286 @@
+      * @since 1.3
+      */
+     public static int solveCubic(double eqn[], double res[]) {
+-        // From Numerical Recipes, 5.6, Quadratic and Cubic Equations
+-        double d = eqn[3];
+-        if (d == 0.0) {
+-            // The cubic has degenerated to quadratic (or line or ...).
++        // From Graphics Gems:
++        // http://tog.acm.org/resources/GraphicsGems/gems/Roots3And4.c
++        final double d = eqn[3];
++        if (d == 0) {
+             return QuadCurve2D.solveQuadratic(eqn, res);
+         }
+-        double a = eqn[2] / d;
+-        double b = eqn[1] / d;
+-        double c = eqn[0] / d;
+-        int roots = 0;
+-        double Q = (a * a - 3.0 * b) / 9.0;
+-        double R = (2.0 * a * a * a - 9.0 * a * b + 27.0 * c) / 54.0;
+-        double R2 = R * R;
+-        double Q3 = Q * Q * Q;
+-        a = a / 3.0;
+-        if (R2 < Q3) {
+-            double theta = Math.acos(R / Math.sqrt(Q3));
+-            Q = -2.0 * Math.sqrt(Q);
++
++        /* normal form: x^3 + Ax^2 + Bx + C = 0 */
++        final double A = eqn[2] / d;
++        final double B = eqn[1] / d;
++        final double C = eqn[0] / d;
++
++
++        //  substitute x = y - A/3 to eliminate quadratic term:
++        //     x^3 +Px + Q = 0
++        //
++        // Since we actually need P/3 and Q/2 for all of the
++        // calculations that follow, we will calculate
++        // p = P/3
++        // q = Q/2
++        // instead and use those values for simplicity of the code.
++        double sq_A = A * A;
++        double p = 1.0/3 * (-1.0/3 * sq_A + B);
++        double q = 1.0/2 * (2.0/27 * A * sq_A - 1.0/3 * A * B + C);
++
++        /* use Cardano's formula */
++
++        double cb_p = p * p * p;
++        double D = q * q + cb_p;
++
++        final double sub = 1.0/3 * A;
++
++        int num;
++        if (D < 0) { /* Casus irreducibilis: three real solutions */
++            // see: http://en.wikipedia.org/wiki/Cubic_function#Trigonometric_.28and_hyperbolic.29_method
++            double phi = 1.0/3 * Math.acos(-q / Math.sqrt(-cb_p));
++            double t = 2 * Math.sqrt(-p);
++
+             if (res == eqn) {
+-                // Copy the eqn so that we don't clobber it with the
+-                // roots.  This is needed so that fixRoots can do its
+-                // work with the original equation.
+-                eqn = new double[4];
+-                System.arraycopy(res, 0, eqn, 0, 4);
++                eqn = Arrays.copyOf(eqn, 4);
+             }
+-            res[roots++] = Q * Math.cos(theta / 3.0) - a;
+-            res[roots++] = Q * Math.cos((theta + Math.PI * 2.0)/ 3.0) - a;
+-            res[roots++] = Q * Math.cos((theta - Math.PI * 2.0)/ 3.0) - a;
+-            fixRoots(res, eqn);
+-        } else {
+-            boolean neg = (R < 0.0);
+-            double S = Math.sqrt(R2 - Q3);
+-            if (neg) {
+-                R = -R;
++
++            res[ 0 ] =  ( t * Math.cos(phi));
++            res[ 1 ] =  (-t * Math.cos(phi + Math.PI / 3));
++            res[ 2 ] =  (-t * Math.cos(phi - Math.PI / 3));
++            num = 3;
++
++            for (int i = 0; i < num; ++i) {
++                res[ i ] -= sub;
+             }
+-            double A = Math.pow(R + S, 1.0 / 3.0);
+-            if (!neg) {
+-                A = -A;
++
++        } else {
++            // Please see the comment in fixRoots marked 'XXX' before changing
++            // any of the code in this case.
++            double sqrt_D = Math.sqrt(D);
++            double u = Math.cbrt(sqrt_D - q);
++            double v = - Math.cbrt(sqrt_D + q);
++            double uv = u+v;
++
++            num = 1;
++
++            double err = 1200000000*ulp(abs(uv) + abs(sub));
++            if (iszero(D, err) || within(u, v, err)) {
++                if (res == eqn) {
++                    eqn = Arrays.copyOf(eqn, 4);
++                }
++                res[1] = -(uv / 2) - sub;
++                num = 2;
+             }
+-            double B = (A == 0.0) ? 0.0 : (Q / A);
+-            res[roots++] = (A + B) - a;
++            // this must be done after the potential Arrays.copyOf
++            res[ 0 ] =  uv - sub;
+         }
+-        return roots;
++
++        if (num > 1) { // num == 3 || num == 2
++            num = fixRoots(eqn, res, num);
++        }
++        if (num > 2 && (res[2] == res[1] || res[2] == res[0])) {
++            num--;
++        }
++        if (num > 1 && res[1] == res[0]) {
++            res[1] = res[--num]; // Copies res[2] to res[1] if needed
++        }
++        return num;
++    }
++
++    // preconditions: eqn != res && eqn[3] != 0 && num > 1
++    // This method tries to improve the accuracy of the roots of eqn (which
++    // should be in res). It also might eliminate roots in res if it decideds
++    // that they're not real roots. It will not check for roots that the
++    // computation of res might have missed, so this method should only be
++    // used when the roots in res have been computed using an algorithm
++    // that never underestimates the number of roots (such as solveCubic above)
++    private static int fixRoots(double[] eqn, double[] res, int num) {
++        double[] intervals = {eqn[1], 2*eqn[2], 3*eqn[3]};
++        int critCount = QuadCurve2D.solveQuadratic(intervals, intervals);
++        if (critCount == 2 && intervals[0] == intervals[1]) {
++            critCount--;
++        }
++        if (critCount == 2 && intervals[0] > intervals[1]) {
++            double tmp = intervals[0];
++            intervals[0] = intervals[1];
++            intervals[1] = tmp;
++        }
++
++        // below we use critCount to possibly filter out roots that shouldn't
++        // have been computed. We require that eqn[3] != 0, so eqn is a proper
++        // cubic, which means that its limits at -/+inf are -/+inf or +/-inf.
++        // Therefore, if critCount==2, the curve is shaped like a sideways S,
++        // and it could have 1-3 roots. If critCount==0 it is monotonic, and
++        // if critCount==1 it is monotonic with a single point where it is
++        // flat. In the last 2 cases there can only be 1 root. So in cases
++        // where num > 1 but critCount < 2, we eliminate all roots in res
++        // except one.
++
++        if (num == 3) {
++            double xe = getRootUpperBound(eqn);
++            double x0 = -xe;
++
++            Arrays.sort(res, 0, num);
++            if (critCount == 2) {
++                // this just tries to improve the accuracy of the computed
++                // roots using Newton's method.
++                res[0] = refineRootWithHint(eqn, x0, intervals[0], res[0]);
++                res[1] = refineRootWithHint(eqn, intervals[0], intervals[1], res[1]);
++                res[2] = refineRootWithHint(eqn, intervals[1], xe, res[2]);
++                return 3;
++            } else if (critCount == 1) {
++                // we only need fx0 and fxe for the sign of the polynomial
++                // at -inf and +inf respectively, so we don't need to do
++                // fx0 = solveEqn(eqn, 3, x0); fxe = solveEqn(eqn, 3, xe)
++                double fxe = eqn[3];
++                double fx0 = -fxe;
++
++                double x1 = intervals[0];
++                double fx1 = solveEqn(eqn, 3, x1);
++
++                // if critCount == 1 or critCount == 0, but num == 3 then
++                // something has gone wrong. This branch and the one below
++                // would ideally never execute, but if they do we can't know
++                // which of the computed roots is closest to the real root;
++                // therefore, we can't use refineRootWithHint. But even if
++                // we did know, being here most likely means that the
++                // curve is very flat close to two of the computed roots
++                // (or maybe even all three). This might make Newton's method
++                // fail altogether, which would be a pain to detect and fix.
++                // This is why we use a very stable bisection method.
++                if (oppositeSigns(fx0, fx1)) {
++                    res[0] = bisectRootWithHint(eqn, x0, x1, res[0]);
++                } else if (oppositeSigns(fx1, fxe)) {
++                    res[0] = bisectRootWithHint(eqn, x1, xe, res[2]);
++                } else /* fx1 must be 0 */ {
++                    res[0] = x1;
++                }
++                // return 1
++            } else if (critCount == 0) {
++                res[0] = bisectRootWithHint(eqn, x0, xe, res[1]);
++                // return 1
++            }
++        } else if (num == 2 && critCount == 2) {
++            // XXX: here we assume that res[0] has better accuracy than res[1].
++            // This is true because this method is only used from solveCubic
++            // which puts in res[0] the root that it would compute anyway even
++            // if num==1. If this method is ever used from any other method, or
++            // if the solveCubic implementation changes, this assumption should
++            // be reevaluated, and the choice of goodRoot might have to become
++            // goodRoot = (abs(eqn'(res[0])) > abs(eqn'(res[1]))) ? res[0] : res[1]
++            // where eqn' is the derivative of eqn.
++            double goodRoot = res[0];
++            double badRoot = res[1];
++            double x1 = intervals[0];
++            double x2 = intervals[1];
++            // If a cubic curve really has 2 roots, one of those roots must be
++            // at a critical point. That can't be goodRoot, so we compute x to
++            // be the farthest critical point from goodRoot. If there are two
++            // roots, x must be the second one, so we evaluate eqn at x, and if
++            // it is zero (or close enough) we put x in res[1] (or badRoot, if
++            // |solveEqn(eqn, 3, badRoot)| < |solveEqn(eqn, 3, x)| but this
++            // shouldn't happen often).
++            double x = abs(x1 - goodRoot) > abs(x2 - goodRoot) ? x1 : x2;
++            double fx = solveEqn(eqn, 3, x);
++
++            if (iszero(fx, 10000000*ulp(x))) {
++                double badRootVal = solveEqn(eqn, 3, badRoot);
++                res[1] = abs(badRootVal) < abs(fx) ? badRoot : x;
++                return 2;
++            }
++        } // else there can only be one root - goodRoot, and it is already in res[0]
++
++        return 1;
+     }
+ 
+-    /*
+-     * This pruning step is necessary since solveCubic uses the
+-     * cosine function to calculate the roots when there are 3
+-     * of them.  Since the cosine method can have an error of
+-     * +/- 1E-14 we need to make sure that we don't make any
+-     * bad decisions due to an error.
+-     *
+-     * If the root is not near one of the endpoints, then we will
+-     * only have a slight inaccuracy in calculating the x intercept
+-     * which will only cause a slightly wrong answer for some
+-     * points very close to the curve.  While the results in that
+-     * case are not as accurate as they could be, they are not
+-     * disastrously inaccurate either.
+-     *
+-     * On the other hand, if the error happens near one end of
+-     * the curve, then our processing to reject values outside
+-     * of the t=[0,1] range will fail and the results of that
+-     * failure will be disastrous since for an entire horizontal
+-     * range of test points, we will either overcount or undercount
+-     * the crossings and get a wrong answer for all of them, even
+-     * when they are clearly and obviously inside or outside the
+-     * curve.
+-     *
+-     * To work around this problem, we try a couple of Newton-Raphson
+-     * iterations to see if the true root is closer to the endpoint
+-     * or further away.  If it is further away, then we can stop
+-     * since we know we are on the right side of the endpoint.  If
+-     * we change direction, then either we are now being dragged away
+-     * from the endpoint in which case the first condition will cause
+-     * us to stop, or we have passed the endpoint and are headed back.
+-     * In the second case, we simply evaluate the slope at the
+-     * endpoint itself and place ourselves on the appropriate side
+-     * of it or on it depending on that result.
+-     */
+-    private static void fixRoots(double res[], double eqn[]) {
+-        final double EPSILON = 1E-5;
++    // use newton's method.
++    private static double refineRootWithHint(double[] eqn, double min, double max, double t) {
++        if (!inInterval(t, min, max)) {
++            return t;
++        }
++        double[] deriv = {eqn[1], 2*eqn[2], 3*eqn[3]};
++        double origt = t;
+         for (int i = 0; i < 3; i++) {
+-            double t = res[i];
+-            if (Math.abs(t) < EPSILON) {
+-                res[i] = findZero(t, 0, eqn);
+-            } else if (Math.abs(t - 1) < EPSILON) {
+-                res[i] = findZero(t, 1, eqn);
++            double slope = solveEqn(deriv, 2, t);
++            double y = solveEqn(eqn, 3, t);
++            double delta = - (y / slope);
++            double newt = t + delta;
++
++            if (slope == 0 || y == 0 || t == newt) {
++                break;
+             }
++
++            t = newt;
++        }
++        if (within(t, origt, 1000*ulp(origt)) && inInterval(t, min, max)) {
++            return t;
+         }
++        return origt;
++    }
++
++    private static double bisectRootWithHint(double[] eqn, double x0, double xe, double hint) {
++        double delta1 = Math.min(abs(hint - x0) / 64, 0.0625);
++        double delta2 = Math.min(abs(hint - xe) / 64, 0.0625);
++        double x02 = hint - delta1;
++        double xe2 = hint + delta2;
++        double fx02 = solveEqn(eqn, 3, x02);
++        double fxe2 = solveEqn(eqn, 3, xe2);
++        while (oppositeSigns(fx02, fxe2)) {
++            if (x02 >= xe2) {
++                return x02;
++            }
++            x0 = x02;
++            xe = xe2;
++            delta1 /= 64;
++            delta2 /= 64;
++            x02 = hint - delta1;
++            xe2 = hint + delta2;
++            fx02 = solveEqn(eqn, 3, x02);
++            fxe2 = solveEqn(eqn, 3, xe2);
++        }
++        if (fx02 == 0) {
++            return x02;
++        }
++        if (fxe2 == 0) {
++            return xe2;
++        }
++
++        return bisectRoot(eqn, x0, xe);
++    }
++
++    private static double bisectRoot(double[] eqn, double x0, double xe) {
++        double fx0 = solveEqn(eqn, 3, x0);
++        double m = x0 + (xe - x0) / 2;
++        while (m != x0 && m != xe) {
++            double fm = solveEqn(eqn, 3, m);
++            if (fm == 0) {
++                return m;
++            }
++            if (oppositeSigns(fx0, fm)) {
++                xe = m;
++            } else {
++                fx0 = fm;
++                x0 = m;
++            }
++            m = x0 + (xe-x0)/2;
++        }
++        return m;
++    }
++
++    private static boolean inInterval(double t, double min, double max) {
++        return min <= t && t <= max;
++    }
++
++    private static boolean within(double x, double y, double err) {
++        double d = y - x;
++        return (d <= err && d >= -err);
++    }
++
++    private static boolean iszero(double x, double err) {
++        return within(x, 0, err);
++    }
++
++    private static boolean oppositeSigns(double x1, double x2) {
++        return (x1 < 0 && x2 > 0) || (x1 > 0 && x2 < 0);
+     }
+ 
+     private static double solveEqn(double eqn[], int order, double t) {
+@@ -1182,60 +1377,26 @@
+         return v;
+     }
+ 
+-    private static double findZero(double t, double target, double eqn[]) {
+-        double slopeqn[] = {eqn[1], 2*eqn[2], 3*eqn[3]};
+-        double slope;
+-        double origdelta = 0;
+-        double origt = t;
+-        while (true) {
+-            slope = solveEqn(slopeqn, 2, t);
+-            if (slope == 0) {
+-                // At a local minima - must return
+-                return t;
+-            }
+-            double y = solveEqn(eqn, 3, t);
+-            if (y == 0) {
+-                // Found it! - return it
+-                return t;
+-            }
+-            // assert(slope != 0 && y != 0);
+-            double delta = - (y / slope);
+-            // assert(delta != 0);
+-            if (origdelta == 0) {
+-                origdelta = delta;
+-            }
+-            if (t < target) {
+-                if (delta < 0) return t;
+-            } else if (t > target) {
+-                if (delta > 0) return t;
+-            } else { /* t == target */
+-                return (delta > 0
+-                        ? (target + java.lang.Double.MIN_VALUE)
+-                        : (target - java.lang.Double.MIN_VALUE));
+-            }
+-            double newt = t + delta;
+-            if (t == newt) {
+-                // The deltas are so small that we aren't moving...
+-                return t;
+-            }
+-            if (delta * origdelta < 0) {
+-                // We have reversed our path.
+-                int tag = (origt < t
+-                           ? getTag(target, origt, t)
+-                           : getTag(target, t, origt));
+-                if (tag != INSIDE) {
+-                    // Local minima found away from target - return the middle
+-                    return (origt + t) / 2;
+-                }
+-                // Local minima somewhere near target - move to target
+-                // and let the slope determine the resulting t.
+-                t = target;
+-            } else {
+-                t = newt;
+-            }
+-        }
++    /*
++     * Computes M+1 where M is an upper bound for all the roots in of eqn.
++     * See: http://en.wikipedia.org/wiki/Sturm%27s_theorem#Applications.
++     * The above link doesn't contain a proof, but I [dlila] proved it myself
++     * so the result is reliable. The proof isn't difficult, but it's a bit
++     * long to include here.
++     * Precondition: eqn must represent a cubic polynomial
++     */
++    private static double getRootUpperBound(double[] eqn) {
++        double d = eqn[3];
++        double a = eqn[2];
++        double b = eqn[1];
++        double c = eqn[0];
++
++        double M = 1 + max(max(abs(a), abs(b)), abs(c)) / abs(d);
++        M += ulp(M) + 1;
++        return M;
+     }
+ 
++
+     /**
+      * {@inheritDoc}
+      * @since 1.2
+@@ -1273,110 +1434,6 @@
+         return contains(p.getX(), p.getY());
+     }
+ 
+-    /*
+-     * Fill an array with the coefficients of the parametric equation
+-     * in t, ready for solving against val with solveCubic.
+-     * We currently have:
+-     * <pre>
+-     *   val = P(t) = C1(1-t)^3 + 3CP1 t(1-t)^2 + 3CP2 t^2(1-t) + C2 t^3
+-     *              = C1 - 3C1t + 3C1t^2 - C1t^3 +
+-     *                3CP1t - 6CP1t^2 + 3CP1t^3 +
+-     *                3CP2t^2 - 3CP2t^3 +
+-     *                C2t^3
+-     *            0 = (C1 - val) +
+-     *                (3CP1 - 3C1) t +
+-     *                (3C1 - 6CP1 + 3CP2) t^2 +
+-     *                (C2 - 3CP2 + 3CP1 - C1) t^3
+-     *            0 = C + Bt + At^2 + Dt^3
+-     *     C = C1 - val
+-     *     B = 3*CP1 - 3*C1
+-     *     A = 3*CP2 - 6*CP1 + 3*C1
+-     *     D = C2 - 3*CP2 + 3*CP1 - C1
+-     * </pre>
+-     */
+-    private static void fillEqn(double eqn[], double val,
+-                                double c1, double cp1, double cp2, double c2) {
+-        eqn[0] = c1 - val;
+-        eqn[1] = (cp1 - c1) * 3.0;
+-        eqn[2] = (cp2 - cp1 - cp1 + c1) * 3.0;
+-        eqn[3] = c2 + (cp1 - cp2) * 3.0 - c1;
+-        return;
+-    }
+-
+-    /*
+-     * Evaluate the t values in the first num slots of the vals[] array
+-     * and place the evaluated values back into the same array.  Only
+-     * evaluate t values that are within the range <0, 1>, including
+-     * the 0 and 1 ends of the range iff the include0 or include1
+-     * booleans are true.  If an "inflection" equation is handed in,
+-     * then any points which represent a point of inflection for that
+-     * cubic equation are also ignored.
+-     */
+-    private static int evalCubic(double vals[], int num,
+-                                 boolean include0,
+-                                 boolean include1,
+-                                 double inflect[],
+-                                 double c1, double cp1,
+-                                 double cp2, double c2) {
+-        int j = 0;
+-        for (int i = 0; i < num; i++) {
+-            double t = vals[i];
+-            if ((include0 ? t >= 0 : t > 0) &&
+-                (include1 ? t <= 1 : t < 1) &&
+-                (inflect == null ||
+-                 inflect[1] + (2*inflect[2] + 3*inflect[3]*t)*t != 0))
+-            {
+-                double u = 1 - t;
+-                vals[j++] = c1*u*u*u + 3*cp1*t*u*u + 3*cp2*t*t*u + c2*t*t*t;
+-            }
+-        }
+-        return j;
+-    }
+-
+-    private static final int BELOW = -2;
+-    private static final int LOWEDGE = -1;
+-    private static final int INSIDE = 0;
+-    private static final int HIGHEDGE = 1;
+-    private static final int ABOVE = 2;
+-
+-    /*
+-     * Determine where coord lies with respect to the range from
+-     * low to high.  It is assumed that low <= high.  The return
+-     * value is one of the 5 values BELOW, LOWEDGE, INSIDE, HIGHEDGE,
+-     * or ABOVE.
+-     */
+-    private static int getTag(double coord, double low, double high) {
+-        if (coord <= low) {
+-            return (coord < low ? BELOW : LOWEDGE);
+-        }
+-        if (coord >= high) {
+-            return (coord > high ? ABOVE : HIGHEDGE);
+-        }
+-        return INSIDE;
+-    }
+-
+-    /*
+-     * Determine if the pttag represents a coordinate that is already
+-     * in its test range, or is on the border with either of the two
+-     * opttags representing another coordinate that is "towards the
+-     * inside" of that test range.  In other words, are either of the
+-     * two "opt" points "drawing the pt inward"?
+-     */
+-    private static boolean inwards(int pttag, int opt1tag, int opt2tag) {
+-        switch (pttag) {
+-        case BELOW:
+-        case ABOVE:
+-        default:
+-            return false;
+-        case LOWEDGE:
+-            return (opt1tag >= INSIDE || opt2tag >= INSIDE);
+-        case INSIDE:
+-            return true;
+-        case HIGHEDGE:
+-            return (opt1tag <= INSIDE || opt2tag <= INSIDE);
+-        }
+-    }
+-
+     /**
+      * {@inheritDoc}
+      * @since 1.2
+diff -Nr --unified=3 ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/ContainsTest.java ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/ContainsTest.java
+--- ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/ContainsTest.java	1969-12-31 19:00:00.000000000 -0500
++++ ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/ContainsTest.java	2011-02-01 10:54:07.105148995 -0500
+@@ -0,0 +1,46 @@
++/*
++ * Copyright (c) 2011, 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 4724552
++ * @summary Verifies that CubicCurve2D.contains(Rectangle2D) does not return
++ *          true when the rectangle is only partially contained.
++ * @run main ContainsTest
++ */
++
++
++import java.awt.geom.CubicCurve2D;
++import java.awt.geom.Rectangle2D;
++
++public class ContainsTest {
++
++    public static void main(String[] args) throws Exception {
++        CubicCurve2D c = new CubicCurve2D.Double(0, 0, 4, -4, -2, -4, 2, 0);
++        Rectangle2D r = new Rectangle2D.Double(0.75, -2.5, 0.5, 2);
++
++        if (c.contains(r)) {
++            throw new Exception("The rectangle should not be contained in the curve");
++        }
++    }
++}
+diff -Nr --unified=3 ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/IntersectsTest.java ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/IntersectsTest.java
+--- ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/IntersectsTest.java	1969-12-31 19:00:00.000000000 -0500
++++ ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/IntersectsTest.java	2011-02-01 10:54:07.105148995 -0500
+@@ -0,0 +1,48 @@
++/*
++ * Copyright (c) 2011, 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 4493128
++ * @summary Verifies that CubicCurve2D returns true for obvious intersection
++ * @run main IntersectsTest
++ */
++
++import java.awt.geom.CubicCurve2D;
++import java.awt.geom.Rectangle2D;
++
++public class IntersectsTest {
++
++    public static void main(String[] args) throws Exception {
++        CubicCurve2D c = new CubicCurve2D.Double(50.0, 300.0,
++                                                 150.0, 166.6666717529297,
++                                                 238.0, 456.66668701171875,
++                                                 350.0, 300.0);
++        Rectangle2D r = new Rectangle2D.Double(260, 300, 10, 10);
++
++        if (!c.intersects(r)) {
++            throw new Exception("The rectangle is contained. " +
++                                "intersects(Rectangle2D) should return true");
++        }
++    }
++}
+diff -Nr --unified=3 ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/SolveCubicTest.java ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/SolveCubicTest.java
+--- ./openjdk.old/jdk/test/java/awt/geom/CubicCurve2D/SolveCubicTest.java	1969-12-31 19:00:00.000000000 -0500
++++ ./openjdk/jdk/test/java/awt/geom/CubicCurve2D/SolveCubicTest.java	2011-02-01 10:54:07.105148995 -0500
+@@ -0,0 +1,43 @@
++/*
++ * Copyright (c) 2011, 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 4645692
++ * @summary Verifies that SolveCubic doesn't miss any roots.
++ * @run main SolveCubicTest
++ */
++
++import static java.awt.geom.CubicCurve2D.solveCubic;
++
++public class SolveCubicTest {
++
++    public static void main(String[] args) throws Exception {
++
++        double[] eqn = {0, 0, 1, 1};
++        int numRoots = solveCubic(eqn, eqn);
++        if (numRoots < 2) {
++            throw new Exception("There are 2 roots. Only " + numRoots + " were found.");
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/4724552-CubicCurve2D.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,48 @@
+--- openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java.old	2011-01-20 18:54:14.000000000 -0500
++++ openjdk/jdk/src/share/classes/java/awt/geom/CubicCurve2D.java	2011-01-31 12:38:24.340733697 -0500
+@@ -1602,20 +1602,32 @@
+         if (w <= 0 || h <= 0) {
+             return false;
+         }
+-        // Assertion: Cubic curves closed by connecting their
+-        // endpoints form either one or two convex halves with
+-        // the closing line segment as an edge of both sides.
+-        if (!(contains(x, y) &&
+-              contains(x + w, y) &&
+-              contains(x + w, y + h) &&
+-              contains(x, y + h))) {
+-            return false;
++
++        int numCrossings = rectCrossings(x, y, w, h);
++        return !(numCrossings == 0 || numCrossings == Curve.RECT_INTERSECTS);
++    }
++
++    private int rectCrossings(double x, double y, double w, double h) {
++        int crossings = 0;
++        if (!(getX1() == getX2() && getY1() == getY2())) {
++            crossings = Curve.rectCrossingsForLine(crossings,
++                                                   x, y,
++                                                   x+w, y+h,
++                                                   getX1(), getY1(),
++                                                   getX2(), getY2());
++            if (crossings == Curve.RECT_INTERSECTS) {
++                return crossings;
++            }
+         }
+-        // Either the rectangle is entirely inside one of the convex
+-        // halves or it crosses from one to the other, in which case
+-        // it must intersect the closing line segment.
+-        Rectangle2D rect = new Rectangle2D.Double(x, y, w, h);
+-        return !rect.intersectsLine(getX1(), getY1(), getX2(), getY2());
++        // we call this with the curve's direction reversed, because we wanted
++        // to call rectCrossingsForLine first, because it's cheaper.
++        return Curve.rectCrossingsForCubic(crossings,
++                                           x, y,
++                                           x+w, y+h,
++                                           getX2(), getY2(),
++                                           getCtrlX2(), getCtrlY2(),
++                                           getCtrlX1(), getCtrlY1(),
++                                           getX1(), getY1(), 0);
+     }
+ 
+     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/4993545-nativeinlightfixer.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,408 @@
+# HG changeset patch
+# User anthony
+# Date 1206000556 -10800
+# Node ID 8aafe588257f91d68436c0e13d98b6f4b27e2436
+# Parent  c267a33e76b0f76b200dbb592ec9671207ee2b5d
+4993545: NativeInLightFixer adds asynchronousity
+Summary: All the hooks related to the NativeInLightFixer have been moved to the HW/LW mixing handling methods. The NativeInLightFixer itself has been removed.
+Reviewed-by: son, alexp
+
+diff -r c267a33e76b0 -r 8aafe588257f src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	Mon Jan 10 20:08:48 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Thu Mar 20 11:09:16 2008 +0300
+@@ -6493,7 +6493,7 @@
+                 // will need some help.
+                 Container parent = this.parent;
+                 if (parent != null && parent.peer instanceof LightweightPeer) {
+-                    nativeInLightFixer = new NativeInLightFixer();
++                    relocateComponent();
+                 }
+             }
+             invalidate();
+@@ -6604,10 +6604,6 @@
+                 }
+             }
+ 
+-            if (nativeInLightFixer != null) {
+-                nativeInLightFixer.uninstall();
+-            }
+-
+             ComponentPeer p = peer;
+             if (p != null) {
+                 boolean isLightweight = isLightweight();
+@@ -8517,8 +8513,6 @@
+         setComponentOrientation(orientation);
+     }
+ 
+-    transient NativeInLightFixer nativeInLightFixer;
+-
+     /**
+      * Checks that this component meets the prerequesites to be focus owner:
+      * - it is enabled, visible, focusable
+@@ -8544,188 +8538,25 @@
+     }
+ 
+     /**
+-     * This odd class is to help out a native component that has been
+-     * embedded in a lightweight component.  Moving lightweight
+-     * components around and changing their visibility is not seen
+-     * by the native window system.  This is a feature for lightweights,
+-     * but a problem for native components that depend upon the
+-     * lightweights.  An instance of this class listens to the lightweight
+-     * parents of an associated native component (the outer class).
+-     *
+-     * @author  Timothy Prinzing
+-     */
+-    final class NativeInLightFixer implements ComponentListener, ContainerListener {
+-
+-        NativeInLightFixer() {
+-            lightParents = new Vector();
+-            install(parent);
+-        }
+-
+-        void install(Container parent) {
+-            lightParents.clear();
+-            Container p = parent;
+-            boolean isLwParentsVisible = true;
+-            // stash a reference to the components that are being observed so that
+-            // we can reliably remove ourself as a listener later.
+-            for (; p.peer instanceof LightweightPeer; p = p.parent) {
+-
+-                // register listeners and stash a reference
+-                p.addComponentListener(this);
+-                p.addContainerListener(this);
+-                lightParents.addElement(p);
+-                isLwParentsVisible &= p.isVisible();
+-            }
+-            // register with the native host (native parent of associated native)
+-            // to get notified if the top-level lightweight is removed.
+-            nativeHost = p;
+-            p.addContainerListener(this);
+-
+-            // kick start the fixup.  Since the event isn't looked at
+-            // we can simulate movement notification.
+-            componentMoved(null);
+-            if (!isLwParentsVisible) {
+-                synchronized (getTreeLock()) {
+-                    if (peer != null) {
+-                        peer.hide();
+-                    }
+-                }
+-            }
+-        }
+-
+-        void uninstall() {
+-            if (nativeHost != null) {
+-                removeReferences();
+-            }
+-        }
+-
+-        // --- ComponentListener -------------------------------------------
+-
+-        /**
+-         * Invoked when one of the lightweight parents has been resized.
+-         * This doesn't change the position of the native child so it
+-         * is ignored.
+-         */
+-        public void componentResized(ComponentEvent e) {
+-        }
+-
+-        /**
+-         * Invoked when one of the lightweight parents has been moved.
+-         * The native peer must be told of the new position which is
+-         * relative to the native container that is hosting the
+-         * lightweight components.
+-         */
+-        public void componentMoved(ComponentEvent e) {
+-            synchronized (getTreeLock()) {
+-                int nativeX = x;
+-                int nativeY = y;
+-                for(Component c = parent; (c != null) &&
+-                        (c.peer instanceof LightweightPeer);
+-                    c = c.parent) {
+-
+-                    nativeX += c.x;
+-                    nativeY += c.y;
+-                }
+-                if (peer != null) {
+-                    peer.setBounds(nativeX, nativeY, width, height,
+-                                   ComponentPeer.SET_LOCATION);
+-                }
+-            }
+-        }
+-
+-        /**
+-         * Invoked when a lightweight parent component has been
+-         * shown.  The associated native component must also be
+-         * shown if it hasn't had an overriding hide done on it.
+-         */
+-        public void componentShown(ComponentEvent e) {
+-            if (shouldShow()) {
+-                synchronized (getTreeLock()) {
+-                    if (peer != null) {
+-                        peer.show();
+-                    }
+-                }
+-            }
+-        }
+-
+-        /**
+-         * Invoked when one of the lightweight parents become visible.
+-         * Returns true if component and all its lightweight
+-         * parents are visible.
+-         */
+-        private boolean shouldShow() {
+-            boolean isLwParentsVisible = visible;
+-            for (int i = lightParents.size() - 1;
+-                 i >= 0 && isLwParentsVisible;
+-                 i--)
++     * Fix the location of the HW component in a LW container hierarchy.
++     */
++    final void relocateComponent() {
++        synchronized (getTreeLock()) {
++            if (peer == null) {
++                return;
++            }
++            int nativeX = x;
++            int nativeY = y;
++            for (Component cont = getContainer();
++                    cont != null && cont.isLightweight();
++                    cont = cont.getContainer())
+             {
+-                isLwParentsVisible &=
+-                    ((Container) lightParents.elementAt(i)).isVisible();
+-            }
+-            return isLwParentsVisible;
+-        }
+-
+-        /**
+-         * Invoked when component has been hidden.
+-         */
+-        public void componentHidden(ComponentEvent e) {
+-            if (visible) {
+-                synchronized (getTreeLock()) {
+-                    if (peer != null) {
+-                        peer.hide();
+-                    }
+-                }
+-            }
+-        }
+-
+-        // --- ContainerListener ------------------------------------
+-
+-        /**
+-         * Invoked when a component has been added to a lightweight
+-         * parent.  This doesn't effect the native component.
+-         */
+-        public void componentAdded(ContainerEvent e) {
+-        }
+-
+-        /**
+-         * Invoked when a lightweight parent has been removed.
+-         * This means the services of this listener are no longer
+-         * required and it should remove all references (ie
+-         * registered listeners).
+-         */
+-        public void componentRemoved(ContainerEvent e) {
+-            Component c = e.getChild();
+-            if (c == Component.this) {
+-                removeReferences();
+-            } else {
+-                int n = lightParents.size();
+-                for (int i = 0; i < n; i++) {
+-                    Container p = (Container) lightParents.elementAt(i);
+-                    if (p == c) {
+-                        removeReferences();
+-                        break;
+-                    }
+-                }
+-            }
+-        }
+-
+-        /**
+-         * Removes references to this object so it can be
+-         * garbage collected.
+-         */
+-        void removeReferences() {
+-            int n = lightParents.size();
+-            for (int i = 0; i < n; i++) {
+-                Container c = (Container) lightParents.elementAt(i);
+-                c.removeComponentListener(this);
+-                c.removeContainerListener(this);
+-            }
+-            nativeHost.removeContainerListener(this);
+-            lightParents.clear();
+-            nativeHost = null;
+-        }
+-
+-        Vector lightParents;
+-        Container nativeHost;
++                nativeX += cont.x;
++                nativeY += cont.y;
++            }
++            peer.setBounds(nativeX, nativeY, width, height,
++                    ComponentPeer.SET_LOCATION);
++        }
+     }
+ 
+     /**
+diff -r c267a33e76b0 -r 8aafe588257f src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	Mon Jan 10 20:08:48 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	Thu Mar 20 11:09:16 2008 +0300
+@@ -828,16 +828,8 @@
+                 }
+                 if (!comp.isLightweight() && isLightweight()) {
+                     // If component is heavyweight and one of the containers is lightweight
+-                    // some NativeInLightFixer activity should be performed
+-                    if (!curParent.isLightweight()) {
+-                        // Moving from heavyweight container to lightweight container - should create NativeInLightFixer
+-                        // since addNotify does this
+-                        comp.nativeInLightFixer = new NativeInLightFixer();
+-                    } else {
+-                        // Component already has NativeInLightFixer - just reinstall it
+-                        // because hierarchy changed and he needs to rebuild list of parents to listen.
+-                        comp.nativeInLightFixer.install(this);
+-                    }
++                    // the location of the component should be fixed.
++                    comp.relocateComponent();
+                 }
+             }
+         }
+@@ -3946,6 +3938,83 @@
+         }
+     }
+ 
++    private void recursiveShowHeavyweightChildren() {
++        if (!hasHeavyweightDescendants() || !isVisible()) {
++            return;
++        }
++        for (int index = 0; index < getComponentCount(); index++) {
++            Component comp = getComponent(index);
++            if (comp.isLightweight()) {
++                if  (comp instanceof Container) {
++                    ((Container)comp).recursiveShowHeavyweightChildren();
++                }
++            } else {
++                if (comp.isVisible()) {
++                    ComponentPeer peer = comp.getPeer();
++                    if (peer != null) {
++                        peer.show();
++                    }
++                }
++            }
++        }
++    }
++
++    private void recursiveHideHeavyweightChildren() {
++        if (!hasHeavyweightDescendants()) {
++            return;
++        }
++        for (int index = 0; index < getComponentCount(); index++) {
++            Component comp = getComponent(index);
++            if (comp.isLightweight()) {
++                if  (comp instanceof Container) {
++                    ((Container)comp).recursiveHideHeavyweightChildren();
++                }
++            } else {
++                if (comp.isVisible()) {
++                    ComponentPeer peer = comp.getPeer();
++                    if (peer != null) {
++                        peer.hide();
++                    }
++                }
++            }
++        }
++    }
++
++    private void recursiveRelocateHeavyweightChildren(Point origin) {
++        for (int index = 0; index < getComponentCount(); index++) {
++            Component comp = getComponent(index);
++            if (comp.isLightweight()) {
++                if  (comp instanceof Container &&
++                        ((Container)comp).hasHeavyweightDescendants())
++                {
++                    final Point newOrigin = new Point(origin);
++                    newOrigin.translate(comp.getX(), comp.getY());
++                    ((Container)comp).recursiveRelocateHeavyweightChildren(newOrigin);
++                }
++            } else {
++                ComponentPeer peer = comp.getPeer();
++                if (peer != null) {
++                    peer.setBounds(origin.x + comp.getX(), origin.y + comp.getY(),
++                            comp.getWidth(), comp.getHeight(),
++                            ComponentPeer.SET_LOCATION);
++                }
++            }
++        }
++    }
++
++    /*
++     * Consider the heavyweight container hides or shows the HW descendants
++     * automatically. Therefore we care of LW containers' visibility only.
++     */
++    private boolean isRecursivelyVisibleUpToHeavyweightContainer() {
++        if (!isLightweight()) {
++            return true;
++        }
++        return isVisible() && (getContainer() == null ||
++             getContainer().isRecursivelyVisibleUpToHeavyweightContainer());
++    }
++
++    @Override
+     void mixOnShowing() {
+         synchronized (getTreeLock()) {
+             if (mixingLog.isLoggable(Level.FINE)) {
+@@ -3954,6 +4023,10 @@
+ 
+             boolean isLightweight = isLightweight();
+ 
++            if (isLightweight && isRecursivelyVisibleUpToHeavyweightContainer()) {
++                recursiveShowHeavyweightChildren();
++            }
++
+             if (!isLightweight || (isLightweight && hasHeavyweightDescendants())) {
+                 recursiveApplyCurrentShape();
+             }
+@@ -3962,6 +4035,42 @@
+         }
+     }
+ 
++    @Override
++    void mixOnHiding(boolean isLightweight) {
++        synchronized (getTreeLock()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this +
++                        "; isLightweight=" + isLightweight);
++            }
++            if (isLightweight) {
++                recursiveHideHeavyweightChildren();
++            }
++            super.mixOnHiding(isLightweight);
++        }
++    }
++
++    @Override
++    void mixOnReshaping() {
++        synchronized (getTreeLock()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this);
++            }
++            if (isLightweight() && hasHeavyweightDescendants()) {
++                final Point origin = new Point(getX(), getY());
++                for (Container cont = getContainer();
++                        cont != null && cont.isLightweight();
++                        cont = cont.getContainer())
++                {
++                    origin.translate(cont.getX(), cont.getY());
++                }
++
++                recursiveRelocateHeavyweightChildren(origin);
++            }
++            super.mixOnReshaping();
++        }
++    }
++
++    @Override
+     void mixOnZOrderChanging(int oldZorder, int newZorder) {
+         synchronized (getTreeLock()) {
+             if (mixingLog.isLoggable(Level.FINE)) {
--- a/patches/openjdk/6307603-xrender-01.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/openjdk/6307603-xrender-01.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -1,7 +1,7 @@
 diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers openjdk/jdk/make/sun/awt/mapfile-mawt-vers
---- openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	2010-08-03 23:17:50.464917097 +0100
-@@ -311,6 +311,7 @@
+--- openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	2011-02-17 16:52:48.186147394 +0000
+@@ -312,6 +312,7 @@
                  Java_sun_awt_X11GraphicsEnvironment_initGLX;
  		Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
  		Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
@@ -9,7 +9,7 @@
                  #Java_sun_awt_motif_MEmbedCanvasPeer_initXEmbedServer;
                  #Java_sun_awt_motif_MEmbedCanvasPeer_destroyXEmbedServer;
                  #Java_sun_awt_motif_MEmbedCanvasPeer_isXEmbedActive;
-@@ -405,17 +406,52 @@
+@@ -406,17 +407,52 @@
  		Java_sun_java2d_x11_X11SurfaceData_initIDs;
  		Java_sun_java2d_x11_X11SurfaceData_initOps;
  		Java_sun_java2d_x11_X11SurfaceData_initSurface;
@@ -70,9 +70,9 @@
                  Java_sun_java2d_opengl_OGLContext_getOGLIdString;
                  Java_sun_java2d_opengl_OGLMaskFill_maskFill;
 diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux openjdk/jdk/make/sun/awt/mapfile-vers-linux
---- openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/make/sun/awt/mapfile-vers-linux	2010-08-03 23:17:50.464917097 +0100
-@@ -425,6 +425,7 @@
+--- openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-vers-linux	2011-02-17 16:52:48.186147394 +0000
+@@ -426,6 +426,7 @@
  		Java_sun_awt_X11GraphicsEnvironment_initDisplay;
  		Java_sun_awt_X11GraphicsEnvironment_pRunningXinerama;
  		Java_sun_awt_X11GraphicsEnvironment_getXineramaCenterPoint;
@@ -81,8 +81,8 @@
          
  
 diff -Nru openjdk.orig/jdk/make/sun/headless/mapfile-vers openjdk/jdk/make/sun/headless/mapfile-vers
---- openjdk.orig/jdk/make/sun/headless/mapfile-vers	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/make/sun/headless/mapfile-vers	2010-08-03 23:17:50.476916584 +0100
+--- openjdk.orig/jdk/make/sun/headless/mapfile-vers	2011-02-17 16:00:33.000000000 +0000
++++ openjdk/jdk/make/sun/headless/mapfile-vers	2011-02-17 16:52:48.186147394 +0000
 @@ -46,17 +46,20 @@
  		Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
  		Java_sun_java2d_x11_X11Renderer_devCopyArea;
@@ -111,8 +111,8 @@
  		Java_java_awt_Font_initIDs;
                  Java_sun_font_FontManager_getFontConfig;
 diff -Nru openjdk.orig/jdk/make/sun/jawt/Makefile openjdk/jdk/make/sun/jawt/Makefile
---- openjdk.orig/jdk/make/sun/jawt/Makefile	2010-08-03 23:14:58.000000000 +0100
-+++ openjdk/jdk/make/sun/jawt/Makefile	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/make/sun/jawt/Makefile	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/jawt/Makefile	2011-02-17 16:52:48.198146458 +0000
 @@ -118,7 +118,7 @@
  # Libraries to link in.
  #
@@ -123,20 +123,20 @@
  
  ifeq ($(PLATFORM), linux)
 diff -Nru openjdk.orig/jdk/make/sun/xawt/FILES_c_unix.gmk openjdk/jdk/make/sun/xawt/FILES_c_unix.gmk
---- openjdk.orig/jdk/make/sun/xawt/FILES_c_unix.gmk	2010-06-21 22:15:09.000000000 +0100
-+++ openjdk/jdk/make/sun/xawt/FILES_c_unix.gmk	2010-08-03 23:17:50.480916320 +0100
-@@ -78,4 +78,7 @@
- 	awt_Plugin.c \
+--- openjdk.orig/jdk/make/sun/xawt/FILES_c_unix.gmk	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/FILES_c_unix.gmk	2011-02-17 16:53:14.908062495 +0000
+@@ -79,4 +79,7 @@
  	gtk2_interface.c \
          swing_GTKEngine.c \
--        swing_GTKStyle.c
-+        swing_GTKStyle.c \
+         swing_GTKStyle.c \
+-        rect.c
++        rect.c \
 +	XRSurfaceData.c \
 +	XRBackendNative.c
 +
 diff -Nru openjdk.orig/jdk/make/sun/xawt/Makefile openjdk/jdk/make/sun/xawt/Makefile
---- openjdk.orig/jdk/make/sun/xawt/Makefile	2010-06-21 22:15:09.000000000 +0100
-+++ openjdk/jdk/make/sun/xawt/Makefile	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/make/sun/xawt/Makefile	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/Makefile	2011-02-17 16:52:48.198146458 +0000
 @@ -48,6 +48,11 @@
  
  LDFLAGS += -L$(OPENWIN_LIB)
@@ -149,7 +149,7 @@
  ifeq ($(PLATFORM), linux)
  LDFLAGS += -lpthread
  dummy := $(shell $(MKDIR) -p $(LIB_LOCATION))
-@@ -86,7 +91,7 @@
+@@ -87,7 +92,7 @@
  vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/opengl
  vpath %.c   $(PLATFORM_SRC)/native/sun/java2d/x11
  
@@ -158,7 +158,7 @@
                     $(LDFLAGS_COMMON) $(AWT_RUNPATH) $(OTHER_LDFLAGS) -lXtst -lXi
  
  ifeq  ($(PLATFORM), solaris)
-@@ -120,7 +125,7 @@
+@@ -121,7 +126,7 @@
  	-I$(PLATFORM_SRC)/native/sun/awt/medialib \
          -I$(PLATFORM_SRC)/native/sun/font \
          -I$(SHARE_SRC)/native/sun/awt \
@@ -168,9 +168,9 @@
  ifeq ($(PLATFORM), linux)
  # Allows for builds on Debian GNU Linux, X11 is in a different place 
 diff -Nru openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
---- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/make/sun/xawt/mapfile-vers	2010-08-03 23:17:50.480916320 +0100
-@@ -184,6 +184,7 @@
+--- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2011-02-17 16:00:41.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	2011-02-17 16:52:48.198146458 +0000
+@@ -186,6 +186,7 @@
  	Java_sun_font_FontManager_populateFontFileNameMap;
          Java_sun_awt_X11GraphicsEnvironment_initDisplay;
          Java_sun_awt_X11GraphicsEnvironment_initGLX;
@@ -178,7 +178,7 @@
          Java_sun_awt_X11GraphicsEnvironment_checkShmExt;
          Java_sun_awt_X11GraphicsEnvironment_getNumScreens;
          Java_sun_awt_X11GraphicsEnvironment_getDefaultScreenNum;
-@@ -332,20 +333,51 @@
+@@ -337,20 +338,51 @@
  	Java_sun_java2d_x11_X11Renderer_XFillRect;
  	Java_sun_java2d_x11_X11Renderer_XFillRoundRect;
          Java_sun_java2d_x11_X11Renderer_devCopyArea;
@@ -240,7 +240,7 @@
          Java_com_sun_java_swing_plaf_gtk_GTKEngine_native_1paint_1box;
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/font/GlyphDisposedListener.java openjdk/jdk/src/share/classes/sun/font/GlyphDisposedListener.java
 --- openjdk.orig/jdk/src/share/classes/sun/font/GlyphDisposedListener.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/font/GlyphDisposedListener.java	2010-08-03 23:17:50.480916320 +0100
++++ openjdk/jdk/src/share/classes/sun/font/GlyphDisposedListener.java	2011-02-17 16:52:48.198146458 +0000
 @@ -0,0 +1,32 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -275,8 +275,8 @@
 +    public void glyphDisposed(ArrayList<Long> glyphs);
 +}
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/font/StrikeCache.java openjdk/jdk/src/share/classes/sun/font/StrikeCache.java
---- openjdk.orig/jdk/src/share/classes/sun/font/StrikeCache.java	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/font/StrikeCache.java	2010-08-03 23:25:03.054323484 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/font/StrikeCache.java	2011-02-17 16:00:33.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/font/StrikeCache.java	2011-02-17 16:52:48.198146458 +0000
 @@ -31,6 +31,7 @@
  import java.lang.ref.ReferenceQueue;
  import java.lang.ref.SoftReference;
@@ -438,8 +438,8 @@
      public static Reference getStrikeRef(FontStrike strike) {
          return getStrikeRef(strike, cacheRefTypeWeak);
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java	2010-06-21 22:15:29.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java	2011-01-20 23:54:26.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedPaints.java	2011-02-17 16:52:48.198146458 +0000
 @@ -307,7 +307,7 @@
       * linear RGB space.  Copied directly from the
       * MultipleGradientPaintContext class.
@@ -450,8 +450,8 @@
  
          input = color / 255.0f;
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java openjdk/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java	2010-06-21 22:15:29.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java	2011-01-20 23:54:26.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/RenderBuffer.java	2011-02-17 16:52:48.198146458 +0000
 @@ -131,6 +131,11 @@
          curAddress = baseAddress;
      }
@@ -465,8 +465,8 @@
       * putByte() methods...
       */
 diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine openjdk/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	2010-06-21 22:15:29.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	2011-01-20 23:54:26.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pisces/META-INF/services/sun.java2d.pipe.RenderingEngine	2011-02-17 16:52:48.198146458 +0000
 @@ -1,2 +1,5 @@
 +# Jules Rendering Engine module
 +sun.java2d.jules.JulesRenderingEngine
@@ -476,8 +476,8 @@
 +sun.java2d.pisces.PiscesRenderingEngine
 \ No newline at end of file
 diff -Nru openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.c openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c
---- openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.c	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c	2010-08-03 23:18:20.208668761 +0100
+--- openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.c	2011-02-17 16:00:33.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c	2011-02-17 16:52:48.198146458 +0000
 @@ -325,6 +325,7 @@
      cellInfo->glyphInfo = glyph;
      cellInfo->nextGCI = glyph->cellInfo;
@@ -487,8 +487,8 @@
  
  /**
 diff -Nru openjdk.orig/jdk/src/share/native/sun/font/fontscalerdefs.h openjdk/jdk/src/share/native/sun/font/fontscalerdefs.h
---- openjdk.orig/jdk/src/share/native/sun/font/fontscalerdefs.h	2010-06-21 22:15:41.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/font/fontscalerdefs.h	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/native/sun/font/fontscalerdefs.h	2011-01-20 23:54:38.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/font/fontscalerdefs.h	2011-02-17 16:52:48.198146458 +0000
 @@ -84,15 +84,26 @@
  
  #define t2kScalarAverage(a, b) (((a) + (b)) / (t2kScalar)(2))
@@ -518,8 +518,8 @@
  } GlyphInfo;
  
 diff -Nru openjdk.orig/jdk/src/share/native/sun/font/freetypeScaler.c openjdk/jdk/src/share/native/sun/font/freetypeScaler.c
---- openjdk.orig/jdk/src/share/native/sun/font/freetypeScaler.c	2010-08-03 23:14:58.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/native/sun/font/freetypeScaler.c	2011-02-17 16:00:43.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c	2011-02-17 16:52:48.198146458 +0000
 @@ -783,6 +783,7 @@
          return ptr_to_jlong(glyphInfo);
      }
@@ -538,8 +538,8 @@
                     point; and a second-order control point if unset.  */
                  current_type = SEG_CUBICTO;
 diff -Nru openjdk.orig/jdk/src/share/native/sun/font/sunFont.c openjdk/jdk/src/share/native/sun/font/sunFont.c
---- openjdk.orig/jdk/src/share/native/sun/font/sunFont.c	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/font/sunFont.c	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/native/sun/font/sunFont.c	2011-02-17 16:00:33.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/font/sunFont.c	2011-02-17 16:52:48.198146458 +0000
 @@ -294,7 +294,8 @@
          for (i=0; i< len; i++) {
              if (ptrs[i] != 0) {
@@ -570,8 +570,8 @@
  }
  
 diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	2010-06-21 22:15:42.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	2011-01-20 23:54:39.000000000 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLTextRenderer.c	2011-02-17 16:52:48.198146458 +0000
 @@ -244,6 +244,7 @@
  OGLTR_AddToGlyphCache(GlyphInfo *glyph, jboolean rgbOrder)
  {
@@ -614,8 +614,8 @@
  
      // location of the glyph in the destination's coordinate space
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2010-08-03 23:14:59.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2011-02-17 16:00:33.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2011-02-17 16:52:48.198146458 +0000
 @@ -37,6 +37,7 @@
  import java.util.HashMap;
  
@@ -677,8 +677,8 @@
          }
      }
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	2010-06-21 22:15:43.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	2010-08-03 23:17:50.480916320 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	2011-02-17 16:52:48.198146458 +0000
 @@ -26,6 +26,7 @@
  package sun.awt;
  
@@ -763,7 +763,7 @@
       * Returns:
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java	2010-08-03 23:17:50.480916320 +0100
++++ openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCacheEntry.java	2011-02-17 16:52:48.198146458 +0000
 @@ -0,0 +1,206 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -973,7 +973,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/font/XRGlyphCache.java openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCache.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/font/XRGlyphCache.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCache.java	2010-08-03 23:17:50.480916320 +0100
++++ openjdk/jdk/src/solaris/classes/sun/font/XRGlyphCache.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,301 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -1278,7 +1278,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/font/XRTextRenderer.java openjdk/jdk/src/solaris/classes/sun/font/XRTextRenderer.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/font/XRTextRenderer.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/font/XRTextRenderer.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/font/XRTextRenderer.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,152 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -1434,7 +1434,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/IdleTileCache.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/IdleTileCache.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/IdleTileCache.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/IdleTileCache.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/IdleTileCache.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,109 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -1547,7 +1547,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesAATileGenerator.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,349 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -1900,7 +1900,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesPathBuf.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,271 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2175,7 +2175,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesRenderingEngine.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,54 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2233,7 +2233,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesShapePipe.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,102 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2339,7 +2339,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesTile.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesTile.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/JulesTile.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesTile.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/JulesTile.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,67 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2410,7 +2410,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/TileWorker.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/TileWorker.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/TileWorker.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/TileWorker.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/TileWorker.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,146 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2560,7 +2560,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/TrapezoidList.java openjdk/jdk/src/solaris/classes/sun/java2d/jules/TrapezoidList.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/jules/TrapezoidList.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/TrapezoidList.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/jules/TrapezoidList.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,110 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2673,8 +2673,8 @@
 +    }
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java openjdk/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java	2010-06-21 22:15:44.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java	2010-08-03 23:17:50.484916824 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java	2011-01-20 23:54:41.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/SurfaceManagerFactory.java	2011-02-17 16:52:48.202146146 +0000
 @@ -34,6 +34,8 @@
  import sun.java2d.opengl.GLXGraphicsConfig;
  import sun.java2d.opengl.GLXVolatileSurfaceManager;
@@ -2703,8 +2703,8 @@
              return new X11VolatileSurfaceManager(vImg, context);
          }
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	2010-06-21 22:15:44.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	2010-08-03 23:17:50.484916824 +0100
+--- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	2011-02-17 16:00:43.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	2011-02-17 16:52:48.202146146 +0000
 @@ -46,6 +46,7 @@
  import sun.awt.SunToolkit;
  import sun.awt.X11ComponentPeer;
@@ -2750,7 +2750,7 @@
      }
  
      /**
-@@ -402,11 +402,11 @@
+@@ -405,11 +405,11 @@
                                          cm, drawable, transparency);
      }
  
@@ -2767,7 +2767,7 @@
  
      protected X11SurfaceData(X11ComponentPeer peer,
                               X11GraphicsConfig gc,
-@@ -565,8 +565,6 @@
+@@ -568,8 +568,6 @@
          return sType;
      }
  
@@ -2776,7 +2776,7 @@
      public void invalidate() {
          if (isValid()) {
              setInvalid();
-@@ -580,16 +578,9 @@
+@@ -583,16 +581,9 @@
       * X11SurfaceData object.
       */
  
@@ -2795,7 +2795,7 @@
      private Region validatedClip;
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/XSurfaceData.java openjdk/jdk/src/solaris/classes/sun/java2d/x11/XSurfaceData.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/XSurfaceData.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/XSurfaceData.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/XSurfaceData.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,40 @@
 +package sun.java2d.x11;
 +
@@ -2839,7 +2839,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/DirtyRegion.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/DirtyRegion.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/DirtyRegion.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/DirtyRegion.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/DirtyRegion.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,133 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -2976,7 +2976,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableByteArray.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,127 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3107,7 +3107,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableEltArray.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,84 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3195,7 +3195,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableIntArray.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,114 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3313,7 +3313,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowablePointArray.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowablePointArray.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowablePointArray.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowablePointArray.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowablePointArray.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,62 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3379,7 +3379,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableRectArray.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableRectArray.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/GrowableRectArray.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableRectArray.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/GrowableRectArray.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,79 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3462,7 +3462,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MaskTile.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTile.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MaskTile.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTile.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTile.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,166 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3632,7 +3632,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MaskTileManager.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTileManager.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MaskTileManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTileManager.java	2010-08-03 23:17:50.484916824 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MaskTileManager.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,327 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -3963,7 +3963,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MutableInteger.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/MutableInteger.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/MutableInteger.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MutableInteger.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/MutableInteger.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,57 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4024,7 +4024,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XcbRequestCounter.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XcbRequestCounter.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XcbRequestCounter.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XcbRequestCounter.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XcbRequestCounter.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,59 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4087,7 +4087,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XIDGenerator.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XIDGenerator.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XIDGenerator.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XIDGenerator.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XIDGenerator.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,53 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4144,7 +4144,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRBackend.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackend.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRBackend.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackend.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackend.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,117 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4265,7 +4265,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRBackendNative.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,343 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4612,7 +4612,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRColor.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRColor.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRColor.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRColor.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRColor.java	2011-02-17 16:52:48.202146146 +0000
 @@ -0,0 +1,141 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -4757,7 +4757,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRCompositeManager.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRCompositeManager.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRCompositeManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRCompositeManager.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRCompositeManager.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,334 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5095,7 +5095,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRDrawImage.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRDrawImage.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRDrawImage.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRDrawImage.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRDrawImage.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,67 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5166,7 +5166,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRGraphicsConfig.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRGraphicsConfig.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRGraphicsConfig.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRGraphicsConfig.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRGraphicsConfig.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,61 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5231,7 +5231,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskBlit.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskBlit.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskBlit.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskBlit.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskBlit.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,94 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5329,7 +5329,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskFill.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskFill.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskFill.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskFill.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskFill.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,115 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5448,7 +5448,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskImage.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskImage.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRMaskImage.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskImage.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRMaskImage.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,129 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5581,7 +5581,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPaints.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,314 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -5899,7 +5899,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRPMBlitLoops.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,400 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -6303,7 +6303,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRRenderer.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRRenderer.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRRenderer.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRRenderer.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRRenderer.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,331 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -6638,7 +6638,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,668 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -7310,7 +7310,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRSurfaceDataProxy.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,83 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -7397,7 +7397,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRUtils.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRUtils.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRUtils.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRUtils.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRUtils.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,261 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -7662,7 +7662,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRVolatileSurfaceManager.java openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRVolatileSurfaceManager.java
 --- openjdk.orig/jdk/src/solaris/classes/sun/java2d/xr/XRVolatileSurfaceManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRVolatileSurfaceManager.java	2010-08-03 23:17:50.488916560 +0100
++++ openjdk/jdk/src/solaris/classes/sun/java2d/xr/XRVolatileSurfaceManager.java	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,94 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -7759,8 +7759,8 @@
 +    }
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c
---- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	2010-06-21 22:15:45.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	2010-08-03 23:17:50.488916560 +0100
+--- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	2011-01-20 23:54:42.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c	2011-02-17 16:52:48.206145834 +0000
 @@ -71,7 +71,7 @@
  extern AwtGraphicsConfigDataPtr
      getGraphicsConfigFromComponentPeer(JNIEnv *env, jobject this);
@@ -8074,8 +8074,8 @@
  {
  #ifndef HEADLESS
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h
---- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	2010-06-21 22:15:45.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	2010-08-03 23:17:50.492916645 +0100
+--- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	2011-01-20 23:54:42.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h	2011-02-17 16:52:48.206145834 +0000
 @@ -30,6 +30,8 @@
  
  #include <jdga.h>
@@ -8105,7 +8105,7 @@
   * for accessing the indicated X11 SurfaceData Java object.  It
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c openjdk/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c
 --- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c	2010-08-03 23:17:50.496917150 +0100
++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,784 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
@@ -8893,7 +8893,7 @@
 +}
 diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c openjdk/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c
 --- openjdk.orig/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c	2010-08-03 23:17:50.496917150 +0100
++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c	2011-02-17 16:52:48.206145834 +0000
 @@ -0,0 +1,116 @@
 +/*
 + * Copyright 2010 Sun Microsystems, Inc.  All Rights Reserved.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6607170-request_focus.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,709 @@
+# HG changeset patch
+# User ant
+# Date 1295900434 0
+# Node ID 04fd19f2a82db6eaaa4d63121510d5a47dadffe3
+# Parent  26dd3385e8dca0f8e7e20254e55101d3d904fceb
+6607170: Focus not set by requestFocus
+Summary: fixing/refactoring focus auto-transfer mechanism.
+Reviewed-by: son
+
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -1327,12 +1327,15 @@
+             KeyboardFocusManager.clearMostRecentFocusOwner(this);
+             synchronized (getTreeLock()) {
+                 enabled = false;
+-                if (isFocusOwner()) {
++                // A disabled lw container is allowed to contain a focus owner.
++                if ((isFocusOwner() || (containsFocus() && !isLightweight())) &&
++                    KeyboardFocusManager.isAutoFocusTransferEnabled())
++                {
+                     // Don't clear the global focus owner. If transferFocus
+                     // fails, we want the focus to stay on the disabled
+                     // Component so that keyboard traversal, et. al. still
+                     // makes sense to the user.
+-                    autoTransferFocus(false);
++                    transferFocus(false);
+                 }
+                 ComponentPeer peer = this.peer;
+                 if (peer != null) {
+@@ -1493,8 +1496,8 @@
+             synchronized (getTreeLock()) {
+                 visible = false;
+                 mixOnHiding(isLightweight());
+-                if (containsFocus()) {
+-                    autoTransferFocus(true);
++                if (containsFocus() && KeyboardFocusManager.isAutoFocusTransferEnabled()) {
++                    transferFocus(true);
+                 }
+                 ComponentPeer peer = this.peer;
+                 if (peer != null) {
+@@ -6577,12 +6580,8 @@
+         }
+ 
+         synchronized (getTreeLock()) {
+-            if (isFocusOwner()
+-                && KeyboardFocusManager.isAutoFocusTransferEnabled()
+-                && !nextFocusHelper())
+-            {
+-                KeyboardFocusManager.getCurrentKeyboardFocusManager().
+-                    clearGlobalFocusOwner();
++            if (isFocusOwner() && KeyboardFocusManager.isAutoFocusTransferEnabledFor(this)) {
++                transferFocus(true);
+             }
+ 
+             if (getContainer() != null && isAddNotifyComplete) {
+@@ -6717,8 +6716,8 @@
+ 
+         firePropertyChange("focusable", oldFocusable, focusable);
+         if (oldFocusable && !focusable) {
+-            if (isFocusOwner()) {
+-                autoTransferFocus(true);
++            if (isFocusOwner() && KeyboardFocusManager.isAutoFocusTransferEnabled()) {
++                transferFocus(true);
+             }
+             KeyboardFocusManager.clearMostRecentFocusOwner(this);
+         }
+@@ -7372,69 +7371,6 @@
+         }
+     }
+ 
+-    private void autoTransferFocus(boolean clearOnFailure) {
+-        Component toTest = KeyboardFocusManager.
+-            getCurrentKeyboardFocusManager().getFocusOwner();
+-        if (toTest != this) {
+-            if (toTest != null) {
+-                toTest.autoTransferFocus(clearOnFailure);
+-            }
+-            return;
+-        }
+-
+-        // Check if there are pending focus requests.  We shouldn't do
+-        // auto-transfer if user has already took care of this
+-        // component becoming ineligible to hold focus.
+-        if (!KeyboardFocusManager.isAutoFocusTransferEnabled()) {
+-            return;
+-        }
+-
+-        // the following code will execute only if this Component is the focus
+-        // owner
+-
+-        if (!(isDisplayable() && isVisible() && isEnabled() && isFocusable())) {
+-            doAutoTransfer(clearOnFailure);
+-            return;
+-        }
+-
+-        toTest = getParent();
+-
+-        while (toTest != null && !(toTest instanceof Window)) {
+-            if (!(toTest.isDisplayable() && toTest.isVisible() &&
+-                  (toTest.isEnabled() || toTest.isLightweight()))) {
+-                doAutoTransfer(clearOnFailure);
+-                return;
+-            }
+-            toTest = toTest.getParent();
+-        }
+-    }
+-    private void doAutoTransfer(boolean clearOnFailure) {
+-        if (focusLog.isLoggable(Level.FINER)) {
+-            focusLog.log(Level.FINER, "this = " + this + ", clearOnFailure = " + clearOnFailure);
+-        }
+-        if (clearOnFailure) {
+-            if (!nextFocusHelper()) {
+-                if (focusLog.isLoggable(Level.FINER)) {
+-                    focusLog.log(Level.FINER, "clear global focus owner");
+-                }
+-                KeyboardFocusManager.getCurrentKeyboardFocusManager().
+-                    clearGlobalFocusOwner();
+-            }
+-        } else {
+-            transferFocus();
+-        }
+-    }
+-
+-    /**
+-     * Transfers the focus to the next component, as though this Component were
+-     * the focus owner.
+-     * @see       #requestFocus()
+-     * @since     JDK1.1
+-     */
+-    public void transferFocus() {
+-        nextFocus();
+-    }
+-
+     /**
+      * Returns the Container which is the focus cycle root of this Component's
+      * focus traversal cycle. Each focus traversal cycle has only a single
+@@ -7474,31 +7410,51 @@
+         return (rootAncestor == container);
+     }
+ 
++    Container getTraversalRoot() {
++        return getFocusCycleRootAncestor();
++    }
++
++    /**
++     * Transfers the focus to the next component, as though this Component were
++     * the focus owner.
++     * @see       #requestFocus()
++     * @since     JDK1.1
++     */
++    public void transferFocus() {
++        nextFocus();
++    }
++
+     /**
+      * @deprecated As of JDK version 1.1,
+      * replaced by transferFocus().
+      */
+     @Deprecated
+     public void nextFocus() {
+-        nextFocusHelper();
+-    }
+-
+-    private boolean nextFocusHelper() {
+-        Component toFocus = preNextFocusHelper();
++        transferFocus(false);
++    }
++
++    boolean transferFocus(boolean clearOnFailure) {
+         if (focusLog.isLoggable(Level.FINER)) {
+-            focusLog.log(Level.FINER, "toFocus = " + toFocus);
+-        }
+-        if (isFocusOwner() && toFocus == this) {
+-            return false;
+-        }
+-        return postNextFocusHelper(toFocus, CausedFocusEvent.Cause.TRAVERSAL_FORWARD);
+-    }
+-
+-    Container getTraversalRoot() {
+-        return getFocusCycleRootAncestor();
+-    }
+-
+-    final Component preNextFocusHelper() {
++            focusLog.finer("clearOnFailure = " + clearOnFailure);
++        }
++        Component toFocus = getNextFocusCandidate();
++        boolean res = false;
++        if (toFocus != null && !toFocus.isFocusOwner() && toFocus != this) {
++            res = toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_FORWARD);
++        }
++        if (clearOnFailure && !res) {
++            if (focusLog.isLoggable(Level.FINER)) {
++                focusLog.finer("clear global focus owner");
++            }
++            KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
++        }
++        if (focusLog.isLoggable(Level.FINER)) {
++            focusLog.finer("returning result: " + res);
++        }
++        return res;
++    }
++
++    final Component getNextFocusCandidate() {
+         Container rootAncestor = getTraversalRoot();
+         Component comp = this;
+         while (rootAncestor != null &&
+@@ -7510,18 +7466,19 @@
+             rootAncestor = comp.getFocusCycleRootAncestor();
+         }
+         if (focusLog.isLoggable(Level.FINER)) {
+-            focusLog.log(Level.FINER, "comp = " + comp + ", root = " + rootAncestor);
+-        }
++            focusLog.finer("comp = " + comp + ", root = " + rootAncestor);
++        }
++        Component candidate = null;
+         if (rootAncestor != null) {
+             FocusTraversalPolicy policy = rootAncestor.getFocusTraversalPolicy();
+             Component toFocus = policy.getComponentAfter(rootAncestor, comp);
+             if (focusLog.isLoggable(Level.FINER)) {
+-                focusLog.log(Level.FINER, "component after is " + toFocus);
++                focusLog.finer("component after is " + toFocus);
+             }
+             if (toFocus == null) {
+                 toFocus = policy.getDefaultComponent(rootAncestor);
+                 if (focusLog.isLoggable(Level.FINER)) {
+-                    focusLog.log(Level.FINER, "default component is " + toFocus);
++                    focusLog.finer("default component is " + toFocus);
+                 }
+             }
+             if (toFocus == null) {
+@@ -7530,23 +7487,12 @@
+                     toFocus = applet;
+                 }
+             }
+-            return toFocus;
+-        }
+-        return null;
+-    }
+-
+-    static boolean postNextFocusHelper(Component toFocus, CausedFocusEvent.Cause cause) {
+-        if (toFocus != null) {
+-            if (focusLog.isLoggable(Level.FINER)) {
+-                focusLog.log(Level.FINER, "Next component " + toFocus);
+-            }
+-            boolean res = toFocus.requestFocusInWindow(cause);
+-            if (focusLog.isLoggable(Level.FINER)) {
+-                focusLog.log(Level.FINER, "Request focus returned " + res);
+-            }
+-            return res;
+-        }
+-        return false;
++            candidate = toFocus;
++        }
++        if (focusLog.isLoggable(Level.FINER)) {
++            focusLog.finer("Focus transfer candidate: " + candidate);
++        }
++        return candidate;
+     }
+ 
+     /**
+@@ -7556,6 +7502,10 @@
+      * @since     1.4
+      */
+     public void transferFocusBackward() {
++        transferFocusBackward(false);
++    }
++
++    boolean transferFocusBackward(boolean clearOnFailure) {
+         Container rootAncestor = getTraversalRoot();
+         Component comp = this;
+         while (rootAncestor != null &&
+@@ -7566,6 +7516,7 @@
+             comp = rootAncestor;
+             rootAncestor = comp.getFocusCycleRootAncestor();
+         }
++        boolean res = false;
+         if (rootAncestor != null) {
+             FocusTraversalPolicy policy = rootAncestor.getFocusTraversalPolicy();
+             Component toFocus = policy.getComponentBefore(rootAncestor, comp);
+@@ -7573,9 +7524,19 @@
+                 toFocus = policy.getDefaultComponent(rootAncestor);
+             }
+             if (toFocus != null) {
+-                toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_BACKWARD);
+-            }
+-        }
++                res = toFocus.requestFocusInWindow(CausedFocusEvent.Cause.TRAVERSAL_BACKWARD);
++            }
++        }
++        if (!res) {
++            if (focusLog.isLoggable(Level.FINER)) {
++                focusLog.finer("clear global focus owner");
++            }
++            KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
++        }
++        if (focusLog.isLoggable(Level.FINER)) {
++            focusLog.finer("returning result: " + res);
++        }
++        return res;
+     }
+ 
+     /**
+@@ -7650,6 +7611,20 @@
+         return hasFocus();
+     }
+ 
++    /*
++     * Used to disallow auto-focus-transfer on disposal of the focus owner
++     * in the process of disposing its parent container.
++     */
++    private boolean autoFocusTransferOnDisposal = true;
++
++    void setAutoFocusTransferOnDisposal(boolean value) {
++        autoFocusTransferOnDisposal = value;
++    }
++
++    boolean isAutoFocusTransferOnDisposal() {
++        return autoFocusTransferOnDisposal;
++    }
++
+     /**
+      * Adds the specified popup menu to the component.
+      * @param     popup the popup menu to be added to the component.
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -2656,9 +2656,26 @@
+         synchronized (getTreeLock()) {
+             int ncomponents = this.ncomponents;
+             Component component[] = this.component;
+-            for (int i = ncomponents-1 ; i >= 0 ; i--) {
+-                if( component[i] != null )
+-                component[i].removeNotify();
++            for (int i = ncomponents - 1; i >= 0; i--) {
++                if( component[i] != null ) {
++                    // Fix for 6607170.
++                    // We want to suppress focus change on disposal
++                    // of the focused component. But because of focus
++                    // is asynchronous, we should suppress focus change
++                    // on every component in case it receives native focus
++                    // in the process of disposal.
++                    component[i].setAutoFocusTransferOnDisposal(false);
++                    component[i].removeNotify();
++                    component[i].setAutoFocusTransferOnDisposal(true);
++                }
++            }
++            // If some of the children had focus before disposal then it still has.
++            // Auto-transfer focus to the next (or previous) component if auto-transfer
++            // is enabled.
++            if (containsFocus() && KeyboardFocusManager.isAutoFocusTransferEnabledFor(this)) {
++                if (!transferFocus(false)) {
++                    transferFocusBackward(true);
++                }
+             }
+             if ( dispatcher != null ) {
+                 dispatcher.dispose();
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/share/classes/java/awt/DefaultKeyboardFocusManager.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -155,12 +155,13 @@
+                                    boolean clearOnFailure)
+     {
+         if (toFocus != vetoedComponent && toFocus.isShowing() && toFocus.isFocusable() &&
+-            toFocus.requestFocus(false, CausedFocusEvent.Cause.ROLLBACK)) {
++            toFocus.requestFocus(false, CausedFocusEvent.Cause.ROLLBACK))
++        {
+             return true;
+         } else {
+-            Component nextFocus = toFocus.preNextFocusHelper();
+-            if (nextFocus != vetoedComponent
+-                && Component.postNextFocusHelper(nextFocus, CausedFocusEvent.Cause.ROLLBACK))
++            Component nextFocus = toFocus.getNextFocusCandidate();
++            if (nextFocus != null && nextFocus != vetoedComponent &&
++                nextFocus.requestFocusInWindow(CausedFocusEvent.Cause.ROLLBACK))
+             {
+                 return true;
+             } else if (clearOnFailure) {
+@@ -505,9 +506,16 @@
+                 {
+                     // we should not accept focus on such component, so reject it.
+                     dequeueKeyEvents(-1, newFocusOwner);
+-                    if (KeyboardFocusManager.isAutoFocusTransferEnabled())
+-                    {
+-                        restoreFocus(fe, newFocusedWindow);
++                    if (KeyboardFocusManager.isAutoFocusTransferEnabled()) {
++                        // If FOCUS_GAINED is for a disposed component (however
++                        // it shouldn't happen) its toplevel parent is null. In this
++                        // case we have to try to restore focus in the current focused
++                        // window (for the details: 6607170).
++                        if (newFocusedWindow == null) {
++                            restoreFocus(fe, currentFocusedWindow);
++                        } else {
++                            restoreFocus(fe, newFocusedWindow);
++                        }
+                     }
+                     break;
+                 }
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/share/classes/java/awt/KeyboardFocusManager.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -2580,6 +2580,10 @@
+         }
+     }
+ 
++    static boolean isAutoFocusTransferEnabledFor(Component comp) {
++        return isAutoFocusTransferEnabled() && comp.isAutoFocusTransferOnDisposal();
++    }
++
+     /*
+      * Used to process exceptions in dispatching focus event (in focusLost/focusGained callbacks).
+      * @param ex previously caught exception that may be processed right here, or null
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -96,12 +96,12 @@
+             Component focusOwner = activeWindow.getFocusOwner();
+             if (focusLog.isLoggable(Level.FINE)) focusLog.fine("Clearing global focus owner " + focusOwner);
+             if (focusOwner != null) {
+-                XComponentPeer nativePeer = XComponentPeer.getNativeContainer(focusOwner);
+-                if (nativePeer != null) {
++//                XComponentPeer nativePeer = XComponentPeer.getNativeContainer(focusOwner);
++//                if (nativePeer != null) {
+                     FocusEvent fl = new CausedFocusEvent(focusOwner, FocusEvent.FOCUS_LOST, false, null,
+                                                          CausedFocusEvent.Cause.CLEAR_GLOBAL_FOCUS_OWNER);
+                     XWindow.sendEvent(fl);
+-                }
++//                }
+             }
+         }
+    }
+diff -r 26dd3385e8dc -r 04fd19f2a82d src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp	Tue Mar 18 14:10:28 2008 +0300
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	Mon Jan 24 20:20:34 2011 +0000
+@@ -901,8 +901,27 @@
+ 
+ void AwtComponent::Hide()
+ {
++    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
++    jobject peer = GetPeer(env);
++    BOOL oldValue = sm_suppressFocusAndActivation;
+     m_visible = false;
++
++    // On disposal the focus owner actually loses focus at the moment of hiding.
++    // So, focus change suppression (if requested) should be made here.
++    if (GetHWnd() == sm_focusOwner &&
++        !JNU_CallMethodByName(env, NULL, peer, "isAutoFocusTransferOnDisposal", "()Z").z)
++   {
++        sm_suppressFocusAndActivation = TRUE;
++        // The native system may autotransfer focus on hiding to the parent
++        // of the component. Nevertheless this focus change won't be posted
++        // to the Java level, we're better to avoid this. Anyway, after
++        // the disposal focus should be requested to the right component.
++        ::SetFocus(NULL);
++        sm_focusOwner = NULL;
++    }
+     ::ShowWindow(GetHWnd(), SW_HIDE);
++
++    sm_suppressFocusAndActivation = oldValue;
+ }
+ 
+ BOOL
+diff -r 26dd3385e8dc -r 04fd19f2a82d test/java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Focus/ContainerFocusAutoTransferTest/ContainerFocusAutoTransferTest.java	Mon Jan 24 20:20:34 2011 +0000
+@@ -0,0 +1,243 @@
++/*
++ * Copyright (c) 2008, 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       6607170
++  @summary   Tests for focus-auto-transfer.
++  @author    Anton Tarasov: area=awt-focus
++  @library   ../../regtesthelpers
++  @build     Util
++  @run       main ContainerFocusAutoTransferTest
++*/
++
++import java.applet.Applet;
++import java.awt.AWTEvent;
++import java.awt.Component;
++import java.awt.ComponentOrientation;
++import java.awt.DefaultKeyboardFocusManager;
++import java.awt.KeyboardFocusManager;
++import java.awt.Robot;
++import java.awt.Color;
++import java.awt.FlowLayout;
++import java.awt.Toolkit;
++import java.awt.event.AWTEventListener;
++import java.awt.event.FocusEvent;
++import java.awt.event.WindowEvent;
++import javax.swing.JButton;
++import javax.swing.JFrame;
++import javax.swing.JPanel;
++import test.java.awt.regtesthelpers.Util;
++
++public class ContainerFocusAutoTransferTest extends Applet {
++    Robot robot;
++    TestFrame frame;
++    KeyboardFocusManager kfm;
++    enum TestCase {
++        REMOVAL { public String toString() { return "removal"; } },
++        HIDING { public String toString() { return "hiding"; } },
++        DISABLING { public String toString() { return "disabling"; } },
++        DEFOCUSING { public String toString() { return "defocusing"; } };
++        public abstract String toString();
++    };
++
++    public static void main(String[] args) {
++        ContainerFocusAutoTransferTest app = new ContainerFocusAutoTransferTest();
++        app.init();
++        app.start();
++    }
++
++    public void init() {
++        robot = Util.createRobot();
++        kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
++        Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
++            public void eventDispatched(AWTEvent event) {
++                System.out.println("--> " + event);
++            }
++        }, FocusEvent.FOCUS_EVENT_MASK | WindowEvent.WINDOW_FOCUS_EVENT_MASK);
++    }
++
++    public void start() {
++        System.out.println("*** TEST #1 ***");
++        test(TestCase.HIDING);
++
++        System.out.println("*** TEST #2 ***");
++        test(TestCase.REMOVAL);
++
++        System.out.println("*** TEST #3 ***");
++        test3(TestCase.DISABLING);
++
++        System.out.println("*** TEST #4 ***");
++        test3(TestCase.DEFOCUSING);
++
++        System.out.println("*** TEST #5 ***");
++        test4();
++
++        System.out.println("Test passed.");
++    }
++
++    void test(final TestCase t) {
++        showFrame();
++        test1(t); // Test for correct auto-transfer
++        test2(t); // Test for clearing focus
++    }
++
++    void test1(final TestCase t) {
++        Runnable action = new Runnable() {
++            public void run() {
++                KeyboardFocusManager.setCurrentKeyboardFocusManager(new TestKFM());
++                if (t == TestCase.REMOVAL) {
++                    frame.remove(frame.panel0);
++
++                } else if (t == TestCase.HIDING) {
++                    frame.panel0.setVisible(false);
++                }
++                frame.repaint();
++            }
++        };
++        if (!Util.trackFocusGained(frame.b3, action, 2000, false)) {
++            throw new TestFailedException(t + ": focus wasn't transfered as expected!");
++        }
++        KeyboardFocusManager.setCurrentKeyboardFocusManager(kfm);
++    }
++
++    void test2(TestCase t) {
++        frame.setFocusable(false); // exclude it from the focus cycle
++        if (t == TestCase.REMOVAL) {
++            frame.remove(frame.panel1);
++
++        } else if (t == TestCase.HIDING) {
++            frame.panel1.setVisible(false);
++        }
++        frame.repaint();
++        Util.waitForIdle(robot);
++        if (kfm.getFocusOwner() != null) {
++            throw new TestFailedException(t + ": focus wasn't cleared!");
++        }
++    }
++
++    void test3(final TestCase t) {
++        showFrame();
++        Runnable action = new Runnable() {
++            public void run() {
++                if (t == TestCase.DISABLING) {
++                    frame.b0.setEnabled(false);
++
++                } else if (t == TestCase.DEFOCUSING) {
++                    frame.b0.setFocusable(false);
++                }
++            }};
++        if (!Util.trackFocusGained(frame.b1, action, 2000, false)) {
++            throw new TestFailedException(t + ": focus wasn't transfered as expected!");
++        }
++    }
++
++    void test4() {
++        showFrame();
++        frame.setFocusableWindowState(false);
++        Util.waitForIdle(robot);
++        if (kfm.getFocusOwner() != null) {
++            throw new TestFailedException("defocusing the frame: focus wasn't cleared!");
++        }
++    }
++
++    void showFrame() {
++        if (frame != null) {
++            frame.dispose();
++            Util.waitForIdle(robot);
++        }
++        frame = new TestFrame();
++        frame.setVisible(true);
++        Util.waitTillShown(frame);
++
++        if (!frame.b0.hasFocus()) {
++            Util.clickOnComp(frame.b0, robot);
++            Util.waitForIdle(robot);
++            if (!frame.b0.hasFocus()) {
++                throw new TestErrorException("couldn't set focus on " + frame.b2);
++            }
++        }
++    }
++
++    class TestKFM extends DefaultKeyboardFocusManager {
++        public boolean dispatchEvent(AWTEvent e) {
++            if (e.getID() == FocusEvent.FOCUS_GAINED) {
++                System.out.println(e);
++                Component src = (Component)e.getSource();
++                if (src == frame.b1 || src == frame.b2) {
++                    throw new TestFailedException("wrong focus transfer on removal!");
++                }
++            }
++            return super.dispatchEvent(e);
++        }
++    }
++}
++
++class TestFrame extends JFrame {
++    public JPanel panel0 = new JPanel();
++    public JPanel panel1 = new JPanel();
++    public JButton b0 = new JButton("b0");
++    public JButton b1 = new JButton("b1");
++    public JButton b2 = new JButton("b2");
++    public JButton b3 = new JButton("b3");
++    public JButton b4 = new JButton("b4");
++
++    public TestFrame() {
++        super("TestFrame");
++
++        // The change of the orientation and the reverse order of
++        // adding the buttons to the panel is because in Container.removeNotify()
++        // the child components are removed in the reverse order.
++        // We want that the focus owner (b0) would be removed first and
++        // that the next traversable component would be b1.
++        panel0.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
++        panel0.add(b2);
++        panel0.add(b1);
++        panel0.add(b0);
++
++        panel1.add(b3);
++        panel1.add(b4);
++
++        setLayout(new FlowLayout());
++        add(panel0);
++        add(panel1);
++        pack();
++
++        panel0.setBackground(Color.red);
++        panel1.setBackground(Color.blue);
++    }
++}
++
++// Thrown when the behavior being verified is found wrong.
++class TestFailedException extends RuntimeException {
++    TestFailedException(String msg) {
++        super("Test failed: " + msg);
++    }
++}
++
++// Thrown when an error not related to the behavior being verified is encountered.
++class TestErrorException extends RuntimeException {
++    TestErrorException(String msg) {
++        super("Unexpected error: " + msg);
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6607660-treelock.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,112 @@
+# HG changeset patch
+# User anthony
+# Date 1205838628 -10800
+# Node ID 26dd3385e8dca0f8e7e20254e55101d3d904fceb
+# Parent  fcb2f8dcf112ceaf5d8d18b75749baa22b29bda6
+6607660: java.awt.Container.getMouseEventTargetImpl should be invoked while holding the TreeLock
+Summary: The body of the method has been wrapped into the synchronized (getTreeLock()) { } block.
+Reviewed-by: son, art
+
+diff -r fcb2f8dcf112 -r 26dd3385e8dc src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	Fri Jan 21 20:49:09 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	Tue Mar 18 14:10:28 2008 +0300
+@@ -2255,53 +2255,56 @@
+                                          EventTargetFilter filter,
+                                          boolean searchHeavyweightChildren,
+                                          boolean searchHeavyweightDescendants) {
+-        int ncomponents = this.ncomponents;
+-        Component component[] = this.component;
+-
+-        for (int i = 0 ; i < ncomponents ; i++) {
+-            Component comp = component[i];
+-            if (comp != null && comp.visible &&
+-                ((!searchHeavyweightChildren &&
+-                  comp.peer instanceof LightweightPeer) ||
+-                 (searchHeavyweightChildren &&
+-                  !(comp.peer instanceof LightweightPeer))) &&
+-                comp.contains(x - comp.x, y - comp.y)) {
+-
+-                // found a component that intersects the point, see if there is
+-                // a deeper possibility.
+-                if (comp instanceof Container) {
+-                    Container child = (Container) comp;
+-                    Component deeper = child.getMouseEventTarget(x - child.x,
+-                                                                 y - child.y,
+-                                                                 includeSelf,
+-                                                                 filter,
+-                                                                 searchHeavyweightDescendants);
+-                    if (deeper != null) {
+-                        return deeper;
+-                    }
+-                } else {
+-                    if (filter.accept(comp)) {
+-                        // there isn't a deeper target, but this component is a
+-                        // target
+-                        return comp;
++        synchronized (getTreeLock()) {
++            int ncomponents = this.ncomponents;
++            Component component[] = this.component;
++
++            for (int i = 0 ; i < ncomponents ; i++) {
++                Component comp = component[i];
++                if (comp != null && comp.visible &&
++                    ((!searchHeavyweightChildren &&
++                      comp.peer instanceof LightweightPeer) ||
++                     (searchHeavyweightChildren &&
++                      !(comp.peer instanceof LightweightPeer))) &&
++                    comp.contains(x - comp.x, y - comp.y)) {
++
++                    // found a component that intersects the point, see if there
++                    // is a deeper possibility.
++                    if (comp instanceof Container) {
++                        Container child = (Container) comp;
++                        Component deeper = child.getMouseEventTarget(
++                                x - child.x,
++                                y - child.y,
++                                includeSelf,
++                                filter,
++                                searchHeavyweightDescendants);
++                        if (deeper != null) {
++                            return deeper;
++                        }
++                    } else {
++                        if (filter.accept(comp)) {
++                            // there isn't a deeper target, but this component
++                            // is a target
++                            return comp;
++                        }
+                     }
+                 }
+             }
++
++            boolean isPeerOK;
++            boolean isMouseOverMe;
++
++            isPeerOK = (peer instanceof LightweightPeer) || includeSelf;
++            isMouseOverMe = contains(x,y);
++
++            // didn't find a child target, return this component if it's
++            // a possible target
++            if (isMouseOverMe && isPeerOK && filter.accept(this)) {
++                return this;
++            }
++            // no possible target
++            return null;
+         }
+-
+-        boolean isPeerOK;
+-        boolean isMouseOverMe;
+-
+-        isPeerOK = (peer instanceof LightweightPeer) || includeSelf;
+-        isMouseOverMe = contains(x,y);
+-
+-        // didn't find a child target, return this component if it's a possible
+-        // target
+-        if (isMouseOverMe && isPeerOK && filter.accept(this)) {
+-            return this;
+-        }
+-        // no possible target
+-        return null;
+     }
+ 
+     static interface EventTargetFilter {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6616323-component_array.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,1083 @@
+# HG changeset patch
+# User dav
+# Date 1296583142 0
+# Node ID 5dab44569221369c0353129cd4fac0c3f259f258
+# Parent  04fd19f2a82db6eaaa4d63121510d5a47dadffe3
+6616323: consider benefits of replacing a component array with other collection from the awt.Container class
+7015232: missing copyright header in CheckZOrderChange.java
+Reviewed-by: uta, art, anthony
+
+diff -r 04fd19f2a82d -r 5dab44569221 src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Tue Feb 01 17:59:02 2011 +0000
+@@ -2126,7 +2126,7 @@
+                     Toolkit.getEventQueue().postEvent(e);
+                 }
+             } else {
+-                if (this instanceof Container && ((Container)this).ncomponents > 0) {
++                if (this instanceof Container && ((Container)this).countComponents() > 0) {
+                     boolean enabledOnToolkit =
+                         Toolkit.enabledOnToolkit(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK);
+                     if (resized) {
+diff -r 04fd19f2a82d -r 5dab44569221 src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	Tue Feb 01 17:59:02 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -44,8 +44,6 @@
+ import java.util.Arrays;
+ import java.util.EventListener;
+ import java.util.HashSet;
+-import java.util.Iterator;
+-import java.util.LinkedList;
+ import java.util.Set;
+ 
+ import java.util.logging.*;
+@@ -90,21 +88,14 @@
+     private static final Logger log = Logger.getLogger("java.awt.Container");
+     private static final Logger eventLog = Logger.getLogger("java.awt.event.Container");
+ 
+-    /**
+-     * The number of components in this container.
+-     * This value can be null.
+-     * @see #getComponent
+-     * @see #getComponents
+-     * @see #getComponentCount
+-     */
+-    int ncomponents;
++    private static final Component[] EMPTY_ARRAY = new Component[0];
+ 
+     /**
+      * The components in this container.
+      * @see #add
+      * @see #getComponents
+      */
+-    Component component[] = new Component[0];
++    private java.util.List<Component> component = new java.util.ArrayList<Component>();
+ 
+     /**
+      * Layout manager for this container.
+@@ -290,7 +281,9 @@
+      */
+     @Deprecated
+     public int countComponents() {
+-        return ncomponents;
++        synchronized (getTreeLock()) {
++            return component.size();
++        }
+     }
+ 
+     /**
+@@ -302,10 +295,10 @@
+      */
+     public Component getComponent(int n) {
+         synchronized (getTreeLock()) {
+-            if ((n < 0) || (n >= ncomponents)) {
++            if ((n < 0) || (n >= component.size())) {
+                 throw new ArrayIndexOutOfBoundsException("No such child: " + n);
+             }
+-            return component[n];
++            return component.get(n);
+         }
+     }
+ 
+@@ -322,7 +315,7 @@
+     //       DO NOT INVOKE CLIENT CODE ON THIS THREAD!
+     final Component[] getComponents_NoClientCode() {
+         synchronized (getTreeLock()) {
+-            return Arrays.copyOf(component, ncomponents);
++            return component.toArray(EMPTY_ARRAY);
+         }
+     } // getComponents_NoClientCode()
+ 
+@@ -422,6 +415,29 @@
+     }
+ 
+     /**
++     * Checks that the component
++     * isn't supposed to be added into itself.
++     */
++    private void checkAddToSelf(Component comp){
++        if (comp instanceof Container) {
++            for (Container cn = this; cn != null; cn=cn.parent) {
++                if (cn == comp) {
++                    throw new IllegalArgumentException("adding container's parent to itself");
++                }
++            }
++        }
++    }
++
++    /**
++     * Checks that the component is not a Window instance.
++     */
++    private void checkNotAWindow(Component comp){
++        if (comp instanceof Window) {
++            throw new IllegalArgumentException("adding a window to a container");
++        }
++    }
++
++    /**
+      * Checks that the component comp can be added to this container
+      * Checks :  index in bounds of container's size,
+      * comp is not one of this container's parents,
+@@ -437,26 +453,18 @@
+ 
+         GraphicsConfiguration thisGC = getGraphicsConfiguration();
+ 
+-        if (index > ncomponents || index < 0) {
++        if (index > component.size() || index < 0) {
+             throw new IllegalArgumentException("illegal component position");
+         }
+         if (comp.parent == this) {
+-            if (index == ncomponents) {
++            if (index == component.size()) {
+                 throw new IllegalArgumentException("illegal component position " +
+-                                                   index + " should be less then " + ncomponents);
++                                                   index + " should be less then " + component.size());
+             }
+         }
+-        if (comp instanceof Container) {
+-            for (Container cn = this; cn != null; cn=cn.parent) {
+-                if (cn == comp) {
+-                    throw new IllegalArgumentException("adding container's parent to itself");
+-                }
+-            }
+-
+-            if (comp instanceof Window) {
+-                throw new IllegalArgumentException("adding a window to a container");
+-            }
+-        }
++        checkAddToSelf(comp);
++        checkNotAWindow(comp);
++
+         Window thisTopLevel = getContainingWindow();
+         Window compTopLevel = comp.getContainingWindow();
+         if (thisTopLevel != compTopLevel) {
+@@ -495,25 +503,19 @@
+             adjustDescendants(-(comp.countHierarchyMembers()));
+ 
+             comp.parent = null;
+-            System.arraycopy(component, index + 1,
+-                             component, index,
+-                             ncomponents - index - 1);
+-            component[--ncomponents] = null;
++            component.remove(index);
+ 
+             if (valid) {
+                 invalidate();
+             }
+         } else {
+-            if (newIndex > index) { // 2->4: 012345 -> 013425, 2->5: 012345 -> 013452
+-                if (newIndex-index > 0) {
+-                    System.arraycopy(component, index+1, component, index, newIndex-index);
+-                }
+-            } else { // 4->2: 012345 -> 014235
+-                if (index-newIndex > 0) {
+-                    System.arraycopy(component, newIndex, component, newIndex+1, index-newIndex);
+-                }
+-            }
+-            component[newIndex] = comp;
++            // We should remove component and then
++            // add it by the newIndex without newIndex decrement if even we shift components to the left
++            // after remove. Consult the rules below:
++            // 2->4: 012345 -> 013425, 2->5: 012345 -> 013452
++            // 4->2: 012345 -> 014235
++            component.remove(index);
++            component.add(newIndex, comp);
+         }
+         if (comp.parent == null) { // was actually removed
+             if (containerListener != null ||
+@@ -775,17 +777,11 @@
+ 
+         // Check if moving between containers
+         if (curParent != this) {
+-            /* Add component to list; allocate new array if necessary. */
+-            if (ncomponents == component.length) {
+-                component = Arrays.copyOf(component, ncomponents * 2 + 1);
+-            }
+-            if (index == -1 || index == ncomponents) {
+-                component[ncomponents++] = comp;
++            //index == -1 means add to the end.
++            if (index == -1) {
++                component.add(comp);
+             } else {
+-                System.arraycopy(component, index, component,
+-                                 index + 1, ncomponents - index);
+-                component[index] = comp;
+-                ncomponents++;
++                component.add(index, comp);
+             }
+             comp.parent = this;
+ 
+@@ -795,8 +791,8 @@
+                                     comp.numListening(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK));
+             adjustDescendants(comp.countHierarchyMembers());
+         } else {
+-            if (index < ncomponents) {
+-                component[index] = comp;
++            if (index < component.size()) {
++                component.set(index, comp);
+             }
+         }
+ 
+@@ -897,14 +893,8 @@
+             if (comp.parent != this) {
+                 return -1;
+             }
+-            for (int i = 0; i < ncomponents; i++) {
+-                if (component[i] == comp) {
+-                    return i;
+-                }
+-            }
++            return component.indexOf(comp);
+         }
+-        // To please javac
+-        return -1;
+     }
+ 
+     /**
+@@ -1038,22 +1028,12 @@
+              */
+             GraphicsConfiguration thisGC = this.getGraphicsConfiguration();
+ 
+-            if (index > ncomponents || (index < 0 && index != -1)) {
++            if (index > component.size() || (index < 0 && index != -1)) {
+                 throw new IllegalArgumentException(
+                           "illegal component position");
+             }
+-        if (comp instanceof Container) {
+-            for (Container cn = this; cn != null; cn=cn.parent) {
+-                if (cn == comp) {
+-                throw new IllegalArgumentException(
+-                      "adding container's parent to itself");
+-                }
+-            }
+-            if (comp instanceof Window) {
+-                throw new IllegalArgumentException(
+-                       "adding a window to a container");
+-            }
+-        }
++            checkAddToSelf(comp);
++            checkNotAWindow(comp);
+         if (thisGC != null) {
+             comp.checkGD(thisGC.getDevice().getIDstring());
+         }
+@@ -1061,22 +1041,16 @@
+             /* Reparent the component and tidy up the tree's state. */
+             if (comp.parent != null) {
+                 comp.parent.remove(comp);
+-                    if (index > ncomponents) {
++                    if (index > component.size()) {
+                         throw new IllegalArgumentException("illegal component position");
+                     }
+             }
+ 
+-            /* Add component to list; allocate new array if necessary. */
+-            if (ncomponents == component.length) {
+-                component = Arrays.copyOf(component, ncomponents * 2 + 1);
+-            }
+-            if (index == -1 || index == ncomponents) {
+-                component[ncomponents++] = comp;
++            //index == -1 means add to the end.
++            if (index == -1) {
++                component.add(comp);
+             } else {
+-                System.arraycopy(component, index, component,
+-                                 index + 1, ncomponents - index);
+-                component[index] = comp;
+-                ncomponents++;
++                component.add(index, comp);
+             }
+             comp.parent = this;
+ 
+@@ -1125,11 +1099,9 @@
+      * IllegalArgumentException.
+      */
+     void checkGD(String stringID) {
+-        Component tempComp;
+-        for (int i = 0; i < component.length; i++) {
+-            tempComp= component[i];
+-            if (tempComp != null) {
+-                tempComp.checkGD(stringID);
++        for (Component comp : component) {
++            if (comp != null) {
++                comp.checkGD(stringID);
+             }
+         }
+     }
+@@ -1159,10 +1131,10 @@
+      */
+     public void remove(int index) {
+         synchronized (getTreeLock()) {
+-            if (index < 0  || index >= ncomponents) {
++            if (index < 0  || index >= component.size()) {
+                 throw new ArrayIndexOutOfBoundsException(index);
+             }
+-            Component comp = component[index];
++            Component comp = component.get(index);
+             if (peer != null) {
+                 comp.removeNotify();
+             }
+@@ -1177,10 +1149,7 @@
+             adjustDescendants(-(comp.countHierarchyMembers()));
+ 
+             comp.parent = null;
+-            System.arraycopy(component, index + 1,
+-                             component, index,
+-                             ncomponents - index - 1);
+-            component[--ncomponents] = null;
++            component.remove(index);
+ 
+             if (valid) {
+                 invalidate();
+@@ -1225,14 +1194,9 @@
+     public void remove(Component comp) {
+         synchronized (getTreeLock()) {
+             if (comp.parent == this)  {
+-                /* Search backwards, expect that more recent additions
+-                 * are more likely to be removed.
+-                 */
+-                Component component[] = this.component;
+-                for (int i = ncomponents; --i >= 0; ) {
+-                    if (component[i] == comp) {
+-                        remove(i);
+-                    }
++                int index = component.indexOf(comp);
++                if (index >= 0) {
++                    remove(index);
+                 }
+             }
+         }
+@@ -1254,9 +1218,8 @@
+                                     -listeningBoundsChildren);
+             adjustDescendants(-descendantsCount);
+ 
+-            while (ncomponents > 0) {
+-                Component comp = component[--ncomponents];
+-                component[ncomponents] = null;
++            while (!component.isEmpty()) {
++                Component comp = component.remove(component.size()-1);
+ 
+                 if (peer != null) {
+                     comp.removeNotify();
+@@ -1296,8 +1259,8 @@
+             if (eventLog.isLoggable(Level.FINE)) {
+                 // Verify listeningChildren is correct
+                 int sum = 0;
+-                for (int i = 0; i < ncomponents; i++) {
+-                    sum += component[i].numListening(mask);
++                for (Component comp : component) {
++                    sum += comp.numListening(mask);
+                 }
+                 if (listeningChildren != sum) {
+                     eventLog.log(Level.FINE, "Assertion (listeningChildren == sum) failed");
+@@ -1308,8 +1271,8 @@
+             if (eventLog.isLoggable(Level.FINE)) {
+                 // Verify listeningBoundsChildren is correct
+                 int sum = 0;
+-                for (int i = 0; i < ncomponents; i++) {
+-                    sum += component[i].numListening(mask);
++                for (Component comp : component) {
++                    sum += comp.numListening(mask);
+                 }
+                 if (listeningBoundsChildren != sum) {
+                     eventLog.log(Level.FINE, "Assertion (listeningBoundsChildren == sum) failed");
+@@ -1371,8 +1334,8 @@
+         if (log.isLoggable(Level.FINE)) {
+             // Verify descendantsCount is correct
+             int sum = 0;
+-            for (int i = 0; i < ncomponents; i++) {
+-                sum += component[i].countHierarchyMembers();
++            for (Component comp : component) {
++                sum += comp.countHierarchyMembers();
+             }
+             if (descendantsCount != sum) {
+                 log.log(Level.FINE, "Assertion (descendantsCount == sum) failed");
+@@ -1404,7 +1367,7 @@
+         int listeners = getListenersCount(id, enabledOnToolkit);
+ 
+         for (int count = listeners, i = 0; count > 0; i++) {
+-            count -= component[i].createHierarchyEvents(id, changed,
++            count -= component.get(i).createHierarchyEvents(id, changed,
+                 changedParent, changeFlags, enabledOnToolkit);
+         }
+         return listeners +
+@@ -1416,13 +1379,13 @@
+         boolean enabledOnToolkit)
+     {
+         assert Thread.holdsLock(getTreeLock());
+-        if (ncomponents == 0) {
++        if (component.isEmpty()) {
+             return;
+         }
+         int listeners = getListenersCount(id, enabledOnToolkit);
+ 
+         for (int count = listeners, i = 0; count > 0; i++) {
+-            count -= component[i].createHierarchyEvents(id, this, parent,
++            count -= component.get(i).createHierarchyEvents(id, this, parent,
+                 changeFlags, enabledOnToolkit);
+         }
+     }
+@@ -1558,12 +1521,11 @@
+                 ((ContainerPeer)peer).beginLayout();
+             }
+             doLayout();
+-            Component component[] = this.component;
+-            for (int i = 0 ; i < ncomponents ; ++i) {
+-                Component comp = component[i];
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
+                 if (   (comp instanceof Container)
+-                    && !(comp instanceof Window)
+-                    && !comp.valid) {
++                       && !(comp instanceof Window)
++                       && !comp.valid) {
+                     ((Container)comp).validateTree();
+                 } else {
+                     comp.validate();
+@@ -1582,8 +1544,8 @@
+      */
+     void invalidateTree() {
+         synchronized (getTreeLock()) {
+-            for (int i = 0; i < ncomponents; ++i) {
+-                Component comp = component[i];
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
+                 if (comp instanceof Container) {
+                     ((Container)comp).invalidateTree();
+                 }
+@@ -1834,7 +1796,7 @@
+             // super.paint(); -- Don't bother, since it's a NOP.
+ 
+             GraphicsCallback.PaintCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.LIGHTWEIGHTS);
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.LIGHTWEIGHTS);
+         }
+     }
+ 
+@@ -1889,7 +1851,7 @@
+             }
+ 
+             GraphicsCallback.PrintCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.LIGHTWEIGHTS);
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.LIGHTWEIGHTS);
+         }
+     }
+ 
+@@ -1902,7 +1864,7 @@
+     public void paintComponents(Graphics g) {
+         if (isShowing()) {
+             GraphicsCallback.PaintAllCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.TWO_PASSES);
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.TWO_PASSES);
+         }
+     }
+ 
+@@ -1924,7 +1886,7 @@
+     void paintHeavyweightComponents(Graphics g) {
+         if (isShowing()) {
+             GraphicsCallback.PaintHeavyweightComponentsCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.LIGHTWEIGHTS |
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.LIGHTWEIGHTS |
+                                             GraphicsCallback.HEAVYWEIGHTS);
+         }
+     }
+@@ -1938,7 +1900,7 @@
+     public void printComponents(Graphics g) {
+         if (isShowing()) {
+             GraphicsCallback.PrintAllCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.TWO_PASSES);
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.TWO_PASSES);
+         }
+     }
+ 
+@@ -1960,7 +1922,7 @@
+     void printHeavyweightComponents(Graphics g) {
+         if (isShowing()) {
+             GraphicsCallback.PrintHeavyweightComponentsCallback.getInstance().
+-                runComponents(component, g, GraphicsCallback.LIGHTWEIGHTS |
++                runComponents(component.toArray(EMPTY_ARRAY), g, GraphicsCallback.LIGHTWEIGHTS |
+                                             GraphicsCallback.HEAVYWEIGHTS);
+         }
+     }
+@@ -2256,11 +2218,9 @@
+                                          boolean searchHeavyweightChildren,
+                                          boolean searchHeavyweightDescendants) {
+         synchronized (getTreeLock()) {
+-            int ncomponents = this.ncomponents;
+-            Component component[] = this.component;
+-
+-            for (int i = 0 ; i < ncomponents ; i++) {
+-                Component comp = component[i];
++
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
+                 if (comp != null && comp.visible &&
+                     ((!searchHeavyweightChildren &&
+                       comp.peer instanceof LightweightPeer) ||
+@@ -2411,8 +2371,8 @@
+         }
+         synchronized (getTreeLock()) {
+             // Two passes: see comment in sun.awt.SunGraphicsCallback
+-            for (int i = 0 ; i < ncomponents ; i++) {
+-                Component comp = component[i];
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
+                 if (comp != null &&
+                     !(comp.peer instanceof LightweightPeer)) {
+                     if (comp.contains(x - comp.x, y - comp.y)) {
+@@ -2420,8 +2380,8 @@
+                     }
+                 }
+             }
+-            for (int i = 0 ; i < ncomponents ; i++) {
+-                Component comp = component[i];
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
+                 if (comp != null &&
+                     comp.peer instanceof LightweightPeer) {
+                     if (comp.contains(x - comp.x, y - comp.y)) {
+@@ -2540,43 +2500,43 @@
+         if (!(contains(x, y) && visible && (ignoreEnabled || enabled))) {
+             return null;
+         }
+-        int ncomponents = this.ncomponents;
+-        Component component[] = this.component;
+ 
+         // Two passes: see comment in sun.awt.SunGraphicsCallback
+-        for (int i = 0 ; i < ncomponents ; i++) {
+-            Component comp = component[i];
+-            if (comp != null &&
+-                !(comp.peer instanceof LightweightPeer)) {
+-                if (comp instanceof Container) {
+-                    comp = ((Container)comp).findComponentAtImpl(x - comp.x,
+-                                                             y - comp.y,
+-                                                             ignoreEnabled);
+-                } else {
+-                    comp = comp.locate(x - comp.x, y - comp.y);
+-                }
+-                if (comp != null && comp.visible &&
+-                    (ignoreEnabled || comp.enabled))
+-                {
+-                    return comp;
++        synchronized (getTreeLock()) {
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
++                if (comp != null &&
++                    !(comp.peer instanceof LightweightPeer)) {
++                    if (comp instanceof Container) {
++                        comp = ((Container)comp).findComponentAtImpl(x - comp.x,
++                                                                     y - comp.y,
++                                                                     ignoreEnabled);
++                    } else {
++                        comp = comp.locate(x - comp.x, y - comp.y);
++                    }
++                    if (comp != null && comp.visible &&
++                        (ignoreEnabled || comp.enabled))
++                        {
++                            return comp;
++                        }
+                 }
+             }
+-        }
+-        for (int i = 0 ; i < ncomponents ; i++) {
+-            Component comp = component[i];
+-            if (comp != null &&
+-                comp.peer instanceof LightweightPeer) {
+-                if (comp instanceof Container) {
+-                    comp = ((Container)comp).findComponentAtImpl(x - comp.x,
+-                                                             y - comp.y,
+-                                                             ignoreEnabled);
+-                } else {
+-                    comp = comp.locate(x - comp.x, y - comp.y);
+-                }
+-                if (comp != null && comp.visible &&
+-                    (ignoreEnabled || comp.enabled))
+-                {
+-                    return comp;
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
++                if (comp != null &&
++                    comp.peer instanceof LightweightPeer) {
++                    if (comp instanceof Container) {
++                        comp = ((Container)comp).findComponentAtImpl(x - comp.x,
++                                                                     y - comp.y,
++                                                                     ignoreEnabled);
++                    } else {
++                        comp = comp.locate(x - comp.x, y - comp.y);
++                    }
++                    if (comp != null && comp.visible &&
++                        (ignoreEnabled || comp.enabled))
++                        {
++                            return comp;
++                        }
+                 }
+             }
+         }
+@@ -2628,10 +2588,14 @@
+             if (! (peer instanceof LightweightPeer)) {
+                 dispatcher = new LightweightDispatcher(this);
+             }
+-            int ncomponents = this.ncomponents;
+-            Component component[] = this.component;
+-            for (int i = 0 ; i < ncomponents ; i++) {
+-                component[i].addNotify();
++
++            // We shouldn't use iterator because of the Swing menu
++            // implementation specifics:
++            // the menu is being assigned as a child to JLayeredPane
++            // instead of particular component so always affect
++            // collection of component if menu is becoming shown or hidden.
++            for (int i = 0; i < component.size(); i++) {
++                component.get(i).addNotify();
+             }
+             // Update stacking order if native platform allows
+             ContainerPeer cpeer = (ContainerPeer)peer;
+@@ -2654,21 +2618,25 @@
+      */
+     public void removeNotify() {
+         synchronized (getTreeLock()) {
+-            int ncomponents = this.ncomponents;
+-            Component component[] = this.component;
+-            for (int i = ncomponents - 1; i >= 0; i--) {
+-                if( component[i] != null ) {
++            // We shouldn't use iterator because of the Swing menu
++            // implementation specifics:
++            // the menu is being assigned as a child to JLayeredPane
++            // instead of particular component so always affect
++            // collection of component if menu is becoming shown or hidden.
++            for (int i = component.size()-1 ; i >= 0 ; i--) {
++                Component comp = component.get(i);
++                if (comp != null) {
+                     // Fix for 6607170.
+                     // We want to suppress focus change on disposal
+                     // of the focused component. But because of focus
+                     // is asynchronous, we should suppress focus change
+                     // on every component in case it receives native focus
+                     // in the process of disposal.
+-                    component[i].setAutoFocusTransferOnDisposal(false);
+-                    component[i].removeNotify();
+-                    component[i].setAutoFocusTransferOnDisposal(true);
+-                }
+-            }
++                    comp.setAutoFocusTransferOnDisposal(false);
++                    comp.removeNotify();
++                    comp.setAutoFocusTransferOnDisposal(true);
++                 }
++             }
+             // If some of the children had focus before disposal then it still has.
+             // Auto-transfer focus to the next (or previous) component if auto-transfer
+             // is enabled.
+@@ -2679,7 +2647,7 @@
+             }
+             if ( dispatcher != null ) {
+                 dispatcher.dispose();
+-        dispatcher = null;
++                dispatcher = null;
+             }
+             super.removeNotify();
+         }
+@@ -2869,12 +2837,12 @@
+      */
+     public void list(PrintStream out, int indent) {
+         super.list(out, indent);
+-        int ncomponents = this.ncomponents;
+-        Component component[] = this.component;
+-        for (int i = 0 ; i < ncomponents ; i++) {
+-            Component comp = component[i];
+-            if (comp != null) {
+-                comp.list(out, indent+1);
++        synchronized(getTreeLock()) {
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
++                if (comp != null) {
++                    comp.list(out, indent+1);
++                }
+             }
+         }
+     }
+@@ -2895,12 +2863,12 @@
+      */
+     public void list(PrintWriter out, int indent) {
+         super.list(out, indent);
+-        int ncomponents = this.ncomponents;
+-        Component component[] = this.component;
+-        for (int i = 0 ; i < ncomponents ; i++) {
+-            Component comp = component[i];
+-            if (comp != null) {
+-                comp.list(out, indent+1);
++        synchronized(getTreeLock()) {
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
++                if (comp != null) {
++                    comp.list(out, indent+1);
++                }
+             }
+         }
+     }
+@@ -3410,9 +3378,11 @@
+      */
+     public void applyComponentOrientation(ComponentOrientation o) {
+         super.applyComponentOrientation(o);
+-
+-        for (int i = 0 ; i < ncomponents ; ++i) {
+-             component[i].applyComponentOrientation(o);
++        synchronized (getTreeLock()) {
++            for (int i = 0; i < component.size(); i++) {
++                Component comp = component.get(i);
++                comp.applyComponentOrientation(o);
++            }
+         }
+     }
+ 
+@@ -3530,8 +3500,8 @@
+      */
+     private void writeObject(ObjectOutputStream s) throws IOException {
+         ObjectOutputStream.PutField f = s.putFields();
+-        f.put("ncomponents", ncomponents);
+-        f.put("component", component);
++        f.put("ncomponents", component.size());
++        f.put("component", component.toArray(EMPTY_ARRAY));
+         f.put("layoutMgr", layoutMgr);
+         f.put("dispatcher", dispatcher);
+         f.put("maxSize", maxSize);
+@@ -3570,8 +3540,12 @@
+         throws ClassNotFoundException, IOException
+     {
+         ObjectInputStream.GetField f = s.readFields();
+-        ncomponents = f.get("ncomponents", 0);
+-        component = (Component[])f.get("component", new Component[0]);
++        Component [] tmpComponent = (Component[])f.get("component", EMPTY_ARRAY);
++        int ncomponents = (Integer) f.get("ncomponents", 0);
++        component = new java.util.ArrayList<Component>(ncomponents);
++        for (int i = 0; i < ncomponents; ++i) {
++            component.add(tmpComponent[i]);
++        }
+         layoutMgr = (LayoutManager)f.get("layoutMgr", null);
+         dispatcher = (LightweightDispatcher)f.get("dispatcher", null);
+         // Old stream. Doesn't contain maxSize among Component's fields.
+@@ -3581,16 +3555,14 @@
+         focusCycleRoot = f.get("focusCycleRoot", false);
+         containerSerializedDataVersion = f.get("containerSerializedDataVersion", 1);
+         focusTraversalPolicyProvider = f.get("focusTraversalPolicyProvider", false);
+-
+-        Component component[] = this.component;
+-        for(int i = 0; i < ncomponents; i++) {
+-            component[i].parent = this;
++        java.util.List<Component> component = this.component;
++        for(Component comp : component) {
++            comp.parent = this;
+             adjustListeningChildren(AWTEvent.HIERARCHY_EVENT_MASK,
+-                component[i].numListening(AWTEvent.HIERARCHY_EVENT_MASK));
++                                    comp.numListening(AWTEvent.HIERARCHY_EVENT_MASK));
+             adjustListeningChildren(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK,
+-                component[i].numListening(
+-                    AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK));
+-            adjustDescendants(component[i].countHierarchyMembers());
++                                    comp.numListening(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK));
++            adjustDescendants(comp.countHierarchyMembers());
+         }
+ 
+         Object keyOrNull;
+diff -r 04fd19f2a82d -r 5dab44569221 src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java	Tue Feb 01 17:59:02 2011 +0000
+@@ -135,8 +135,8 @@
+             found.value = true;
+         }
+ 
+-        for (int i = 0; i < aContainer.ncomponents; i++) {
+-            Component comp = aContainer.component[i];
++        for (int i = 0; i < aContainer.getComponentCount(); i++) {
++            Component comp = aContainer.getComponent(i);
+             if ((comp instanceof Container) &&
+                 !((Container)comp).isFocusCycleRoot()) {
+                 Component retval = null;
+@@ -242,8 +242,8 @@
+             return null;
+         }
+ 
+-        for (int i = aContainer.ncomponents - 1; i >= 0; i--) {
+-            Component comp = aContainer.component[i];
++        for (int i = aContainer.getComponentCount() - 1; i >= 0; i--) {
++            Component comp = aContainer.getComponent(i);
+             if (comp == aComponent) {
+                 found.value = true;
+             } else if ((comp instanceof Container) &&
+@@ -321,8 +321,8 @@
+                 return aContainer;
+             }
+ 
+-            for (int i = 0; i < aContainer.ncomponents; i++) {
+-                Component comp = aContainer.component[i];
++            for (int i = 0; i < aContainer.getComponentCount(); i++) {
++                Component comp = aContainer.getComponent(i);
+                 if (comp instanceof Container &&
+                     !((Container)comp).isFocusCycleRoot())
+                 {
+@@ -370,8 +370,8 @@
+                 return null;
+             }
+ 
+-            for (int i = aContainer.ncomponents - 1; i >= 0; i--) {
+-                Component comp = aContainer.component[i];
++            for (int i = aContainer.getComponentCount() - 1; i >= 0; i--) {
++                Component comp = aContainer.getComponent(i);
+                 if (comp instanceof Container &&
+                     !((Container)comp).isFocusCycleRoot())
+                 {
+diff -r 04fd19f2a82d -r 5dab44569221 src/share/classes/java/awt/ScrollPane.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/ScrollPane.java	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/ScrollPane.java	Tue Feb 01 17:59:02 2011 +0000
+@@ -354,7 +354,7 @@
+      */
+     public void setScrollPosition(int x, int y) {
+         synchronized (getTreeLock()) {
+-            if (ncomponents <= 0) {
++            if (getComponentCount()==0) {
+                 throw new NullPointerException("child is null");
+             }
+             hAdjustable.setValue(x);
+@@ -389,10 +389,12 @@
+      *     a child
+      */
+     public Point getScrollPosition() {
+-        if (ncomponents <= 0) {
+-            throw new NullPointerException("child is null");
++        synchronized (getTreeLock()) {
++            if (getComponentCount()==0) {
++                throw new NullPointerException("child is null");
++            }
++            return new Point(hAdjustable.getValue(), vAdjustable.getValue());
+         }
+-        return new Point(hAdjustable.getValue(), vAdjustable.getValue());
+     }
+ 
+     /**
+@@ -482,26 +484,27 @@
+      */
+     @Deprecated
+     public void layout() {
+-        if (ncomponents > 0) {
+-            Component c = getComponent(0);
+-            Point p = getScrollPosition();
+-            Dimension cs = calculateChildSize();
+-            Dimension vs = getViewportSize();
+-            Insets i = getInsets();
++        if (getComponentCount()==0) {
++            return;
++        }
++        Component c = getComponent(0);
++        Point p = getScrollPosition();
++        Dimension cs = calculateChildSize();
++        Dimension vs = getViewportSize();
++        Insets i = getInsets();
+ 
+-            c.reshape(i.left - p.x, i.top - p.y, cs.width, cs.height);
+-            ScrollPanePeer peer = (ScrollPanePeer)this.peer;
+-            if (peer != null) {
+-                peer.childResized(cs.width, cs.height);
+-            }
++        c.reshape(i.left - p.x, i.top - p.y, cs.width, cs.height);
++        ScrollPanePeer peer = (ScrollPanePeer)this.peer;
++        if (peer != null) {
++            peer.childResized(cs.width, cs.height);
++        }
+ 
+-            // update adjustables... the viewport size may have changed
+-            // with the scrollbars coming or going so the viewport size
+-            // is updated before the adjustables.
+-            vs = getViewportSize();
+-            hAdjustable.setSpan(0, cs.width, vs.width);
+-            vAdjustable.setSpan(0, cs.height, vs.height);
+-        }
++        // update adjustables... the viewport size may have changed
++        // with the scrollbars coming or going so the viewport size
++        // is updated before the adjustables.
++        vs = getViewportSize();
++        hAdjustable.setSpan(0, cs.width, vs.width);
++        vAdjustable.setSpan(0, cs.height, vs.height);
+     }
+ 
+     /**
+@@ -511,20 +514,21 @@
+      * @see Component#printAll
+      */
+     public void printComponents(Graphics g) {
+-        if (ncomponents > 0) {
+-            Component c = component[0];
+-            Point p = c.getLocation();
+-            Dimension vs = getViewportSize();
+-            Insets i = getInsets();
++        if (getComponentCount()==0) {
++            return;
++        }
++        Component c = getComponent(0);
++        Point p = c.getLocation();
++        Dimension vs = getViewportSize();
++        Insets i = getInsets();
+ 
+-            Graphics cg = g.create();
+-            try {
+-                cg.clipRect(i.left, i.top, vs.width, vs.height);
+-                cg.translate(p.x, p.y);
+-                c.printAll(cg);
+-            } finally {
+-                cg.dispose();
+-            }
++        Graphics cg = g.create();
++        try {
++            cg.clipRect(i.left, i.top, vs.width, vs.height);
++            cg.translate(p.x, p.y);
++            c.printAll(cg);
++        } finally {
++            cg.dispose();
+         }
+     }
+ 
+@@ -585,7 +589,7 @@
+             default:
+                 sdpStr = "invalid display policy";
+         }
+-        Point p = ncomponents > 0? getScrollPosition() : new Point(0,0);
++        Point p = (getComponentCount()>0)? getScrollPosition() : new Point(0,0);
+         Insets i = getInsets();
+         return super.paramString()+",ScrollPosition=("+p.x+","+p.y+")"+
+             ",Insets=("+i.top+","+i.left+","+i.bottom+","+i.right+")"+
+diff -r 04fd19f2a82d -r 5dab44569221 src/windows/native/sun/windows/awt_Container.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Container.cpp	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Container.cpp	Tue Feb 01 17:59:02 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 2000, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1998, 2008, 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
+@@ -30,8 +30,6 @@
+  * AwtContainer fields
+  */
+ 
+-jfieldID AwtContainer::ncomponentsID;
+-jfieldID AwtContainer::componentID;
+ jfieldID AwtContainer::layoutMgrID;
+ jmethodID AwtContainer::findComponentAtMID;
+ 
+@@ -45,18 +43,12 @@
+ Java_java_awt_Container_initIDs(JNIEnv *env, jclass cls) {
+     TRY;
+ 
+-    AwtContainer::ncomponentsID = env->GetFieldID(cls, "ncomponents", "I");
+-    AwtContainer::componentID =
+-        env->GetFieldID(cls, "component", "[Ljava/awt/Component;");
+-
+     AwtContainer::layoutMgrID =
+         env->GetFieldID(cls, "layoutMgr", "Ljava/awt/LayoutManager;");
+ 
+     AwtContainer::findComponentAtMID =
+         env->GetMethodID(cls, "findComponentAt", "(IIZ)Ljava/awt/Component;");
+ 
+-    DASSERT(AwtContainer::ncomponentsID != NULL);
+-    DASSERT(AwtContainer::componentID != NULL);
+     DASSERT(AwtContainer::layoutMgrID != NULL);
+     DASSERT(AwtContainer::findComponentAtMID);
+ 
+diff -r 04fd19f2a82d -r 5dab44569221 src/windows/native/sun/windows/awt_Container.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Container.h	Mon Jan 24 20:20:34 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Container.h	Tue Feb 01 17:59:02 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1998, 2008, 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
+@@ -37,8 +37,6 @@
+ public:
+ 
+     /* java.awt.Container field ids */
+-    static jfieldID ncomponentsID;
+-    static jfieldID componentID;
+     static jfieldID layoutMgrID;
+     static jmethodID findComponentAtMID;
+ 
+diff -r 04fd19f2a82d -r 5dab44569221 test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Container/CheckZOrderChange/CheckZOrderChange.java	Tue Feb 01 17:59:02 2011 +0000
+@@ -0,0 +1,71 @@
++/*
++ * Copyright (c) 2008, 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 %I% %E%
++   @bug 2161766
++   @summary Component is missing after changing the z-order of the component & focus is not transfered in
++   @author  Andrei Dmitriev : area=awt.container
++   @run main CheckZOrderChange
++*/
++import java.awt.*;
++import java.awt.event.*;
++
++public class CheckZOrderChange {
++
++    private static Button content[] = new Button[]{new Button("Button 1"), new Button("Button 2"), new Button("Button 3"), new Button("Button 4")};
++    private static Frame frame;
++
++    public static void main(String[] args) {
++
++        frame = new Frame("Test Frame");
++        frame.setLayout(new FlowLayout());
++
++        for (Button b: content){
++            frame.add(b);
++        }
++
++        frame.setSize(300, 300);
++        frame.setVisible(true);
++
++        /* INITIAL ZORDERS ARE*/
++        for (Button b: content){
++            System.out.println("frame.getComponentZOrder("+ b +") = " + frame.getComponentZOrder(b));
++        }
++
++        //Change the Z Order
++        frame.setComponentZOrder(content[0], 2);
++        System.out.println("ZOrder of button1 changed to 2");
++
++        if (frame.getComponentZOrder(content[0]) != 2 ||
++            frame.getComponentZOrder(content[1]) != 0 ||
++            frame.getComponentZOrder(content[2]) != 1 ||
++            frame.getComponentZOrder(content[3]) != 3)
++        {
++            for (Button b: content){
++                System.out.println("frame.getComponentZOrder("+ b +") = " + frame.getComponentZOrder(b));
++            }
++            throw new RuntimeException("TEST FAILED: getComponentZOrder did not return the correct value");
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6633275-shaped_translucent_windows.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,6255 @@
+diff -Nru openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk openjdk/jdk/make/sun/awt/FILES_c_windows.gmk
+--- openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/awt/FILES_c_windows.gmk	2011-02-16 01:27:24.988327481 +0000
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1997, 2009, 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
+@@ -104,7 +104,8 @@
+         OGLVertexCache.c \
+         WGLGraphicsConfig.c \
+         WGLSurfaceData.c \
+-        AccelGlyphCache.c
++        AccelGlyphCache.c \
++        rect.c
+ 
+ FILES_cpp = \
+ 	CmdIDList.cpp \
+diff -Nru openjdk.orig/jdk/make/sun/awt/make.depend openjdk/jdk/make/sun/awt/make.depend
+--- openjdk.orig/jdk/make/sun/awt/make.depend	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/awt/make.depend	2011-02-16 01:27:25.000326551 +0000
+@@ -16,7 +16,7 @@
+ 
+ $(OBJDIR)/awt_AWTEvent.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_BitmapUtil.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_BitmapUtil.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/awt_Brush.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+@@ -32,7 +32,7 @@
+ 
+ $(OBJDIR)/awt_Color.obj::	$(CLASSHDRDIR)/sun_awt_windows_WColor.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Color.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Component.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Color.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_MouseWheelEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPanelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Component.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Color.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_MouseWheelEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPanelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/awt_Container.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+@@ -150,9 +150,9 @@
+ 
+ $(OBJDIR)/awt_Window.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Container.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_ComponentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/Blit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_Blit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Blit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_Blit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/BlitBg.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_BlitBg.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/BlitBg.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_BlitBg.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/BufferedMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedMaskBlit.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+@@ -246,11 +246,11 @@
+ 
+ $(OBJDIR)/GDIRenderer.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/GDIWindowSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIWindowSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/GDIWindowSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIWindowSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h 
+ 
+ $(OBJDIR)/gifdecoder.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/GraphicsPrimitiveMgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_GraphicsPrimitiveMgr.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/GraphicsPrimitiveMgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_GraphicsPrimitiveMgr.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/Hashtable.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+@@ -278,7 +278,7 @@
+ 
+ $(OBJDIR)/IntRgbx.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/IntRgbx.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/MaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/MaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/MaskFill.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+@@ -290,7 +290,7 @@
+ 
+ $(OBJDIR)/OGLBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/OGLFuncs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+@@ -312,11 +312,11 @@
+ 
+ $(OBJDIR)/ProcessPath.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Region.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/Region.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/RenderBuffer.obj::	$(CLASSHDRDIR)/sun_java2d_pipe_RenderBuffer.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/ScaledBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_ScaledBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/ScaledBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_ScaledBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/ShapeSpanIterator.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_java2d_pipe_ShapeSpanIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/PathConsumer2D.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+@@ -332,7 +332,7 @@
+ 
+ $(OBJDIR)/Trace.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/TransformHelper.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_loops_TransformHelper.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/TransformHelper.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_loops_TransformHelper.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
+ 
+ $(OBJDIR)/UnicowsLoader.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+diff -Nru openjdk.orig/jdk/make/sun/awt/Makefile openjdk/jdk/make/sun/awt/Makefile
+--- openjdk.orig/jdk/make/sun/awt/Makefile	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/awt/Makefile	2011-02-16 01:27:24.996326861 +0000
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1995, 2009, 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
+@@ -224,6 +224,7 @@
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/shell
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/medialib
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/debug
++vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/utility
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/../java2d
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/../java2d/loops
+ vpath %.c   $(SHARE_SRC)/native/$(PKGDIR)/../java2d/pipe
+diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers openjdk/jdk/make/sun/awt/mapfile-mawt-vers
+--- openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	2011-02-16 01:27:25.000326551 +0000
+@@ -291,6 +291,7 @@
+ 		Java_sun_awt_X11GraphicsConfig_createBackBuffer;
+ 		Java_sun_awt_X11GraphicsConfig_destroyBackBuffer;
+ 		Java_sun_awt_X11GraphicsConfig_swapBuffers;
++                Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable;
+ 		Java_sun_awt_X11GraphicsDevice_isDBESupported;
+ 		Java_sun_awt_X11GraphicsDevice_getDisplay;
+ 		Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux openjdk/jdk/make/sun/awt/mapfile-vers-linux
+--- openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-vers-linux	2011-02-16 01:27:25.000326551 +0000
+@@ -406,6 +406,7 @@
+ 		Java_sun_awt_X11GraphicsConfig_getNumColors;
+ 		Java_sun_awt_X11GraphicsConfig_getXResolution;
+ 		Java_sun_awt_X11GraphicsConfig_getYResolution;
++                Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable;
+ 		Java_sun_awt_X11GraphicsDevice_isDBESupported;
+ 		Java_sun_awt_X11GraphicsDevice_getDisplay;
+ 		Java_sun_awt_X11GraphicsDevice_getDoubleBufferVisuals;
+diff -Nru openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
+--- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	2011-02-16 01:27:25.000326551 +0000
+@@ -216,6 +216,7 @@
+         Java_sun_awt_X11GraphicsConfig_createBackBuffer;
+ 	Java_sun_awt_X11GraphicsConfig_destroyBackBuffer;
+ 	Java_sun_awt_X11GraphicsConfig_swapBuffers;
++	Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable;
+         Java_java_awt_Insets_initIDs;
+         Java_java_awt_KeyboardFocusManager_initIDs;
+         Java_java_awt_Font_initIDs;
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/awt/AWTUtilities.java openjdk/jdk/src/share/classes/com/sun/awt/AWTUtilities.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/awt/AWTUtilities.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/com/sun/awt/AWTUtilities.java	2011-02-16 01:27:25.000326551 +0000
+@@ -26,17 +26,37 @@
+ package com.sun.awt;
+ 
+ import java.awt.*;
+-import sun.awt.AWTAccessor;
+ 
++import sun.awt.AWTAccessor;
++import sun.awt.SunToolkit;
+ 
+ /**
+  * A collection of utility methods for AWT.
+  *
+  * The functionality provided by the static methods of the class includes:
+  * <ul>
++ * <li>Setting shapes on top-level windows
++ * <li>Setting a constant alpha value for each pixel of a top-level window
++ * <li>Making a window non-opaque, after that it paints only explicitly
++ * painted pixels on the screen, with arbitrary alpha values for every pixel.
+  * <li>Setting a 'mixing-cutout' shape for a component.
+  * </ul>
+  * <p>
++ * A "top-level window" is an instance of the {@code Window} class (or its
++ * descendant, such as {@code JFrame}).
++ * <p>
++ * Some of the mentioned features may not be supported by the native platform.
++ * To determine whether a particular feature is supported, the user must use
++ * the {@code isTranslucencySupported()} method of the class passing a desired
++ * translucency kind (a member of the {@code Translucency} enum) as an
++ * argument.
++ * <p>
++ * The per-pixel alpha feature also requires the user to create her/his
++ * windows using a translucency-capable graphics configuration.
++ * The {@code isTranslucencyCapable()} method must
++ * be used to verify whether any given GraphicsConfiguration supports
++ * the trasnlcency effects.
++ * <p>
+  * <b>WARNING</b>: This class is an implementation detail and only meant
+  * for limited use outside of the core platform. This API may change
+  * drastically between update release, and it may even be
+@@ -50,6 +70,344 @@
+     private AWTUtilities() {
+     }
+ 
++    /** Kinds of translucency supported by the underlying system.
++     *  @see #isTranslucencySupported
++     */
++    public static enum Translucency {
++        /**
++         * Represents support in the underlying system for windows each pixel
++         * of which is guaranteed to be either completely opaque, with
++         * an alpha value of 1.0, or completely transparent, with an alpha
++         * value of 0.0.
++         */
++        PERPIXEL_TRANSPARENT,
++
++        /**
++         * Represents support in the underlying system for windows all of
++         * the pixels of which have the same alpha value between or including
++         * 0.0 and 1.0.
++         */
++        TRANSLUCENT,
++
++        /**
++         * Represents support in the underlying system for windows that
++         * contain or might contain pixels with arbitrary alpha values
++         * between and including 0.0 and 1.0.
++         */
++        PERPIXEL_TRANSLUCENT;
++    }
++
++
++    /**
++     * Returns whether the given level of translucency is supported by
++     * the underlying system.
++     *
++     * Note that this method may sometimes return the value
++     * indicating that the particular level is supported, but
++     * the native windowing system may still not support the
++     * given level of translucency (due to the bugs in
++     * the windowing system).
++     *
++     * @param translucencyKind a kind of translucency support
++     *                         (either PERPIXEL_TRANSPARENT,
++     *                         TRANSLUCENT, or PERPIXEL_TRANSLUCENT)
++     * @return whether the given translucency kind is supported
++     */
++    public static boolean isTranslucencySupported(Translucency translucencyKind) {
++        switch (translucencyKind) {
++            case PERPIXEL_TRANSPARENT:
++                return isWindowShapingSupported();
++            case TRANSLUCENT:
++                return isWindowOpacitySupported();
++            case PERPIXEL_TRANSLUCENT:
++                return isWindowTranslucencySupported();
++        }
++        return false;
++    }
++
++
++    /**
++     * Returns whether the windowing system supports changing the opacity
++     * value of top-level windows.
++     * Note that this method may sometimes return true, but the native
++     * windowing system may still not support the concept of
++     * translucency (due to the bugs in the windowing system).
++     */
++    private static boolean isWindowOpacitySupported() {
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        return ((SunToolkit)curToolkit).isWindowOpacitySupported();
++    }
++
++    /**
++     * Set the opacity of the window. The opacity is at the range [0..1].
++     * Note that setting the opacity level of 0 may or may not disable
++     * the mouse event handling on this window. This is
++     * a platform-dependent behavior.
++     *
++     * In order for this method to enable the translucency effect,
++     * the isTranslucencySupported() method should indicate that the
++     * TRANSLUCENT level of translucency is supported.
++     *
++     * <p>Also note that the window must not be in the full-screen mode
++     * when setting the opacity value &lt; 1.0f. Otherwise
++     * the IllegalArgumentException is thrown.
++     *
++     * @param window the window to set the opacity level to
++     * @param opacity the opacity level to set to the window
++     * @throws NullPointerException if the window argument is null
++     * @throws IllegalArgumentException if the opacity is out of
++     *                                  the range [0..1]
++     * @throws IllegalArgumentException if the window is in full screen mode,
++     *                                  and the opacity is less than 1.0f
++     * @throws UnsupportedOperationException if the TRANSLUCENT translucency
++     *                                       kind is not supported
++     */
++    public static void setWindowOpacity(Window window, float opacity) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++
++        AWTAccessor.getWindowAccessor().setOpacity(window, opacity);
++    }
++
++    /**
++     * Get the opacity of the window. If the opacity has not
++     * yet being set, this method returns 1.0.
++     *
++     * @param window the window to get the opacity level from
++     * @throws NullPointerException if the window argument is null
++     */
++    public static float getWindowOpacity(Window window) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++
++        return AWTAccessor.getWindowAccessor().getOpacity(window);
++    }
++
++    /**
++     * Returns whether the windowing system supports changing the shape
++     * of top-level windows.
++     * Note that this method may sometimes return true, but the native
++     * windowing system may still not support the concept of
++     * shaping (due to the bugs in the windowing system).
++     */
++    public static boolean isWindowShapingSupported() {
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        return ((SunToolkit)curToolkit).isWindowShapingSupported();
++    }
++
++    /**
++     * Returns an object that implements the Shape interface and represents
++     * the shape previously set with the call to the setWindowShape() method.
++     * If no shape has been set yet, or the shape has been reset to null,
++     * this method returns null.
++     *
++     * @param window the window to get the shape from
++     * @return the current shape of the window
++     * @throws NullPointerException if the window argument is null
++     */
++    public static Shape getWindowShape(Window window) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++        return AWTAccessor.getWindowAccessor().getShape(window);
++    }
++
++    /**
++     * Sets a shape for the given window.
++     * If the shape argument is null, this methods restores
++     * the default shape making the window rectangular.
++     * <p>Note that in order to set a shape, the window must be undecorated.
++     * If the window is decorated, this method ignores the {@code shape}
++     * argument and resets the shape to null.
++     * <p>Also note that the window must not be in the full-screen mode
++     * when setting a non-null shape. Otherwise the IllegalArgumentException
++     * is thrown.
++     * <p>Depending on the platform, the method may return without
++     * effecting the shape of the window if the window has a non-null warning
++     * string ({@link Window#getWarningString()}). In this case the passed
++     * shape object is ignored.
++     *
++     * @param window the window to set the shape to
++     * @param shape the shape to set to the window
++     * @throws NullPointerException if the window argument is null
++     * @throws IllegalArgumentException if the window is in full screen mode,
++     *                                  and the shape is not null
++     * @throws UnsupportedOperationException if the PERPIXEL_TRANSPARENT
++     *                                       translucency kind is not supported
++     */
++    public static void setWindowShape(Window window, Shape shape) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++        AWTAccessor.getWindowAccessor().setShape(window, shape);
++    }
++
++    private static boolean isWindowTranslucencySupported() {
++        /*
++         * Per-pixel alpha is supported if all the conditions are TRUE:
++         *    1. The toolkit is a sort of SunToolkit
++         *    2. The toolkit supports translucency in general
++         *        (isWindowTranslucencySupported())
++         *    3. There's at least one translucency-capable
++         *        GraphicsConfiguration
++         */
++
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++
++        if (!((SunToolkit)curToolkit).isWindowTranslucencySupported()) {
++            return false;
++        }
++
++        GraphicsEnvironment env =
++            GraphicsEnvironment.getLocalGraphicsEnvironment();
++
++        // If the default GC supports translucency return true.
++        // It is important to optimize the verification this way,
++        // see CR 6661196 for more details.
++        if (isTranslucencyCapable(env.getDefaultScreenDevice()
++                    .getDefaultConfiguration()))
++        {
++            return true;
++        }
++
++        // ... otherwise iterate through all the GCs.
++        GraphicsDevice[] devices = env.getScreenDevices();
++
++        for (int i = 0; i < devices.length; i++) {
++            GraphicsConfiguration[] configs = devices[i].getConfigurations();
++            for (int j = 0; j < configs.length; j++) {
++                if (isTranslucencyCapable(configs[j])) {
++                    return true;
++                }
++            }
++        }
++
++        return false;
++    }
++
++    /**
++     * Enables the per-pixel alpha support for the given window.
++     * Once the window becomes non-opaque (the isOpaque is set to false),
++     * the drawing sub-system is starting to respect the alpha value of each
++     * separate pixel. If a pixel gets painted with alpha color component
++     * equal to zero, it becomes visually transparent, if the alpha of the
++     * pixel is equal to 255, the pixel is fully opaque. Interim values
++     * of the alpha color component make the pixel semi-transparent (i.e.
++     * translucent).
++     * <p>Note that in order for the window to support the per-pixel alpha
++     * mode, the window must be created using the GraphicsConfiguration
++     * for which the {@link #isTranslucencyCapable}
++     * method returns true.
++     * <p>Also note that some native systems enable the per-pixel translucency
++     * mode for any window created using the translucency-compatible
++     * graphics configuration. However, it is highly recommended to always
++     * invoke the setWindowOpaque() method for these windows, at least for
++     * the sake of cross-platform compatibility reasons.
++     * <p>Also note that the window must not be in the full-screen mode
++     * when making it non-opaque. Otherwise the IllegalArgumentException
++     * is thrown.
++     * <p>If the window is a {@code Frame} or a {@code Dialog}, the window must
++     * be undecorated prior to enabling the per-pixel translucency effect (see
++     * {@link Frame#setUndecorated()} and/or {@link Dialog#setUndecorated()}).
++     * If the window becomes decorated through a subsequent call to the
++     * corresponding {@code setUndecorated()} method, the per-pixel
++     * translucency effect will be disabled and the opaque property reset to
++     * {@code true}.
++     * <p>Depending on the platform, the method may return without
++     * effecting the opaque property of the window if the window has a non-null
++     * warning string ({@link Window#getWarningString()}). In this case
++     * the passed 'isOpaque' value is ignored.
++     *
++     * @param window the window to set the shape to
++     * @param isOpaque whether the window must be opaque (true),
++     *                 or translucent (false)
++     * @throws NullPointerException if the window argument is null
++     * @throws IllegalArgumentException if the window uses
++     *                                  a GraphicsConfiguration for which the
++     *                                  {@code isTranslucencyCapable()}
++     *                                  method returns false
++     * @throws IllegalArgumentException if the window is in full screen mode,
++     *                                  and the isOpaque is false
++     * @throws IllegalArgumentException if the window is decorated and the
++     * isOpaque argument is {@code false}.
++     * @throws UnsupportedOperationException if the PERPIXEL_TRANSLUCENT
++     *                                       translucency kind is not supported
++     */
++    public static void setWindowOpaque(Window window, boolean isOpaque) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++        if (!isOpaque && !isTranslucencySupported(Translucency.PERPIXEL_TRANSLUCENT)) {
++            throw new UnsupportedOperationException(
++                    "The PERPIXEL_TRANSLUCENT translucency kind is not supported");
++        }
++        AWTAccessor.getWindowAccessor().setOpaque(window, isOpaque);
++    }
++
++    /**
++     * Returns whether the window is opaque or translucent.
++     *
++     * @param window the window to set the shape to
++     * @return whether the window is currently opaque (true)
++     *         or translucent (false)
++     * @throws NullPointerException if the window argument is null
++     */
++    public static boolean isWindowOpaque(Window window) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++
++        return AWTAccessor.getWindowAccessor().isOpaque(window);
++    }
++
++    /**
++     * Verifies whether a given GraphicsConfiguration supports
++     * the PERPIXEL_TRANSLUCENT kind of translucency.
++     * All windows that are intended to be used with the {@link #setWindowOpaque}
++     * method must be created using a GraphicsConfiguration for which this method
++     * returns true.
++     * <p>Note that some native systems enable the per-pixel translucency
++     * mode for any window created using a translucency-capable
++     * graphics configuration. However, it is highly recommended to always
++     * invoke the setWindowOpaque() method for these windows, at least
++     * for the sake of cross-platform compatibility reasons.
++     *
++     * @param gc GraphicsConfiguration
++     * @throws NullPointerException if the gc argument is null
++     * @return whether the given GraphicsConfiguration supports
++     *         the translucency effects.
++     */
++    public static boolean isTranslucencyCapable(GraphicsConfiguration gc) {
++        if (gc == null) {
++            throw new NullPointerException("The gc argument should not be null");
++        }
++        /*
++        return gc.isTranslucencyCapable();
++        */
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        return ((SunToolkit)curToolkit).isTranslucencyCapable(gc);
++    }
++
+     /**
+      * Sets a 'mixing-cutout' shape for the given component.
+      *
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Component.java openjdk/jdk/src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	2011-02-16 02:00:18.147235768 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2009, 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
+@@ -806,18 +806,27 @@
+             }
+     }
+ 
+-    static {
+-        AWTAccessor.setComponentAccessor(new AWTAccessor.ComponentAccessor() {
+-                public AccessControlContext getAccessControlContext(Component comp) {
+-                    return comp.getAccessControlContext();
+-                }
+-
+-            });
+-    }
+-
++    // Whether this Component has had the background erase flag
++    // specified via SunToolkit.disableBackgroundErase(). This is
++    // needed in order to make this function work on X11 platforms,
++    // where currently there is no chance to interpose on the creation
++    // of the peer and therefore the call to XSetBackground.
++    transient boolean backgroundEraseDisabled;
+ 
+     static {
+         AWTAccessor.setComponentAccessor(new AWTAccessor.ComponentAccessor() {
++            public AccessControlContext getAccessControlContext(Component comp) {
++                return comp.getAccessControlContext();
++            }
++            public void setBackgroundEraseDisabled(Component comp, boolean disabled) {
++                comp.backgroundEraseDisabled = disabled;
++            }
++            public boolean getBackgroundEraseDisabled(Component comp) {
++                return comp.backgroundEraseDisabled;
++            }
++            public Rectangle getBounds(Component comp) {
++                return new Rectangle(comp.x, comp.y, comp.width, comp.height);
++            }
+             public void setMixingCutoutShape(Component comp, Shape shape) {
+                 Region region = shape == null ?  null :
+                     Region.getInstance(shape, null);
+@@ -7454,7 +7463,7 @@
+             // sometimes most recent focus owner may be null, but focus owner is not
+             // e.g. we reset most recent focus owner if user removes focus owner
+             focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
+-            if (focusOwner != null && getContainingWindow(focusOwner) != window) {
++            if (focusOwner != null && focusOwner.getContainingWindow() != window) {
+                 focusOwner = null;
+             }
+         }
+@@ -8685,30 +8694,8 @@
+      *         null, if component is not a part of window hierarchy
+      */
+     Window getContainingWindow() {
+-        return getContainingWindow(this);
++        return SunToolkit.getContainingWindow(this);
+     }
+-    /**
+-     * Returns the <code>Window</code> ancestor of the component <code>comp</code>.
+-     * @return Window ancestor of the component or component by itself if it is Window;
+-     *         null, if component is not a part of window hierarchy
+-     */
+-    static Window getContainingWindow(Component comp) {
+-        while (comp != null && !(comp instanceof Window)) {
+-            comp = comp.getParent();
+-        }
+-
+-        return (Window)comp;
+-    }
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+ 
+     /**
+      * Initialize JNI field and method IDs
+@@ -9823,4 +9810,29 @@
+     }
+ 
+     // ****************** END OF MIXING CODE ********************************
++
++    private static boolean doesClassImplement(Class cls, String interfaceName) {
++        if (cls == null) return false;
++
++        for (Class c : cls.getInterfaces()) {
++            if (c.getName().equals(interfaceName)) {
++                return true;
++            }
++        }
++        return doesClassImplement(cls.getSuperclass(), interfaceName);
++    }
++
++    /**
++     * Checks that the given object implements the given interface.
++     * @param obj Object to be checked
++     * @param interfaceName The name of the interface. Must be fully-qualified interface name.
++     * @return true, if this object implements the given interface,
++     *         false, otherwise, or if obj or interfaceName is null
++     */
++    static boolean doesImplement(Object obj, String interfaceName) {
++        if (obj == null) return false;
++        if (interfaceName == null) return false;
++
++        return doesClassImplement(obj.getClass(), interfaceName);
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Container.java openjdk/jdk/src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	2011-02-16 01:27:25.004326241 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2009, 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
+@@ -167,6 +167,9 @@
+     transient int listeningBoundsChildren;
+     transient int descendantsCount;
+ 
++    /* Non-opaque window support -- see Window.setLayersOpaque */
++    transient Color preserveBackgroundColor = null;
++
+     /**
+      * JDK 1.1 serialVersionUID
+      */
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java openjdk/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	2011-02-16 01:27:25.004326241 +0000
+@@ -480,7 +480,7 @@
+                 // that a Component outside of the focused Window receives a
+                 // FOCUS_GAINED event. We synthesize a WINDOW_GAINED_FOCUS
+                 // event in that case.
+-                final Window newFocusedWindow = Component.getContainingWindow(newFocusOwner);
++                final Window newFocusedWindow = SunToolkit.getContainingWindow(newFocusOwner);
+                 final Window currentFocusedWindow = getGlobalFocusedWindow();
+                 if (newFocusedWindow != null &&
+                     newFocusedWindow != currentFocusedWindow)
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/GraphicsConfiguration.java openjdk/jdk/src/share/classes/java/awt/GraphicsConfiguration.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/GraphicsConfiguration.java	2011-01-20 23:54:13.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/GraphicsConfiguration.java	2011-02-16 01:27:25.004326241 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -428,4 +428,20 @@
+         }
+         return defaultImageCaps;
+     }
++
++    /**
++     * Returns whether this GraphicsConfiguration supports
++     * the {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
++     * PERPIXEL_TRANSLUCENT} kind of translucency.
++     *
++     * @param gc GraphicsConfiguration
++     * @throws NullPointerException if the gc argument is null
++     * @return whether the given GraphicsConfiguration supports
++     *         the translucency effects.
++     * @see Window#setBackground(Color)
++     */
++    /*public */boolean isTranslucencyCapable() {
++        // Overridden in subclasses
++        return false;
+     }
++}
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/GraphicsDevice.java openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/GraphicsDevice.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java	2011-02-16 01:27:25.004326241 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -27,7 +27,10 @@
+ package java.awt;
+ 
+ import java.awt.image.ColorModel;
++
++import sun.awt.AWTAccessor;
+ import sun.awt.AppContext;
++import sun.awt.SunToolkit;
+ 
+ /**
+  * The <code>GraphicsDevice</code> class describes the graphics devices
+@@ -109,6 +112,31 @@
+      */
+     public final static int TYPE_IMAGE_BUFFER           = 2;
+ 
++    /** Kinds of translucency supported by the underlying system.
++     *  @see #isTranslucencySupported
++     */
++    /*public */static enum WindowTranslucency {
++        /**
++         * Represents support in the underlying system for windows each pixel
++         * of which is guaranteed to be either completely opaque, with
++         * an alpha value of 1.0, or completely transparent, with an alpha
++         * value of 0.0.
++         */
++        PERPIXEL_TRANSPARENT,
++        /**
++         * Represents support in the underlying system for windows all of
++         * the pixels of which have the same alpha value between or including
++         * 0.0 and 1.0.
++         */
++        TRANSLUCENT,
++        /**
++         * Represents support in the underlying system for windows that
++         * contain or might contain pixels with arbitrary alpha values
++         * between and including 0.0 and 1.0.
++         */
++        PERPIXEL_TRANSLUCENT;
++    }
++
+     /**
+      * Returns the type of this <code>GraphicsDevice</code>.
+      * @return the type of this <code>GraphicsDevice</code>, which can
+@@ -235,6 +263,21 @@
+      * @since 1.4
+      */
+     public void setFullScreenWindow(Window w) {
++        if (w != null) {
++            //XXX: The actions should be documented in some non-update release.
++            /*
++            if (w.getShape() != null) {
++                w.setShape(w, null);
++            }
++            if (!w.isOpaque()) {
++                w.setOpaque(false);
++            }
++            if (w.getOpacity() < 1.0f) {
++                w.setOpacity(1.0f);
++            }
++            */
++        }
++
+         if (fullScreenWindow != null && windowedModeBounds != null) {
+             // if the window went into fs mode before it was realized it may
+             // have (0,0) dimensions
+@@ -424,4 +467,94 @@
+     public int getAvailableAcceleratedMemory() {
+         return -1;
+     }
++
++    /**
++     * Returns whether the given level of translucency is supported
++     * this graphics device.
++     *
++     * @param translucencyKind a kind of translucency support
++     * @return whether the given translucency kind is supported
++     */
++    /*public */boolean isWindowTranslucencySupported(WindowTranslucency translucencyKind) {
++        switch (translucencyKind) {
++            case PERPIXEL_TRANSPARENT:
++                return isWindowShapingSupported();
++            case TRANSLUCENT:
++                return isWindowOpacitySupported();
++            case PERPIXEL_TRANSLUCENT:
++                return isWindowPerpixelTranslucencySupported();
++        }
++        return false;
++    }
++
++    /**
++     * Returns whether the windowing system supports changing the shape
++     * of top-level windows.
++     * Note that this method may sometimes return true, but the native
++     * windowing system may still not support the concept of
++     * shaping (due to the bugs in the windowing system).
++     */
++    static boolean isWindowShapingSupported() {
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        return ((SunToolkit)curToolkit).isWindowShapingSupported();
++    }
++
++    /**
++     * Returns whether the windowing system supports changing the opacity
++     * value of top-level windows.
++     * Note that this method may sometimes return true, but the native
++     * windowing system may still not support the concept of
++     * translucency (due to the bugs in the windowing system).
++     */
++    static boolean isWindowOpacitySupported() {
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        return ((SunToolkit)curToolkit).isWindowOpacitySupported();
++    }
++
++    boolean isWindowPerpixelTranslucencySupported() {
++        /*
++         * Per-pixel alpha is supported if all the conditions are TRUE:
++         *    1. The toolkit is a sort of SunToolkit
++         *    2. The toolkit supports translucency in general
++         *        (isWindowTranslucencySupported())
++         *    3. There's at least one translucency-capable
++         *        GraphicsConfiguration
++         */
++        Toolkit curToolkit = Toolkit.getDefaultToolkit();
++        if (!(curToolkit instanceof SunToolkit)) {
++            return false;
++        }
++        if (!((SunToolkit)curToolkit).isWindowTranslucencySupported()) {
++            return false;
++        }
++
++        // TODO: cache translucency capable GC
++        return getTranslucencyCapableGC() != null;
++    }
++
++    GraphicsConfiguration getTranslucencyCapableGC() {
++        // If the default GC supports translucency return true.
++        // It is important to optimize the verification this way,
++        // see CR 6661196 for more details.
++        GraphicsConfiguration defaultGC = getDefaultConfiguration();
++        if (defaultGC.isTranslucencyCapable()) {
++            return defaultGC;
++        }
++
++        // ... otherwise iterate through all the GCs.
++        GraphicsConfiguration[] configs = getConfigurations();
++        for (int j = 0; j < configs.length; j++) {
++            if (configs[j].isTranslucencyCapable()) {
++                return configs[j];
++            }
++        }
++
++        return null;
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/KeyboardFocusManager.java openjdk/jdk/src/share/classes/java/awt/KeyboardFocusManager.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	2011-02-16 01:27:25.004326241 +0000
+@@ -2210,7 +2210,7 @@
+                                                   boolean temporary, boolean focusedWindowChangeAllowed,
+                                                   long time)
+     {
+-        Window parentWindow = Component.getContainingWindow(heavyweight);
++        Window parentWindow = SunToolkit.getContainingWindow(heavyweight);
+         if (parentWindow == null || !parentWindow.syncLWRequests) {
+             return false;
+         }
+@@ -2544,7 +2544,7 @@
+                 (HeavyweightFocusRequest.CLEAR_GLOBAL_FOCUS_OWNER);
+ 
+             Component activeWindow = ((hwFocusRequest != null)
+-                ? Component.getContainingWindow(hwFocusRequest.heavyweight)
++                ? SunToolkit.getContainingWindow(hwFocusRequest.heavyweight)
+                 : nativeFocusedWindow);
+             while (activeWindow != null &&
+                    !((activeWindow instanceof Frame) ||
+@@ -3015,8 +3015,8 @@
+     }
+ 
+     private static boolean focusedWindowChanged(Component to, Component from) {
+-        Window wto = Component.getContainingWindow(to);
+-        Window wfrom = Component.getContainingWindow(from);
++        Window wto = SunToolkit.getContainingWindow(to);
++        Window wfrom = SunToolkit.getContainingWindow(from);
+         if (wto == null && wfrom == null) {
+             return true;
+         }
+@@ -3030,8 +3030,8 @@
+     }
+ 
+     private static boolean isTemporary(Component to, Component from) {
+-        Window wto = Component.getContainingWindow(to);
+-        Window wfrom = Component.getContainingWindow(from);
++        Window wto = SunToolkit.getContainingWindow(to);
++        Window wfrom = SunToolkit.getContainingWindow(from);
+         if (wto == null && wfrom == null) {
+             return false;
+         }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/peer/WindowPeer.java openjdk/jdk/src/share/classes/java/awt/peer/WindowPeer.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/peer/WindowPeer.java	2011-01-20 23:54:15.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/peer/WindowPeer.java	2011-02-16 01:27:25.004326241 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2009, 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
+@@ -27,6 +27,8 @@
+ 
+ import java.awt.*;
+ 
++import java.awt.image.BufferedImage;
++
+ /**
+  * The peer interfaces are intended only for use in porting
+  * the AWT. They are not intended for use by application
+@@ -43,4 +45,26 @@
+     void setModalBlocked(Dialog blocker, boolean blocked);
+     void updateMinimumSize();
+     void updateIconImages();
++
++    /**
++     * Sets the level of opacity for the window.
++     *
++     * @see Window#setOpacity(float)
++     */
++    void setOpacity(float opacity);
++
++    /**
++     * Enables the per-pixel alpha support for the window.
++     *
++     * @see Window#setBackground(Color)
++     */
++    void setOpaque(boolean isOpaque);
++
++    /**
++     * Updates the native part of non-opaque window using
++     * the given image with color+alpha values for each pixel.
++     *
++     * @see Window#setBackground(Color)
++     */
++    void updateWindow(BufferedImage backBuffer);
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Window.java openjdk/jdk/src/share/classes/java/awt/Window.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Window.java	2011-01-20 23:54:14.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Window.java	2011-02-16 01:27:25.004326241 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2009, 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
+@@ -28,6 +28,7 @@
+ import java.awt.event.*;
+ import java.awt.im.InputContext;
+ import java.awt.image.BufferStrategy;
++import java.awt.image.BufferedImage;
+ import java.awt.peer.ComponentPeer;
+ import java.awt.peer.WindowPeer;
+ import java.beans.PropertyChangeListener;
+@@ -50,6 +51,7 @@
+ import java.util.logging.Logger;
+ import java.util.concurrent.atomic.AtomicBoolean;
+ import javax.accessibility.*;
++import sun.awt.AWTAccessor;
+ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+@@ -291,6 +293,25 @@
+      */
+     transient boolean isInShow = false;
+ 
++    /*
++     * Opacity level of the window
++     *
++     * @see #setOpacity(float)
++     * @see #getOpacity()
++     * @since 1.7
++     */
++    private float opacity = 1.0f;
++
++    /*
++     * The shape assigned to this window. This field is set to null if
++     * no shape is set (rectangular window).
++     *
++     * @see #getShape()
++     * @see #setShape(Shape)
++     * @since 1.7
++     */
++    private Shape shape = null;
++
+     private static final String base = "win";
+     private static int nameCounter = 0;
+ 
+@@ -661,9 +682,9 @@
+             }
+             if (peer == null) {
+                 peer = getToolkit().createWindow(this);
+-            }
+-            synchronized (allWindows) {
+-                allWindows.add(this);
++                synchronized (allWindows) {
++                    allWindows.add(this);
++                }
+             }
+             super.addNotify();
+         }
+@@ -2765,6 +2786,8 @@
+          if(aot) {
+              setAlwaysOnTop(aot); // since 1.5; subject to permission check
+          }
++         shape = (Shape)f.get("shape", null);
++         opacity = (Float)f.get("opacity", 1.0f);
+ 
+          deserializeResources(s);
+     }
+@@ -3184,6 +3207,225 @@
+     }
+ 
+ 
++    // ******************** SHAPES & TRANSPARENCY CODE ********************
++
++    /**
++     * JavaDoc
++     */
++    /*public */float getOpacity() {
++        synchronized (getTreeLock()) {
++            return opacity;
++        }
++    }
++
++    /**
++     * JavaDoc
++     */
++    /*public */void setOpacity(float opacity) {
++        synchronized (getTreeLock()) {
++            if (opacity < 0.0f || opacity > 1.0f) {
++                throw new IllegalArgumentException(
++                    "The value of opacity should be in the range [0.0f .. 1.0f].");
++            }
++            GraphicsConfiguration gc = getGraphicsConfiguration();
++            GraphicsDevice gd = gc.getDevice();
++            if (!gd.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) {
++                throw new UnsupportedOperationException(
++                        "TRANSLUCENT translucency is not supported.");
++            }
++            if ((gc.getDevice().getFullScreenWindow() == this) && (opacity < 1.0f)) {
++                throw new IllegalArgumentException(
++                    "Setting opacity for full-screen window is not supported.");
++            }
++            this.opacity = opacity;
++            WindowPeer peer = (WindowPeer)getPeer();
++            if (peer != null) {
++                peer.setOpacity(opacity);
++            }
++        }
++    }
++
++    /**
++     * JavaDoc
++     */
++    /*public */Shape getShape() {
++        synchronized (getTreeLock()) {
++            return shape;
++        }
++    }
++
++    /**
++     * JavaDoc
++     *
++     * @param window the window to set the shape to
++     * @param shape the shape to set to the window
++     * @throws IllegalArgumentException if the window is in full screen mode,
++     *                                  and the shape is not null
++     */
++    /*public */void setShape(Shape shape) {
++        synchronized (getTreeLock()) {
++            GraphicsConfiguration gc = getGraphicsConfiguration();
++            GraphicsDevice gd = gc.getDevice();
++            if (!gd.isWindowTranslucencySupported(
++                    GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
++            {
++                throw new UnsupportedOperationException(
++                        "PERPIXEL_TRANSPARENT translucency is not supported.");
++            }
++            if ((gc.getDevice().getFullScreenWindow() == this) && (shape != null)) {
++                throw new IllegalArgumentException(
++                    "Setting shape for full-screen window is not supported.");
++            }
++            this.shape = shape;
++            WindowPeer peer = (WindowPeer)getPeer();
++            if (peer != null) {
++                peer.applyShape(shape == null ? null : Region.getInstance(shape, null));
++            }
++        }
++    }
++
++    /**
++     * JavaDoc
++     */
++/*
++    @Override
++    public void setBackground(Color bgColor) {
++        int alpha = bgColor.getAlpha();
++        if (alpha < 255) { // non-opaque window
++            GraphicsConfiguration gc = getGraphicsConfiguration();
++            GraphicsDevice gd = gc.getDevice();
++            if (gc.getDevice().getFullScreenWindow() == this) {
++                throw new IllegalArgumentException(
++                    "Making full-screen window non opaque is not supported.");
++            }
++            if (!gc.isTranslucencyCapable()) {
++                GraphicsConfiguration capableGC = gd.getTranslucencyCapableGC();
++                if (capableGC == null) {
++                    throw new IllegalArgumentException(
++                        "PERPIXEL_TRANSLUCENT translucency is not supported");
++                }
++                // TODO: change GC
++            }
++            setLayersOpaque(this, false);
++        }
++
++        super.setBackground(bgColor);
++
++        WindowPeer peer = (WindowPeer)getPeer();
++        if (peer != null) {
++            peer.setOpaque(alpha == 255);
++        }
++    }
++*/
++
++    private transient boolean opaque = true;
++
++    void setOpaque(boolean opaque) {
++        synchronized (getTreeLock()) {
++            GraphicsConfiguration gc = getGraphicsConfiguration();
++            if (!opaque && !com.sun.awt.AWTUtilities.isTranslucencyCapable(gc)) {
++            throw new IllegalArgumentException(
++                    "The window must use a translucency-compatible graphics configuration");
++            }
++            if (!com.sun.awt.AWTUtilities.isTranslucencySupported(
++                    com.sun.awt.AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT))
++            {
++                throw new UnsupportedOperationException(
++                        "PERPIXEL_TRANSLUCENT translucency is not supported.");
++            }
++            if ((gc.getDevice().getFullScreenWindow() == this) && !opaque) {
++                throw new IllegalArgumentException(
++                    "Making full-screen window non opaque is not supported.");
++            }
++            setLayersOpaque(this, opaque);
++            this.opaque = opaque;
++            WindowPeer peer = (WindowPeer)getPeer();
++            if (peer != null) {
++                peer.setOpaque(opaque);
++            }
++        }
++    }
++
++    private void updateWindow(BufferedImage backBuffer) {
++        synchronized (getTreeLock()) {
++            WindowPeer peer = (WindowPeer)getPeer();
++            if (peer != null) {
++                peer.updateWindow(backBuffer);
++            }
++        }
++    }
++
++    private static final Color TRANSPARENT_BACKGROUND_COLOR = new Color(0, 0, 0, 0);
++
++    private static void setLayersOpaque(Component component, boolean isOpaque) {
++        // Shouldn't use instanceof to avoid loading Swing classes
++        //    if it's a pure AWT application.
++        if (Component.doesImplement(component, "javax.swing.RootPaneContainer")) {
++            javax.swing.RootPaneContainer rpc = (javax.swing.RootPaneContainer)component;
++            javax.swing.JRootPane root = rpc.getRootPane();
++            javax.swing.JLayeredPane lp = root.getLayeredPane();
++            Container c = root.getContentPane();
++            javax.swing.JComponent content =
++                (c instanceof javax.swing.JComponent) ? (javax.swing.JComponent)c : null;
++            javax.swing.JComponent gp =
++                (rpc.getGlassPane() instanceof javax.swing.JComponent) ?
++                (javax.swing.JComponent)rpc.getGlassPane() : null;
++            if (gp != null) {
++                gp.setDoubleBuffered(isOpaque);
++            }
++            lp.setOpaque(isOpaque);
++            root.setOpaque(isOpaque);
++            root.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
++            if (content != null) {
++                content.setOpaque(isOpaque);
++                content.setDoubleBuffered(isOpaque); //XXX: the "white rect" workaround
++
++                // Iterate down one level to see whether we have a JApplet
++                // (which is also a RootPaneContainer) which requires processing
++                int numChildren = content.getComponentCount();
++                if (numChildren > 0) {
++                    Component child = content.getComponent(0);
++                    // It's OK to use instanceof here because we've
++                    // already loaded the RootPaneContainer class by now
++                    if (child instanceof javax.swing.RootPaneContainer) {
++                        setLayersOpaque(child, isOpaque);
++                    }
++                }
++            }
++        }
++
++        Color bg = component.getBackground();
++        boolean hasTransparentBg = TRANSPARENT_BACKGROUND_COLOR.equals(bg);
++
++        Container container = null;
++        if (component instanceof Container) {
++            container = (Container) component;
++        }
++
++        if (isOpaque) {
++            if (hasTransparentBg) {
++                // Note: we use the SystemColor.window color as the default.
++                // This color is used in the WindowPeer implementations to
++                // initialize the background color of the window if it is null.
++                // (This might not be the right thing to do for other
++                // RootPaneContainers we might be invoked with)
++                Color newColor = null;
++                if (container != null && container.preserveBackgroundColor != null) {
++                    newColor = container.preserveBackgroundColor;
++                } else {
++                    newColor = SystemColor.window;
++                }
++                component.setBackground(newColor);
++            }
++        } else {
++            if (!hasTransparentBg && container != null) {
++                container.preserveBackgroundColor = bg;
++            }
++            component.setBackground(TRANSPARENT_BACKGROUND_COLOR);
++        }
++    }
++
++
+     // ************************** MIXING CODE *******************************
+ 
+     // A window has a parent, but it does NOT have a container
+@@ -3221,6 +3463,42 @@
+ 
+     // ****************** END OF MIXING CODE ********************************
+ 
++    static {
++        AWTAccessor.setWindowAccessor(new AWTAccessor.WindowAccessor() {
++            public float getOpacity(Window window) {
++                return window.opacity;
++            }
++            public void setOpacity(Window window, float opacity) {
++                window.setOpacity(opacity);
++            }
++            public Shape getShape(Window window) {
++                return window.getShape();
++            }
++            public void setShape(Window window, Shape shape) {
++                window.setShape(shape);
++            }
++            public boolean isOpaque(Window window) {
++                /*
++                return window.getBackground().getAlpha() < 255;
++                */
++                synchronized (window.getTreeLock()) {
++                    return window.opaque;
++                }
++            }
++            public void setOpaque(Window window, boolean opaque) {
++                /*
++                Color bg = window.getBackground();
++                window.setBackground(new Color(bg.getRed(), bg.getGreen(), bg.getBlue(),
++                                               opaque ? 255 : 0));
++                */
++                window.setOpaque(opaque);
++            }
++            public void updateWindow(Window window, BufferedImage backBuffer) {
++                window.updateWindow(backBuffer);
++            }
++        }); // WindowAccessor
++    } // static
++
+ } // class Window
+ 
+ 
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/swing/RepaintManager.java openjdk/jdk/src/share/classes/javax/swing/RepaintManager.java
+--- openjdk.orig/jdk/src/share/classes/javax/swing/RepaintManager.java	2011-01-20 23:54:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/javax/swing/RepaintManager.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -34,6 +34,7 @@
+ import java.util.*;
+ import java.applet.*;
+ 
++import sun.awt.AWTAccessor;
+ import sun.awt.AppContext;
+ import sun.awt.DisplayChangedListener;
+ import sun.awt.SunToolkit;
+@@ -681,6 +682,44 @@
+         }
+     }
+ 
++    private Map<Component,Rectangle>
++        updateWindows(Map<Component,Rectangle> dirtyComponents)
++    {
++        Toolkit toolkit = Toolkit.getDefaultToolkit();
++        if (!(toolkit instanceof SunToolkit &&
++              ((SunToolkit)toolkit).needUpdateWindow()))
++        {
++            return dirtyComponents;
++        }
++
++        Set<Window> windows = new HashSet<Window>();
++        Set<Component> dirtyComps = dirtyComponents.keySet();
++        for (Iterator<Component> it = dirtyComps.iterator(); it.hasNext();) {
++            Component dirty = it.next();
++            Window window = dirty instanceof Window ?
++                (Window)dirty :
++                SwingUtilities.getWindowAncestor(dirty);
++
++            if (window != null &&
++                !AWTAccessor.getWindowAccessor().isOpaque(window))
++            {
++                // if this component's toplevel is perpixel translucent, it will
++                // be repainted below
++                it.remove();
++                // add to the set of windows to update (so that we don't update
++                // the window many times for each component to be repainted that
++                // belongs to this window)
++                windows.add(window);
++            }
++        }
++
++        for (Window window : windows) {
++            AWTAccessor.getWindowAccessor().updateWindow(window, null);
++        }
++
++        return dirtyComponents;
++    }
++
+     /**
+      * Paint all of the components that have been marked dirty.
+      *
+@@ -714,6 +753,10 @@
+         int localBoundsW = 0;
+         Enumeration keys;
+ 
++        // the components belonging to perpixel-translucent windows will be
++        // removed from the list
++        tmpDirtyComponents = updateWindows(tmpDirtyComponents);
++
+         roots = new ArrayList<Component>(count);
+ 
+         for (Component dirty : tmpDirtyComponents.keySet()) {
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-16 01:43:59.459209438 +0000
+@@ -59,10 +59,29 @@
+      * An interface of accessor for the java.awt.Component class.
+      */
+     public interface ComponentAccessor {
+-        // See 6797587
+-        // Also see: 6776743, 6768307, and 6768332.
+-        /**
++        /*
++         * Sets whether the native background erase for a component
++         * has been disabled via SunToolkit.disableBackgroundErase().
++         */
++        void setBackgroundEraseDisabled(Component comp, boolean disabled);
++        /*
++         * Indicates whether the native background erase for a
++         * component has been disabled via
++         * SunToolkit.disableBackgroundErase().
++         */
++        boolean getBackgroundEraseDisabled(Component comp);
++        /*
++         *
++         * Gets the bounds of this component in the form of a
++         * <code>Rectangle</code> object. The bounds specify this
++         * component's width, height, and location relative to
++         * its parent.
++         */
++        Rectangle getBounds(Component comp);
++        /*
+          * Sets the shape of a lw component to cut out from hw components.
++         *
++         * See 6797587, 6776743, 6768307, and 6768332 for details
+          */
+         void setMixingCutoutShape(Component comp, Shape shape);
+         /*
+@@ -72,6 +91,41 @@
+     }
+ 
+     /*
++     * An interface of accessor for java.awt.Window class.
++     */
++    public interface WindowAccessor {
++        /*
++         * Get opacity level of the given window.
++         */
++        float getOpacity(Window window);
++        /*
++         * Set opacity level to the given window.
++         */
++        void setOpacity(Window window, float opacity);
++        /*
++         * Get a shape assigned to the given window.
++         */
++        Shape getShape(Window window);
++        /*
++         * Set a shape to the given window.
++         */
++        void setShape(Window window, Shape shape);
++        /*
++         * Identify whether the given window is opaque (true)
++         *  or translucent (false).
++         */
++        boolean isOpaque(Window window);
++        /*
++         * Set the opaque preoperty to the given window.
++         */
++        void setOpaque(Window window, boolean isOpaque);
++        /*
++         * Update the image of a non-opaque (translucent) window.
++         */
++        void updateWindow(Window window, BufferedImage backBuffer);
++    }
++
++    /*
+      * An accessor for the AWTEvent class.
+      */
+     public interface AWTEventAccessor {
+@@ -101,6 +155,14 @@
+     /* The java.awt.Component class accessor object.
+      */
+     private static ComponentAccessor componentAccessor;
++    /*
++     * The java.awt.Window class accessor object.
++     */
++    private static WindowAccessor windowAccessor;
++
++    /*
++     * The java.awt.AWTEvent class accessor object.
++     */
+     private static AWTEventAccessor awtEventAccessor;
+ 
+     /*
+@@ -137,4 +199,22 @@
+         }
+         return awtEventAccessor;
+     }
++
++    /*
++     * Set an accessor object for the java.awt.Window class.
++     */
++    public static void setWindowAccessor(WindowAccessor wa) {
++        windowAccessor = wa;
++    }
++
++    /*
++     * Retrieve the accessor object for the java.awt.Window class.
++     */
++    public static WindowAccessor getWindowAccessor() {
++        if (windowAccessor == null) {
++            unsafe.ensureClassInitialized(Window.class);
++        }
++        return windowAccessor;
++    }
++
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/EmbeddedFrame.java openjdk/jdk/src/share/classes/sun/awt/EmbeddedFrame.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	2011-01-20 23:54:24.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -579,5 +579,12 @@
+         }
+         public void updateMinimumSize() {
+         }
+-    }
++
++        public void setOpacity(float opacity) {
++        }
++        public void setOpaque(boolean isOpaque) {
++        }
++        public void updateWindow(BufferedImage backBuffer) {
++        }
++     }
+ } // class EmbeddedFrame
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/SunToolkit.java openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/SunToolkit.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -32,14 +32,10 @@
+ import java.awt.peer.*;
+ import java.awt.event.WindowEvent;
+ import java.awt.event.KeyEvent;
+-import java.awt.im.spi.InputMethodDescriptor;
+ import java.awt.image.*;
+-import java.awt.geom.AffineTransform;
+ import java.awt.TrayIcon;
+ import java.awt.SystemTray;
+-import java.io.*;
+ import java.net.URL;
+-import java.net.JarURLConnection;
+ import java.util.*;
+ import java.util.concurrent.TimeUnit;
+ import java.util.concurrent.locks.Condition;
+@@ -49,7 +45,6 @@
+ import sun.misc.SoftCache;
+ import sun.font.FontDesignMetrics;
+ import sun.awt.im.InputContext;
+-import sun.awt.im.SimpleInputMethodWindow;
+ import sun.awt.image.*;
+ import sun.security.action.GetPropertyAction;
+ import sun.security.action.GetBooleanAction;
+@@ -825,16 +820,31 @@
+     }
+ 
+     /**
+-     * Disables erasing of background on the canvas before painting
+-     * if this is supported by the current toolkit.
+-     *
+-     * @throws IllegalStateException if the canvas is not displayable
+-     * @see java.awt.Component#isDisplayable
++     * Disables erasing of background on the canvas before painting if
++     * this is supported by the current toolkit. It is recommended to
++     * call this method early, before the Canvas becomes displayable,
++     * because some Toolkit implementations do not support changing
++     * this property once the Canvas becomes displayable.
+      */
+     public void disableBackgroundErase(Canvas canvas) {
+-        if (!canvas.isDisplayable()) {
+-            throw new IllegalStateException("Canvas must have a valid peer");
+-        }
++        disableBackgroundEraseImpl(canvas);
++    }
++
++    /**
++     * Disables the native erasing of the background on the given
++     * component before painting if this is supported by the current
++     * toolkit. This only has an effect for certain components such as
++     * Canvas, Panel and Window. It is recommended to call this method
++     * early, before the Component becomes displayable, because some
++     * Toolkit implementations do not support changing this property
++     * once the Component becomes displayable.
++     */
++    public void disableBackgroundErase(Component component) {
++        disableBackgroundEraseImpl(component);
++    }
++
++    private void disableBackgroundEraseImpl(Component component) {
++        AWTAccessor.getComponentAccessor().setBackgroundEraseDisabled(component, true);
+     }
+ 
+     /**
+@@ -1973,6 +1983,18 @@
+         AWTAutoShutdown.getInstance().dumpPeers(aLog);
+     }
+ 
++    /**
++     * Returns the <code>Window</code> ancestor of the component <code>comp</code>.
++     * @return Window ancestor of the component or component by itself if it is Window;
++     *         null, if component is not a part of window hierarchy
++     */
++    public static Window getContainingWindow(Component comp) {
++        while (comp != null && !(comp instanceof Window)) {
++            comp = comp.getParent();
++        }
++        return (Window)comp;
++    }
++
+     private static Boolean sunAwtDisableMixing = null;
+ 
+     /**
+@@ -1996,6 +2018,73 @@
+     public boolean isNativeGTKAvailable() {
+         return false;
+     }
++
++    // Cosntant alpha
++    public boolean isWindowOpacitySupported() {
++        return false;
++    }
++
++    // Shaping
++    public boolean isWindowShapingSupported() {
++        return false;
++    }
++
++    // Per-pixel alpha
++    public boolean isWindowTranslucencySupported() {
++        return false;
++    }
++
++    public boolean isTranslucencyCapable(GraphicsConfiguration gc) {
++        return false;
++    }
++
++    /**
++     * Returns whether or not a containing top level window for the passed
++     * component is
++     * {@link com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}.
++     *
++     * @param c a Component which toplevel's to check
++     * @return {@code true}  if the passed component is not null and has a
++     * containing toplevel window which is opaque (so per-pixel translucency
++     * is not enabled), {@code false} otherwise
++     * @see com.sun.awt.AWTUtilities.Translucency#PERPIXEL_TRANSLUCENT
++     * @see com.sun.awt.AWTUtilities#isWindowOpaque(Window)
++     */
++    public static boolean isContainingTopLevelOpaque(Component c) {
++        Window w = getContainingWindow(c);
++        // return w != null && (w).isOpaque();
++        return w != null && com.sun.awt.AWTUtilities.isWindowOpaque(w);
++    }
++
++    /**
++     * Returns whether or not a containing top level window for the passed
++     * component is
++     * {@link com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT TRANSLUCENT}.
++     *
++     * @param c a Component which toplevel's to check
++     * @return {@code true} if the passed component is not null and has a
++     * containing toplevel window which has opacity less than
++     * 1.0f (which means that it is translucent), {@code false} otherwise
++     * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
++     * @see com.sun.awt.AWTUtilities#getWindowOpacity(Window)
++     */
++    public static boolean isContainingTopLevelTranslucent(Component c) {
++        Window w = getContainingWindow(c);
++        // return w != null && (w).getOpacity() < 1.0f;
++        return w != null && com.sun.awt.AWTUtilities.getWindowOpacity((Window)w) < 1.0f;
++    }
++
++    /**
++     * Returns whether the native system requires using the peer.updateWindow()
++     * method to update the contents of a non-opaque window, or if usual
++     * painting procedures are sufficient. The default return value covers
++     * the X11 systems. On MS Windows this method is overriden in WToolkit
++     * to return true.
++     */
++    public boolean needUpdateWindow() {
++        return false;
++    }
++
+ } // class SunToolkit
+ 
+ 
+diff -Nru openjdk.orig/jdk/src/share/native/sun/awt/utility/rect.c openjdk/jdk/src/share/native/sun/awt/utility/rect.c
+--- openjdk.orig/jdk/src/share/native/sun/awt/utility/rect.c	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/share/native/sun/awt/utility/rect.c	2011-02-16 01:27:25.008325931 +0000
+@@ -0,0 +1,102 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++#include "utility/rect.h"
++
++#if defined(__cplusplus)
++extern "C" {
++#endif
++
++/**
++ * bitsPerPixel must be 32 for now.
++ * outBuf must be large enough to conatin all the rectangles.
++ */
++int BitmapToYXBandedRectangles(int bitsPerPixel, int width, int height, unsigned char * buf, RECT_T * outBuf)
++{
++    //XXX: we might want to reuse the code in the splashscreen library,
++    // though we'd have to deal with the ALPHA_THRESHOLD and different
++    // image formats in this case.
++    int widthBytes = width * bitsPerPixel / 8;
++    int alignedWidth = (((widthBytes - 1) / 4) + 1) * 4;
++
++    RECT_T * out = outBuf;
++
++    RECT_T *pPrevLine = NULL, *pFirst = out, *pThis = pFirst;
++    int i, j, i0;
++    int length;
++
++    for (j = 0; j < height; j++) {
++        /* generate data for a scanline */
++
++        unsigned char *pSrc = (unsigned char *) buf + j * alignedWidth;
++        RECT_T *pLine = pThis;
++
++        i = 0;
++
++        do {
++            // pSrc[0,1,2] == B,G,R; pSrc[3] == Alpha
++            while (i < width && !pSrc[3]) {
++                pSrc += 4;
++                ++i;
++            }
++            if (i >= width)
++                break;
++            i0 = i;
++            while (i < width && pSrc[3]) {
++                pSrc += 4;
++                ++i;
++            }
++            RECT_SET(*pThis, i0, j, i - i0, 1);
++            ++pThis;
++        } while (i < width);
++
++        /*  check if the previous scanline is exactly the same, merge if so
++            (this is the only optimization we can use for YXBanded rectangles,
++            and win32 supports YXBanded only */
++
++        length = pThis - pLine;
++        if (pPrevLine && pLine - pPrevLine == length) {
++            for (i = 0; i < length && RECT_EQ_X(pPrevLine[i], pLine[i]); ++i) {
++            }
++            if (i == pLine - pPrevLine) {
++                // do merge
++                for (i = 0; i < length; i++) {
++                    RECT_INC_HEIGHT(pPrevLine[i]);
++                }
++                pThis = pLine;
++                continue;
++            }
++        }
++        /* or else use the generated scanline */
++
++        pPrevLine = pLine;
++    }
++
++    return pThis - pFirst;
++}
++
++#if defined(__cplusplus)
++}
++#endif
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java openjdk/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2009, 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
+@@ -859,14 +859,14 @@
+                     pw.println("\n\tlong pData;");
+                     pw.println("\n\tpublic long getPData() { return pData; }");
+ 
+-                    pw.println("\n\n\t" + stp.getJavaClassName() + "(long addr) {");
++                    pw.println("\n\n\tpublic " + stp.getJavaClassName() + "(long addr) {");
+                     if (generateLog) {
+                         pw.println("\t\tlog.finest(\"Creating\");");
+                     }
+                     pw.println("\t\tpData=addr;");
+                     pw.println("\t\tshould_free_memory = false;");
+                     pw.println("\t}");
+-                    pw.println("\n\n\t" + stp.getJavaClassName() + "() {");
++                    pw.println("\n\n\tpublic " + stp.getJavaClassName() + "() {");
+                     if (generateLog) {
+                         pw.println("\t\tlog.finest(\"Creating\");");
+                     }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/generator/xlibtypes.txt openjdk/jdk/src/solaris/classes/sun/awt/X11/generator/xlibtypes.txt
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/generator/xlibtypes.txt	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/generator/xlibtypes.txt	2011-02-16 01:27:25.008325931 +0000
+@@ -750,6 +750,7 @@
+     pixelStride int
+     color_data pointer ColorData
+     glxInfo pointer
++    isTranslucencySupported int
+ 
+ AwtScreenData
+     numConfigs int
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2009, 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
+@@ -268,6 +268,8 @@
+     XAtom XA_NET_WM_WINDOW_TYPE = XAtom.get("_NET_WM_WINDOW_TYPE");
+     XAtom XA_NET_WM_WINDOW_TYPE_DIALOG = XAtom.get("_NET_WM_WINDOW_TYPE_DIALOG");
+ 
++    XAtom XA_NET_WM_WINDOW_OPACITY = XAtom.get("_NET_WM_WINDOW_OPACITY");
++
+ /* For _NET_WM_STATE ClientMessage requests */
+     final static int _NET_WM_STATE_REMOVE      =0; /* remove/unset property */
+     final static int _NET_WM_STATE_ADD         =1; /* add/set property      */
+@@ -304,6 +306,12 @@
+         boolean res = active() && checkProtocol(XA_NET_SUPPORTED, XA_NET_WM_STATE_MODAL);
+         return res;
+     }
++
++    boolean doOpacityProtocol() {
++        boolean res = active() && checkProtocol(XA_NET_SUPPORTED, XA_NET_WM_WINDOW_OPACITY);
++        return res;
++    }
++
+     boolean isWMName(String name) {
+         if (!active()) {
+             return false;
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	2011-02-16 01:27:25.008325931 +0000
+@@ -2181,4 +2181,35 @@
+         return new XDesktopPeer();
+     }
+ 
++    @Override
++    public boolean isWindowOpacitySupported() {
++        XNETProtocol net_protocol = XWM.getWM().getNETProtocol();
++
++        if (net_protocol == null) {
++            return false;
++        }
++
++        return net_protocol.doOpacityProtocol();
++    }
++
++    @Override
++    public boolean isWindowShapingSupported() {
++        return XlibUtil.isShapingSupported();
++    }
++
++    @Override
++    public boolean isWindowTranslucencySupported() {
++        //NOTE: it may not be supported. The actual check is being performed
++        //      at com.sun.awt.AWTUtilities(). In X11 we need to check
++        //      whether there's any translucency-capable GC available.
++        return true;
++    }
++
++    @Override
++    public boolean isTranslucencyCapable(GraphicsConfiguration gc) {
++        if (!(gc instanceof X11GraphicsConfig)) {
++            return false;
++        }
++        return ((X11GraphicsConfig)gc).isTranslucencyCapable();
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2002, 2009, 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
+@@ -30,6 +30,8 @@
+ import java.awt.event.FocusEvent;
+ import java.awt.event.WindowEvent;
+ 
++import java.awt.image.BufferedImage;
++
+ import java.awt.peer.ComponentPeer;
+ import java.awt.peer.WindowPeer;
+ 
+@@ -42,6 +44,7 @@
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
+ 
++import sun.awt.AWTAccessor;
+ import sun.awt.ComponentAccessor;
+ import sun.awt.WindowAccessor;
+ import sun.awt.DisplayChangedListener;
+@@ -49,6 +52,8 @@
+ import sun.awt.X11GraphicsDevice;
+ import sun.awt.X11GraphicsEnvironment;
+ 
++import sun.java2d.pipe.Region;
++
+ class XWindowPeer extends XPanelPeer implements WindowPeer,
+                                                 DisplayChangedListener, MWMConstants {
+ 
+@@ -269,6 +274,10 @@
+ 
+         XWM.requestWMExtents(getWindow());
+         updateIconImages();
++
++        updateShape();
++        updateOpacity();
++        // no need in updateOpaque() as it is no-op
+     }
+ 
+     public void updateIconImages() {
+@@ -426,6 +435,22 @@
+         return defaultIconInfo;
+     }
+ 
++    private void updateShape() {
++        // Shape shape = ((Window)target).getShape();
++        Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
++        if (shape != null) {
++            applyShape(Region.getInstance(shape, null));
++        }
++    }
++
++    private void updateOpacity() {
++        // float opacity = ((Window)target).getOpacity();
++        float opacity = AWTAccessor.getWindowAccessor().getOpacity((Window)target);
++        if (opacity < 1.0f) {
++            setOpacity(opacity);
++        }
++    }
++
+     public void updateMinimumSize() {
+         //This function only saves minimumSize value in XWindowPeer
+         //Setting WMSizeHints is implemented in XDecoratedPeer
+@@ -2122,4 +2147,44 @@
+         }
+         super.handleButtonPressRelease(xev);
+     }
++
++    public void print(Graphics g) {
++        // We assume we print the whole frame,
++        // so we expect no clip was set previously
++        Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
++        if (shape != null) {
++            g.setClip(shape);
++        }
++        super.print(g);
++    }
++
++    @Override
++    public void setOpacity(float opacity) {
++        final long maxOpacity = 0xffffffffl;
++        long iOpacity = (long)(opacity * maxOpacity);
++        if (iOpacity < 0) {
++            iOpacity = 0;
++        }
++        if (iOpacity > maxOpacity) {
++            iOpacity = maxOpacity;
++        }
++
++        XAtom netWmWindowOpacityAtom = XAtom.get("_NET_WM_WINDOW_OPACITY");
++
++        if (iOpacity == maxOpacity) {
++            netWmWindowOpacityAtom.DeleteProperty(getWindow());
++        } else {
++            netWmWindowOpacityAtom.setCard32Property(getWindow(), iOpacity);
++        }
++    }
++
++    @Override
++    public void setOpaque(boolean isOpaque) {
++        // no-op
++    }
++
++    @Override
++    public void updateWindow(BufferedImage backBuffer) {
++        // no-op
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -458,4 +458,13 @@
+             return 0x00; // UNDEFINED
+         }
+     }
++
++    /*
++    @Override
++    */
++    public boolean isTranslucencyCapable() {
++        return isTranslucencyCapable(getAData());
++    }
++
++    private native boolean isTranslucencyCapable(long x11ConfigData);
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	2011-01-20 23:54:42.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	2011-02-16 01:27:25.008325931 +0000
+@@ -323,6 +323,48 @@
+     return NULL;
+ }
+ 
++/* Note: until we include the <X11/extensions/Xrender.h> explicitly
++ * we have to define a couple of things ourselves.
++ */
++typedef unsigned long   PictFormat;
++#define PictTypeIndexed             0
++#define PictTypeDirect              1
++
++typedef struct {
++    short   red;
++    short   redMask;
++    short   green;
++    short   greenMask;
++    short   blue;
++    short   blueMask;
++    short   alpha;
++    short   alphaMask;
++} XRenderDirectFormat;
++
++typedef struct {
++    PictFormat      id;
++    int         type;
++    int         depth;
++    XRenderDirectFormat direct;
++    Colormap        colormap;
++} XRenderPictFormat;
++
++#define PictFormatID        (1 << 0)
++#define PictFormatType      (1 << 1)
++#define PictFormatDepth     (1 << 2)
++#define PictFormatRed       (1 << 3)
++#define PictFormatRedMask   (1 << 4)
++#define PictFormatGreen     (1 << 5)
++#define PictFormatGreenMask (1 << 6)
++#define PictFormatBlue      (1 << 7)
++#define PictFormatBlueMask  (1 << 8)
++#define PictFormatAlpha     (1 << 9)
++#define PictFormatAlphaMask (1 << 10)
++#define PictFormatColormap  (1 << 11)
++
++typedef XRenderPictFormat *
++XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual);
++
+ static void
+ getAllConfigs (JNIEnv *env, int screen, AwtScreenDataPtr screenDataPtr) {
+ 
+@@ -336,6 +378,9 @@
+     int ind;
+     char errmsg[128];
+     int xinawareScreen;
++    void* xrenderLibHandle = NULL;
++    XRenderFindVisualFormatFunc *XRenderFindVisualFormat = NULL;
++    int major_opcode, first_event, first_error;
+ 
+     if (usingXinerama) {
+         xinawareScreen = 0;
+@@ -418,6 +463,26 @@
+     graphicsConfigs[0] = defaultConfig;
+     nConfig = 1; /* reserve index 0 for default config */
+ 
++    // Only use the RENDER extension if it is available on the X server
++    if (XQueryExtension(awt_display, "RENDER",
++                        &major_opcode, &first_event, &first_error))
++    {
++        xrenderLibHandle = dlopen("libXrender.so.1", RTLD_LAZY | RTLD_GLOBAL);
++
++#ifndef __linux__ /* SOLARIS */
++        if (xrenderLibHandle == NULL) {
++            xrenderLibHandle = dlopen("/usr/sfw/lib/libXrender.so.1",
++                                      RTLD_LAZY | RTLD_GLOBAL);
++        }
++#endif
++
++        if (xrenderLibHandle != NULL) {
++            XRenderFindVisualFormat =
++                (XRenderFindVisualFormatFunc*)dlsym(xrenderLibHandle,
++                                                    "XRenderFindVisualFormat");
++        }
++    }
++
+     for (i = 0; i < nTrue; i++) {
+         if (XVisualIDFromVisual(pVITrue[i].visual) ==
+             XVisualIDFromVisual(defaultConfig->awt_visInfo.visual) ||
+@@ -431,6 +496,21 @@
+         graphicsConfigs [ind]->awt_depth = pVITrue [i].depth;
+         memcpy (&graphicsConfigs [ind]->awt_visInfo, &pVITrue [i],
+                 sizeof (XVisualInfo));
++       if (XRenderFindVisualFormat != NULL) {
++            XRenderPictFormat *format = XRenderFindVisualFormat (awt_display,
++                    pVITrue [i].visual);
++            if (format &&
++                format->type == PictTypeDirect &&
++                format->direct.alphaMask)
++            {
++                graphicsConfigs [ind]->isTranslucencySupported = 1;
++            }
++        }
++    }
++
++    if (xrenderLibHandle != NULL) {
++        dlclose(xrenderLibHandle);
++        xrenderLibHandle = NULL;
+     }
+ 
+     for (i = 0; i < n8p; i++) {
+@@ -1474,6 +1554,26 @@
+ }
+ 
+ /*
++ * Class:     sun_awt_X11GraphicsConfig
++ * Method:    isTranslucencyCapable
++ * Signature: (J)V
++ */
++JNIEXPORT jboolean JNICALL
++Java_sun_awt_X11GraphicsConfig_isTranslucencyCapable
++    (JNIEnv *env, jobject this, jlong configData)
++{
++#ifdef HEADLESS
++    return JNI_FALSE;
++#else
++    AwtGraphicsConfigDataPtr aData = (AwtGraphicsConfigDataPtr)jlong_to_ptr(configData);
++    if (aData == NULL) {
++        return JNI_FALSE;
++    }
++    return (jboolean)aData->isTranslucencySupported;
++#endif
++}
++
++/*
+  * Class:     sun_awt_X11GraphicsDevice
+  * Method:    isDBESupported
+  * Signature: ()Z
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/awt/awt_p.h openjdk/jdk/src/solaris/native/sun/awt/awt_p.h
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_p.h	2011-01-20 23:54:42.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/awt/awt_p.h	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2005, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2009, 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
+@@ -135,6 +135,7 @@
+     int         pixelStride;     /* Used in X11SurfaceData.c */
+     ColorData      *color_data;
+     struct _GLXGraphicsConfigInfo *glxInfo;
++    int         isTranslucencySupported; /* Uses Xrender to find this out. */
+ } AwtGraphicsConfigData;
+ 
+ typedef AwtGraphicsConfigData* AwtGraphicsConfigDataPtr;
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	2011-02-16 01:27:25.008325931 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -339,4 +339,12 @@
+         }
+         // the rest of the flip actions are not supported
+     }
++
++    /*
++    @Override
++    */
++    public boolean isTranslucencyCapable() {
++        //XXX: worth checking if 8-bit? Anyway, it doesn't hurt.
++        return true;
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2009, 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
+@@ -379,4 +379,11 @@
+     private static void dwmCompositionChanged(boolean enabled) {
+         isDWMCompositionEnabled = enabled;
+     }
++
++    /**
++     * Used to find out if the OS is Windows Vista or later.
++     *
++     * @return {@code true} if the OS is Vista or later, {@code false} otherwise
++     */
++    public static native boolean isVistaOS();
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/TranslucentWindowPainter.java openjdk/jdk/src/windows/classes/sun/awt/windows/TranslucentWindowPainter.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/TranslucentWindowPainter.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/TranslucentWindowPainter.java	2011-02-16 01:27:25.012325621 +0000
+@@ -0,0 +1,398 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++package sun.awt.windows;
++
++import java.awt.AlphaComposite;
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.GraphicsConfiguration;
++import java.awt.Image;
++import java.awt.Window;
++import java.awt.image.BufferedImage;
++import java.awt.image.DataBufferInt;
++import java.awt.image.VolatileImage;
++import java.lang.ref.WeakReference;
++import java.security.AccessController;
++import sun.awt.image.BufImgSurfaceData;
++import sun.java2d.DestSurfaceProvider;
++import sun.java2d.InvalidPipeException;
++import sun.java2d.Surface;
++import sun.java2d.pipe.RenderQueue;
++import sun.java2d.pipe.hw.AccelGraphicsConfig;
++import sun.java2d.pipe.hw.AccelSurface;
++import sun.security.action.GetPropertyAction;
++
++import static java.awt.image.VolatileImage.*;
++import static java.awt.Transparency.*;
++import static sun.java2d.pipe.hw.AccelSurface.*;
++import static sun.java2d.pipe.hw.ContextCapabilities.*;
++
++/**
++ * This class handles the updates of the non-opaque windows.
++ * The window associated with the peer is updated either given an image or
++ * the window is repainted to an internal buffer which is then used to update
++ * the window.
++ *
++ * Note: this class does not attempt to be thread safe, it is expected to be
++ * called from a single thread (EDT).
++ */
++public abstract class TranslucentWindowPainter {
++
++    protected Window window;
++    protected WWindowPeer peer;
++
++    // REMIND: we probably would want to remove this later
++    private static final boolean forceOpt  =
++        Boolean.valueOf(AccessController.doPrivileged(
++            new GetPropertyAction("sun.java2d.twp.forceopt", "false")));
++    private static final boolean forceSW  =
++        Boolean.valueOf(AccessController.doPrivileged(
++            new GetPropertyAction("sun.java2d.twp.forcesw", "false")));
++
++    /**
++     * Creates an instance of the painter for particular peer.
++     */
++    public static TranslucentWindowPainter createInstance(WWindowPeer peer) {
++        GraphicsConfiguration gc = peer.getGraphicsConfiguration();
++        if (!forceSW && gc instanceof AccelGraphicsConfig) {
++            String gcName = gc.getClass().getSimpleName();
++            AccelGraphicsConfig agc = (AccelGraphicsConfig)gc;
++            // this is a heuristic to check that we have a pcix board
++            // (those have higher transfer rate from gpu to cpu)
++            if ((agc.getContextCapabilities().getCaps() & CAPS_PS30) != 0 ||
++                forceOpt)
++            {
++                // we check for name to avoid loading classes unnecessarily if
++                // a pipeline isn't enabled
++                if (gcName.startsWith("D3D")) {
++                    return new VIOptD3DWindowPainter(peer);
++                } else if (forceOpt && gcName.startsWith("WGL")) {
++                    // on some boards (namely, ATI, even on pcix bus) ogl is
++                    // very slow reading pixels back so for now it is disabled
++                    // unless forced
++                    return new VIOptWGLWindowPainter(peer);
++                }
++            }
++        }
++        return new BIWindowPainter(peer);
++    }
++
++    protected TranslucentWindowPainter(WWindowPeer peer) {
++        this.peer = peer;
++        this.window = (Window)peer.getTarget();
++    }
++
++    /**
++     * Creates (if needed), clears and returns the buffer for this painter.
++     */
++    protected abstract Image getBackBuffer();
++
++    /**
++     * Updates the the window associated with this painter with the contents
++     * of the passed image.
++     * The image can not be null, and NPE will be thrown if it is.
++     */
++    protected abstract boolean update(Image bb);
++
++    /**
++     * Flushes the resources associated with the painter. They will be
++     * recreated as needed.
++     */
++    public abstract void flush();
++
++    /**
++     * Updates the window associated with the painter given the passed image.
++     * If the passed image is null the painter will use its own buffer for
++     * rendering the contents of the window into it and updating the window.
++     *
++     * If the passed buffer has dimensions different from the window, it is
++     * copied into the internal buffer first and the latter is used to update
++     * the window.
++     *
++     * @param bb the image to update the non opaque window with, or null.
++     * If not null, the image must be of ARGB_PRE type.
++     */
++    public void updateWindow(Image bb) {
++        boolean done = false;
++        if (bb != null && (window.getWidth()  != bb.getWidth(null) ||
++                           window.getHeight() != bb.getHeight(null)))
++        {
++            Image ourBB = getBackBuffer();
++            Graphics2D g = (Graphics2D)ourBB.getGraphics();
++            g.drawImage(bb, 0, 0, null);
++            g.dispose();
++            bb = ourBB;
++        }
++        do {
++            if (bb == null) {
++                bb = getBackBuffer();
++                Graphics2D g = (Graphics2D)bb.getGraphics();
++                try {
++                    window.paintAll(g);
++                } finally {
++                    g.dispose();
++                }
++            }
++
++            peer.paintAppletWarning((Graphics2D)bb.getGraphics(),
++                                    bb.getWidth(null), bb.getHeight(null));
++
++            done = update(bb);
++            // in case they passed us a lost VI, next time around we'll use our
++            // own bb because we can not validate and restore the contents of
++            // their VI
++            if (!done) {
++                bb = null;
++            }
++        } while (!done);
++    }
++
++    private static final Image clearImage(Image bb) {
++        Graphics2D g = (Graphics2D)bb.getGraphics();
++        int w = bb.getWidth(null);
++        int h = bb.getHeight(null);
++
++        g.setComposite(AlphaComposite.Src);
++        g.setColor(new Color(0, 0, 0, 0));
++        g.fillRect(0, 0, w, h);
++
++        return bb;
++    }
++
++    /**
++     * A painter which uses BufferedImage as the internal buffer. The window
++     * is painted into this buffer, and the contents then are uploaded
++     * into the layered window.
++     *
++     * This painter handles all types of images passed to its paint(Image)
++     * method (VI, BI, regular Images).
++     */
++    private static class BIWindowPainter extends TranslucentWindowPainter {
++        private WeakReference<BufferedImage> biRef;
++
++        protected BIWindowPainter(WWindowPeer peer) {
++            super(peer);
++        }
++
++        private BufferedImage getBIBackBuffer() {
++            int w = window.getWidth();
++            int h = window.getHeight();
++            BufferedImage bb = biRef == null ? null : biRef.get();
++            if (bb == null || bb.getWidth() != w || bb.getHeight() != h) {
++                if (bb != null) {
++                    bb.flush();
++                    bb = null;
++                }
++                bb = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB_PRE);
++                biRef = new WeakReference<BufferedImage>(bb);
++            }
++            return (BufferedImage)clearImage(bb);
++        }
++
++        @Override
++        protected Image getBackBuffer() {
++            return getBIBackBuffer();
++        }
++
++        @Override
++        protected boolean update(Image bb) {
++            VolatileImage viBB = null;
++
++            if (bb instanceof BufferedImage) {
++                BufferedImage bi = (BufferedImage)bb;
++                int data[] =
++                    ((DataBufferInt)bi.getRaster().getDataBuffer()).getData();
++                peer.updateWindowImpl(data, bi.getWidth(), bi.getHeight());
++                return true;
++            } else if (bb instanceof VolatileImage) {
++                viBB = (VolatileImage)bb;
++                if (bb instanceof DestSurfaceProvider) {
++                    Surface s = ((DestSurfaceProvider)bb).getDestSurface();
++                    if (s instanceof BufImgSurfaceData) {
++                        // the image is probably lost, upload the data from the
++                        // backup surface to avoid creating another heap-based
++                        // image (the parent's buffer)
++                        int w = viBB.getWidth();
++                        int h = viBB.getHeight();
++                        BufImgSurfaceData bisd = (BufImgSurfaceData)s;
++                        int data[] = ((DataBufferInt)bisd.getRaster(0,0,w,h).
++                            getDataBuffer()).getData();
++                        peer.updateWindowImpl(data, w, h);
++                        return true;
++                    }
++                }
++            }
++
++            // copy the passed image into our own buffer, then upload
++            BufferedImage bi = getBIBackBuffer();
++            Graphics2D g = (Graphics2D)bi.getGraphics();
++            g.setComposite(AlphaComposite.Src);
++            g.drawImage(bb, 0, 0, null);
++
++            int data[] =
++                ((DataBufferInt)bi.getRaster().getDataBuffer()).getData();
++            peer.updateWindowImpl(data, bi.getWidth(), bi.getHeight());
++
++            return (viBB != null ? !viBB.contentsLost() : true);
++        }
++
++        public void flush() {
++            if (biRef != null) {
++                biRef.clear();
++            }
++        }
++    }
++
++    /**
++     * A version of the painter which uses VolatileImage as the internal buffer.
++     * The window is painted into this VI and then copied into the parent's
++     * Java heap-based buffer (which is then uploaded to the layered window)
++     */
++    private static class VIWindowPainter extends BIWindowPainter {
++        private WeakReference<VolatileImage> viRef;
++
++        protected VIWindowPainter(WWindowPeer peer) {
++            super(peer);
++        }
++
++        @Override
++        protected Image getBackBuffer() {
++            int w = window.getWidth();
++            int h = window.getHeight();
++            GraphicsConfiguration gc = peer.getGraphicsConfiguration();
++
++            VolatileImage viBB = viRef == null ? null : viRef.get();
++
++            if (viBB == null || viBB.getWidth() != w || viBB.getHeight() != h ||
++                viBB.validate(gc) == IMAGE_INCOMPATIBLE)
++            {
++                if (viBB != null) {
++                    viBB.flush();
++                    viBB = null;
++                }
++
++                if (gc instanceof AccelGraphicsConfig) {
++                    AccelGraphicsConfig agc = ((AccelGraphicsConfig)gc);
++                    viBB = agc.createCompatibleVolatileImage(w, h,
++                                                             TRANSLUCENT,
++                                                             RT_PLAIN);
++                }
++                if (viBB == null) {
++                    viBB = gc.createCompatibleVolatileImage(w, h, TRANSLUCENT);
++                }
++                viBB.validate(gc);
++                viRef = new WeakReference<VolatileImage>(viBB);
++            }
++
++            return clearImage(viBB);
++        }
++
++        @Override
++        public void flush() {
++            if (viRef != null) {
++                VolatileImage viBB = viRef.get();
++                if (viBB != null) {
++                    viBB.flush();
++                    viBB = null;
++                }
++                viRef.clear();
++            }
++        }
++    }
++
++    /**
++     * Optimized version of hw painter. Uses VolatileImages for the
++     * buffer, and uses an optimized path to pull the data from those into
++     * the layered window, bypassing Java heap-based image.
++     */
++    private abstract static class VIOptWindowPainter extends VIWindowPainter {
++
++        protected VIOptWindowPainter(WWindowPeer peer) {
++            super(peer);
++        }
++
++        protected abstract boolean updateWindowAccel(long psdops, int w, int h);
++
++        @Override
++        protected boolean update(Image bb) {
++            if (bb instanceof DestSurfaceProvider) {
++                Surface s = ((DestSurfaceProvider)bb).getDestSurface();
++                if (s instanceof AccelSurface) {
++                    final int w = bb.getWidth(null);
++                    final int h = bb.getHeight(null);
++                    final boolean arr[] = { false };
++                    final AccelSurface as = (AccelSurface)s;
++                    RenderQueue rq = as.getContext().getRenderQueue();
++                    rq.lock();
++                    try {
++                        as.getContext().validateContext(as);
++                        rq.flushAndInvokeNow(new Runnable() {
++                            public void run() {
++                                long psdops = as.getNativeOps();
++                                arr[0] = updateWindowAccel(psdops, w, h);
++                            }
++                        });
++                    } catch (InvalidPipeException e) {
++                        // ignore, false will be returned
++                    } finally {
++                        rq.unlock();
++                    }
++                    return arr[0];
++                }
++            }
++            return super.update(bb);
++        }
++    }
++
++    private static class VIOptD3DWindowPainter extends VIOptWindowPainter {
++
++        protected VIOptD3DWindowPainter(WWindowPeer peer) {
++            super(peer);
++        }
++
++        @Override
++        protected boolean updateWindowAccel(long psdops, int w, int h) {
++            // note: this method is executed on the toolkit thread, no sync is
++            // necessary at the native level, and a pointer to peer can be used
++            return sun.java2d.d3d.D3DSurfaceData.
++                updateWindowAccelImpl(psdops, peer.getData(), w, h);
++        }
++    }
++
++    private static class VIOptWGLWindowPainter extends VIOptWindowPainter {
++
++        protected VIOptWGLWindowPainter(WWindowPeer peer) {
++            super(peer);
++        }
++
++        @Override
++        protected boolean updateWindowAccel(long psdops, int w, int h) {
++            // note: part of this method which deals with GDI will be on the
++            // toolkit thread
++            return sun.java2d.opengl.WGLSurfaceData.
++                updateWindowAccelImpl(psdops, peer, w, h);
++        }
++    }
++}
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WCanvasPeer.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -28,6 +28,7 @@
+ import java.awt.peer.*;
+ import java.lang.ref.WeakReference;
+ import java.lang.reflect.Method;
++import sun.awt.AWTAccessor;
+ import sun.awt.ComponentAccessor;
+ import sun.awt.SunToolkit;
+ import sun.awt.Win32GraphicsDevice;
+@@ -110,16 +111,20 @@
+     }
+ 
+     public void print(Graphics g) {
+-        Dimension d = ((Component)target).getSize();
+-        if (g instanceof Graphics2D ||
+-            g instanceof sun.awt.Graphics2Delegate) {
+-            // background color is setup correctly, so just use clearRect
+-            g.clearRect(0, 0, d.width, d.height);
+-        } else {
+-            // emulate clearRect
+-            g.setColor(((Component)target).getBackground());
+-            g.fillRect(0, 0, d.width, d.height);
+-            g.setColor(((Component)target).getForeground());
++        if (!(target instanceof Window) ||
++            AWTAccessor.getWindowAccessor().isOpaque((Window)target))
++        {
++            Dimension d = ((Component)target).getSize();
++            if (g instanceof Graphics2D ||
++                g instanceof sun.awt.Graphics2Delegate) {
++                // background color is setup correctly, so just use clearRect
++                g.clearRect(0, 0, d.width, d.height);
++            } else {
++                // emulate clearRect
++                g.setColor(((Component)target).getBackground());
++                g.fillRect(0, 0, d.width, d.height);
++                g.setColor(((Component)target).getForeground());
++            }
+         }
+         super.print(g);
+     }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -39,21 +39,22 @@
+ import java.awt.event.InvocationEvent;
+ import java.awt.event.KeyEvent;
+ import sun.awt.Win32GraphicsConfig;
++import sun.awt.Win32GraphicsEnvironment;
+ import sun.java2d.InvalidPipeException;
+ import sun.java2d.SurfaceData;
+-import sun.java2d.d3d.D3DScreenUpdateManager;
+-import static sun.java2d.d3d.D3DSurfaceData.*;
+ import sun.java2d.ScreenUpdateManager;
++import sun.java2d.d3d.D3DSurfaceData;
+ import sun.java2d.opengl.OGLSurfaceData;
++import sun.java2d.pipe.Region;
+ import sun.awt.DisplayChangedListener;
+ import sun.awt.PaintEventDispatcher;
++import sun.awt.SunToolkit;
+ import sun.awt.event.IgnorePaintEvent;
+ 
+ import java.awt.dnd.DropTarget;
+ import java.awt.dnd.peer.DropTargetPeer;
+ import sun.awt.ComponentAccessor;
+ 
+-
+ import java.util.logging.*;
+ 
+ 
+@@ -193,7 +194,7 @@
+                 cont.invalidate();
+                 cont.validate();
+ 
+-                if (surfaceData instanceof D3DWindowSurfaceData ||
++                if (surfaceData instanceof D3DSurfaceData.D3DWindowSurfaceData ||
+                     surfaceData instanceof OGLSurfaceData)
+                 {
+                     // When OGL or D3D is enabled, it is necessary to
+@@ -265,7 +266,7 @@
+             int[] pix = createPrintedPixels(0, startY, totalW, h);
+             if (pix != null) {
+                 BufferedImage bim = new BufferedImage(totalW, h,
+-                                              BufferedImage.TYPE_INT_RGB);
++                                              BufferedImage.TYPE_INT_ARGB);
+                 bim.setRGB(0, 0, totalW, h, pix, 0, totalW);
+                 g.drawImage(bim, 0, startY, null);
+                 bim.flush();
+@@ -902,25 +903,6 @@
+     public void setBoundsOperation(int operation) {
+     }
+ 
+-
+-    native void setRectangularShape(int lox, int loy, int hix, int hiy,
+-                     sun.java2d.pipe.Region region);
+-
+-
+-    // REMIND: Temp workaround for issues with using HW acceleration
+-    // in the browser on Vista when DWM is enabled.
+-    // @return true if the toplevel container is not an EmbeddedFrame or
+-    // if this EmbeddedFrame is acceleration capable, false otherwise
+-    private static final boolean isContainingTopLevelAccelCapable(Component c) {
+-        while (c != null && !(c instanceof WEmbeddedFrame)) {
+-            c = c.getParent();
+-        }
+-        if (c == null) {
+-            return true;
+-        }
+-        return ((WEmbeddedFramePeer)c.getPeer()).isAccelCapable();
+-    }
+-
+     /**
+      * Returns whether this component is capable of being hw accelerated.
+      * More specifically, whether rendering to this component or a
+@@ -935,28 +917,36 @@
+      * @see com.sun.awt.AWTUtilities.Translucency#TRANSLUCENT
+      */
+     public boolean isAccelCapable() {
+-        // REMIND: Temp workaround for issues with using HW acceleration
+-        // in the browser on Vista when DWM is enabled
+-        if (!isContainingTopLevelAccelCapable((Component)target)) {
+-            return false;
+-        }
+-
+-        // REMIND: translucent windows support-related
+-/*
+         boolean isTranslucent =
+             SunToolkit.isContainingTopLevelTranslucent((Component)target);
+         // D3D/OGL and translucent windows interacted poorly in Windows XP;
+         // these problems are no longer present in Vista
+         return !isTranslucent || Win32GraphicsEnvironment.isVistaOS();
+-*/
+-        return true;
++    }
++
++    native void setRectangularShape(int lox, int loy, int hix, int hiy,
++                     Region region);
++
++
++    // REMIND: Temp workaround for issues with using HW acceleration
++    // in the browser on Vista when DWM is enabled.
++    // @return true if the toplevel container is not an EmbeddedFrame or
++    // if this EmbeddedFrame is acceleration capable, false otherwise
++    private static final boolean isContainingTopLevelAccelCapable(Component c) {
++        while (c != null && !(c instanceof WEmbeddedFrame)) {
++            c = c.getParent();
++        }
++        if (c == null) {
++            return true;
++        }
++        return ((WEmbeddedFramePeer)c.getPeer()).isAccelCapable();
+     }
+ 
+     /**
+      * Applies the shape to the native component window.
+      * @since 1.7
+      */
+-    public void applyShape(sun.java2d.pipe.Region shape) {
++    public void applyShape(Region shape) {
+         if (shapeLog.isLoggable(Level.FINER)) {
+             shapeLog.finer(
+                     "*** INFO: Setting shape: PEER: " + this
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WFileDialogPeer.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -244,4 +244,10 @@
+     public boolean isRestackSupported() {
+         return false;
+     }
++
++    // The effects are not supported for system dialogs.
++    public void applyShape(sun.java2d.pipe.Region shape) {}
++    public void setOpacity(float opacity) {}
++    public void setOpaque(boolean isOpaque) {}
++    public void updateWindow(java.awt.image.BufferedImage backBuffer) {}
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WPrintDialogPeer.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2009, 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
+@@ -156,4 +156,10 @@
+     public boolean isRestackSupported() {
+         return false;
+     }
++
++    // The effects are not supported for system dialogs.
++    public void applyShape(sun.java2d.pipe.Region shape) {}
++    public void setOpacity(float opacity) {}
++    public void setOpaque(boolean isOpaque) {}
++    public void updateWindow(java.awt.image.BufferedImage backBuffer) {}
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WToolkit.java openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -966,4 +966,34 @@
+     }
+ 
+     private static native boolean isProtectedMode();
++
++    @Override
++    public boolean isWindowOpacitySupported() {
++        // supported in Win2K and later
++        return true;
++    }
++
++    @Override
++    public boolean isWindowShapingSupported() {
++        return true;
++    }
++
++    @Override
++    public boolean isWindowTranslucencySupported() {
++        // supported in Win2K and later
++        return true;
++    }
++
++    @Override
++    public boolean isTranslucencyCapable(GraphicsConfiguration gc) {
++        //XXX: worth checking if 8-bit? Anyway, it doesn't hurt.
++        return true;
++    }
++
++    // On MS Windows one must use the peer.updateWindow() to implement
++    // non-opaque windows.
++    @Override
++    public boolean needUpdateWindow() {
++        return true;
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -31,17 +31,15 @@
+ 
+ import java.beans.*;
+ 
+-import java.lang.ref.*;
+ import java.lang.reflect.*;
+ 
+-import java.security.*;
+-
+ import java.util.*;
+ import java.util.List;
+ import java.util.logging.*;
+ 
+ import sun.awt.*;
+-import sun.awt.image.*;
++
++import sun.java2d.pipe.Region;
+ 
+ public class WWindowPeer extends WPanelPeer implements WindowPeer {
+ 
+@@ -52,6 +50,10 @@
+     // extends WWindowPeer, not WDialogPeer
+     private WWindowPeer modalBlocker = null;
+ 
++    private boolean isOpaque;
++
++    private volatile TranslucentWindowPainter painter;
++
+     /*
+      * A key used for storing a list of active windows in AppContext. The value
+      * is a list of windows, sorted by the time of activation: later a window is
+@@ -90,9 +92,18 @@
+                 l.remove(this);
+             }
+         }
++
+         // Remove ourself from the Map of DisplayChangeListeners
+         GraphicsConfiguration gc = getGraphicsConfiguration();
+         ((Win32GraphicsDevice)gc.getDevice()).removeDisplayChangedListener(this);
++
++        TranslucentWindowPainter currentPainter = painter;
++        if (currentPainter != null) {
++            currentPainter.flush();
++            // don't set the current one to null here; reduces the chances of
++            // MT issues (like NPEs)
++        }
++
+         super.disposeImpl();
+     }
+ 
+@@ -164,6 +175,10 @@
+         }
+ 
+         updateIconImages();
++
++        updateShape();
++        updateOpacity();
++        updateOpaque();
+     }
+ 
+     native void createAwtWindow(WComponentPeer parent);
+@@ -197,6 +212,8 @@
+         if (((Window)target).isAlwaysOnTopSupported() && alwaysOnTop) {
+             setAlwaysOnTop(alwaysOnTop);
+         }
++
++        updateWindow(null);
+     }
+ 
+     // Synchronize the insets members (here & in helper) with actual window
+@@ -279,6 +296,31 @@
+         }
+     }
+ 
++    private void updateShape() {
++        // Shape shape = ((Window)target).getShape();
++        Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
++        if (shape != null) {
++            applyShape(Region.getInstance(shape, null));
++        }
++    }
++
++    private void updateOpacity() {
++        // float opacity = ((Window)target).getOpacity();
++        float opacity = AWTAccessor.getWindowAccessor().getOpacity((Window)target);
++        if (opacity < 1.0f) {
++            setOpacity(opacity);
++        }
++    }
++
++    private void updateOpaque() {
++        this.isOpaque = true;
++        // boolean opaque = ((Window)target).isOpaque();
++        boolean opaque = AWTAccessor.getWindowAccessor().isOpaque((Window)target);
++        if (!opaque) {
++            setOpaque(opaque);
++        }
++    }
++
+     native void setMinSize(int width, int height);
+ 
+ /*
+@@ -531,6 +573,135 @@
+          super.setBounds(newBounds.x, newBounds.y, newBounds.width, newBounds.height, op);
+      }
+ 
++    @Override
++    public void print(Graphics g) {
++        // We assume we print the whole frame,
++        // so we expect no clip was set previously
++        Shape shape = AWTAccessor.getWindowAccessor().getShape((Window)target);
++        if (shape != null) {
++            g.setClip(shape);
++        }
++        super.print(g);
++    }
++
++    private void replaceSurfaceDataRecursively(Component c) {
++        if (c instanceof Container) {
++            for (Component child : ((Container)c).getComponents()) {
++                replaceSurfaceDataRecursively(child);
++            }
++        }
++        ComponentPeer cp = c.getPeer();
++        if (cp instanceof WComponentPeer) {
++            ((WComponentPeer)cp).replaceSurfaceDataLater();
++        }
++    }
++
++    private native void setOpacity(int iOpacity);
++
++    public void setOpacity(float opacity) {
++        if (!((SunToolkit)((Window)target).getToolkit()).
++            isWindowOpacitySupported())
++        {
++            return;
++        }
++
++        replaceSurfaceDataRecursively((Component)getTarget());
++
++        final int maxOpacity = 0xff;
++        int iOpacity = (int)(opacity * maxOpacity);
++        if (iOpacity < 0) {
++            iOpacity = 0;
++        }
++        if (iOpacity > maxOpacity) {
++            iOpacity = maxOpacity;
++        }
++
++        setOpacity(iOpacity);
++        updateWindow(null);
++    }
++
++    private native void setOpaqueImpl(boolean isOpaque);
++
++    public void setOpaque(boolean isOpaque) {
++        Window target = (Window)getTarget();
++
++        SunToolkit sunToolkit = (SunToolkit)target.getToolkit();
++        if (!sunToolkit.isWindowTranslucencySupported() ||
++            !sunToolkit.isTranslucencyCapable(target.getGraphicsConfiguration()))
++        {
++            return;
++        }
++
++        boolean opaqueChanged = this.isOpaque != isOpaque;
++        boolean isVistaOS = Win32GraphicsEnvironment.isVistaOS();
++
++        if (opaqueChanged && !isVistaOS){
++            // non-Vista OS: only replace the surface data if the opacity
++            // status changed (see WComponentPeer.isAccelCapable() for more)
++            replaceSurfaceDataRecursively(target);
++        }
++
++        this.isOpaque = isOpaque;
++
++        setOpaqueImpl(isOpaque);
++
++        if (opaqueChanged) {
++            if (isOpaque) {
++                TranslucentWindowPainter currentPainter = painter;
++                if (currentPainter != null) {
++                    currentPainter.flush();
++                    painter = null;
++                }
++            } else {
++                painter = TranslucentWindowPainter.createInstance(this);
++            }
++        }
++
++        if (opaqueChanged && isVistaOS) {
++            // On Vista: setting the window non-opaque makes the window look
++            // rectangular, though still catching the mouse clicks within
++            // its shape only. To restore the correct visual appearance
++            // of the window (i.e. w/ the correct shape) we have to reset
++            // the shape.
++            Shape shape = AWTAccessor.getWindowAccessor().getShape(target);
++            if (shape != null) {
++                AWTAccessor.getWindowAccessor().setShape(target, shape);
++            }
++        }
++
++        updateWindow(null);
++    }
++
++    public native void updateWindowImpl(int[] data, int width, int height);
++
++    public void updateWindow(BufferedImage backBuffer) {
++        if (isOpaque) {
++            return;
++        }
++
++        TranslucentWindowPainter currentPainter = painter;
++        if (currentPainter != null) {
++            currentPainter.updateWindow(backBuffer);
++        } else if (log.isLoggable(Level.FINER)) {
++            log.log(Level.FINER,
++                    "Translucent window painter is null in updateWindow");
++        }
++    }
++
++    /**
++     * Paints the Applet Warning into the passed Graphics2D. This method is
++     * called by the TranslucentWindowPainter before updating the layered
++     * window.
++     *
++     * @param g Graphics context to paint the warning to
++     * @param w the width of the area
++     * @param h the height of the area
++     * @see TranslucentWindowPainter
++     */
++    public void paintAppletWarning(Graphics2D g, int w, int h) {
++        // REMIND: the applet warning needs to be painted here
++    }
++
+     /*
+      * Static inner class, listens for 'activeWindow' KFM property changes and
+      * updates the list of active windows per AppContext, so the latest active
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java
+--- openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2004, 2009, 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
+@@ -72,9 +72,8 @@
+         // the OGL pipeline can render directly to the screen and interfere
+         // with layered windows, which is why we don't allow accelerated
+         // surfaces in this case
+-        if (!peer.isAccelCapable())
+-        // REMIND: commented until toplevel translucency is implemented
+-//            || !SunToolkit.isContainingTopLevelOpaque((Component)peer.getTarget()))
++        if (!peer.isAccelCapable() ||
++            !SunToolkit.isContainingTopLevelOpaque((Component)peer.getTarget()))
+         {
+             return null;
+         }
+@@ -93,9 +92,8 @@
+         // the OGL pipeline can render directly to the screen and interfere
+         // with layered windows, which is why we don't allow accelerated
+         // surfaces in this case
+-        if (!peer.isAccelCapable())
+-        // REMIND: commented until toplevel translucency is implemented
+-//            || !SunToolkit.isContainingTopLevelOpaque((Component)peer.getTarget()))
++        if (!peer.isAccelCapable() ||
++            !SunToolkit.isContainingTopLevelOpaque((Component)peer.getTarget()))
+         {
+             return null;
+         }
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/awt/utility/rect.h openjdk/jdk/src/windows/native/sun/awt/utility/rect.h
+--- openjdk.orig/jdk/src/windows/native/sun/awt/utility/rect.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/awt/utility/rect.h	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2009, 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
+@@ -43,5 +43,15 @@
+ 
+ #define RECT_INC_HEIGHT(r) (r).bottom++
+ 
++#if defined(__cplusplus)
++extern "C" {
++#endif
++
++int BitmapToYXBandedRectangles(int bitsPerPixel, int width, int height,
++        unsigned char * buf, RECT_T * outBuf);
++
++#if defined(__cplusplus)
++}
++#endif
+ 
+ #endif // _AWT_RECT_H
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2009, 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
+@@ -614,17 +614,15 @@
+ 
+     res = pTmpSurface->LockRect(&lockedRect, NULL, D3DLOCK_NOSYSLOCK);
+     if (SUCCEEDED(res)) {
+-        // REMIND: commented until translucent window support is integrated
+-//        hBitmap =
+-//            BitmapUtil::CreateBitmapFromARGBPre(w, h,
+-//                                                lockedRect.Pitch,
+-//                                                (int*)lockedRect.pBits);
++        hBitmap =
++            BitmapUtil::CreateBitmapFromARGBPre(w, h,
++                                                lockedRect.Pitch,
++                                                (int*)lockedRect.pBits);
+         pTmpSurface->UnlockRect();
+     }
+     RETURN_STATUS_IF_NULL(hBitmap, JNI_FALSE);
+ 
+-    // REMIND: commented until translucent window support is integrated
+-//    window->UpdateWindow(env, NULL, w, h, hBitmap);
++    window->UpdateWindow(env, NULL, w, h, hBitmap);
+ 
+     // hBitmap is released in UpdateWindow
+ 
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c
+--- openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2004, 2009, 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
+@@ -625,17 +625,15 @@
+     j2d_glPixelStorei(GL_PACK_ALIGNMENT, 4);
+ 
+     // the pixels read from the surface are already premultiplied
+-    // REMIND: commented until translucent window support is integrated
+-//    hBitmap = BitmapUtil_CreateBitmapFromARGBPre(w, h, scanStride,
+-//                                                 (int*)pDst);
++    hBitmap = BitmapUtil_CreateBitmapFromARGBPre(w, h, scanStride,
++                                                 (int*)pDst);
+     free(pDst);
+ 
+     if (hBitmap == NULL) {
+         return JNI_FALSE;
+     }
+ 
+-    // REMIND: commented until translucent window support is integrated
+-    // AwtWindow_UpdateWindow(env, peer, w, h, hBitmap);
++    AwtWindow_UpdateWindow(env, peer, w, h, hBitmap);
+ 
+     // hBitmap is released in UpdateWindow
+ 
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_BitmapUtil.cpp openjdk/jdk/src/windows/native/sun/windows/awt_BitmapUtil.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_BitmapUtil.cpp	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_BitmapUtil.cpp	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2006, 2009, 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
+@@ -28,9 +28,14 @@
+ #include <windowsx.h>
+ #include <zmouse.h>
+ 
++#include "GraphicsPrimitiveMgr.h"
++
+ #include "awt.h"
+ #include "awt_BitmapUtil.h"
+ 
++// Platform-dependent RECT_[EQ | SET | INC_HEIGHT] macros
++#include "utility/rect.h"
++
+ HBITMAP BitmapUtil::CreateTransparencyMaskFromARGB(int width, int height, int* imageData)
+ {
+     //Scan lines should be aligned to word boundary
+@@ -148,3 +153,222 @@
+     ::GdiFlush();
+     return hBitmap;
+ }
++
++/*
++ * Creates 32-bit premultiplied ARGB bitmap from specified ARGBPre data.
++ * This function may not work on OS prior to Win95.
++ * See MSDN articles for CreateDIBitmap, BITMAPINFOHEADER,
++ * BITMAPV4HEADER, BITMAPV5HEADER for additional info.
++ */
++HBITMAP BitmapUtil::CreateBitmapFromARGBPre(int width, int height,
++                                            int srcStride,
++                                            int* imageData)
++{
++    BITMAPINFOHEADER bmi;
++    void *bitmapBits = NULL;
++
++    ZeroMemory(&bmi, sizeof(bmi));
++    bmi.biSize = sizeof(bmi);
++    bmi.biWidth = width;
++    bmi.biHeight = -height;
++    bmi.biPlanes = 1;
++    bmi.biBitCount = 32;
++    bmi.biCompression = BI_RGB;
++
++    HBITMAP hBitmap =
++        ::CreateDIBSection(NULL, (BITMAPINFO *) & bmi, DIB_RGB_COLORS,
++                           &bitmapBits, NULL, 0);
++
++    if (!bitmapBits) {
++        return NULL;
++    }
++
++    int dstStride = width * 4;
++
++    if (srcStride == dstStride) {
++        memcpy(bitmapBits, (void*)imageData, srcStride * height);
++    } else if (height > 0) {
++        void *pSrcPixels = (void*)imageData;
++        void *pDstPixels = bitmapBits;
++        do {
++            memcpy(pDstPixels, pSrcPixels, dstStride);
++            pSrcPixels = PtrAddBytes(pSrcPixels, srcStride);
++            pDstPixels = PtrAddBytes(pDstPixels, dstStride);
++        } while (--height > 0);
++    }
++
++    return hBitmap;
++}
++
++extern "C" {
++
++/**
++ * This method is called from the WGL pipeline when it needs to create a bitmap
++ * needed to update the layered window.
++ */
++HBITMAP BitmapUtil_CreateBitmapFromARGBPre(int width, int height,
++                                           int srcStride,
++                                           int* imageData)
++{
++    return BitmapUtil::CreateBitmapFromARGBPre(width, height,
++                                               srcStride, imageData);
++
++}
++
++}  /* extern "C" */
++
++
++/**
++ * Transforms the given bitmap into an HRGN representing the transparency
++ * of the bitmap. The bitmap MUST BE 32bpp. Alpha value == 0 is considered
++ * transparent, alpha > 0 - opaque.
++ */
++HRGN BitmapUtil::BitmapToRgn(HBITMAP hBitmap)
++{
++    HDC hdc = ::CreateCompatibleDC(NULL);
++    ::SelectObject(hdc, hBitmap);
++
++    BITMAPINFOEX bi;
++    ::ZeroMemory(&bi, sizeof(bi));
++
++    bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
++
++    BOOL r = ::GetDIBits(hdc, hBitmap, 0, 0, NULL,
++            reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
++
++    if (!r || bi.bmiHeader.biBitCount != 32)
++    {
++        ::DeleteDC(hdc);
++        return NULL;
++    }
++
++    UINT width = bi.bmiHeader.biWidth;
++    UINT height = abs(bi.bmiHeader.biHeight);
++
++    BYTE * buf = (BYTE*)safe_Malloc(bi.bmiHeader.biSizeImage);
++    bi.bmiHeader.biHeight = -height;
++    ::GetDIBits(hdc, hBitmap, 0, height, buf,
++            reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
++
++    /* reserving memory for the worst case */
++    RGNDATA * pRgnData = (RGNDATA *) safe_Malloc(sizeof(RGNDATAHEADER) +
++            sizeof(RECT) * (width / 2 + 1) * height);
++    RGNDATAHEADER * pRgnHdr = (RGNDATAHEADER *) pRgnData;
++    pRgnHdr->dwSize = sizeof(RGNDATAHEADER);
++    pRgnHdr->iType = RDH_RECTANGLES;
++    pRgnHdr->nRgnSize = 0;
++    pRgnHdr->rcBound.top = 0;
++    pRgnHdr->rcBound.left = 0;
++    pRgnHdr->rcBound.bottom = height;
++    pRgnHdr->rcBound.right = width;
++
++    pRgnHdr->nCount = BitmapToYXBandedRectangles(32, width, height, buf,
++            (RECT_T *) (((BYTE *) pRgnData) + sizeof(RGNDATAHEADER)));
++
++    HRGN rgn = ::ExtCreateRegion(NULL,
++            sizeof(RGNDATAHEADER) + sizeof(RECT_T) * pRgnHdr->nCount,
++            pRgnData);
++
++    free(pRgnData);
++    ::DeleteDC(hdc);
++    free(buf);
++
++    return rgn;
++}
++
++/**
++ * Makes a copy of the given bitmap. Blends every pixel of the source
++ * with the given blendColor and alpha. If alpha == 0, the function
++ * simply makes a plain copy of the source without any blending.
++ */
++HBITMAP BitmapUtil::BlendCopy(HBITMAP hSrcBitmap, COLORREF blendColor,
++        BYTE alpha)
++{
++    HDC hdc = ::CreateCompatibleDC(NULL);
++    HBITMAP oldBitmap = (HBITMAP)::SelectObject(hdc, hSrcBitmap);
++
++    BITMAPINFOEX bi;
++    ::ZeroMemory(&bi, sizeof(bi));
++
++    bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
++
++    BOOL r = ::GetDIBits(hdc, hSrcBitmap, 0, 0, NULL,
++            reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
++
++    if (!r || bi.bmiHeader.biBitCount != 32)
++    {
++        ::DeleteDC(hdc);
++        return NULL;
++    }
++
++    UINT width = bi.bmiHeader.biWidth;
++    UINT height = abs(bi.bmiHeader.biHeight);
++
++    BYTE * buf = (BYTE*)safe_Malloc(bi.bmiHeader.biSizeImage);
++    bi.bmiHeader.biHeight = -height;
++    ::GetDIBits(hdc, hSrcBitmap, 0, height, buf,
++            reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
++
++    UINT widthBytes = width * bi.bmiHeader.biBitCount / 8;
++    UINT alignedWidth = (((widthBytes - 1) / 4) + 1) * 4;
++    UINT i, j;
++
++    for (j = 0; j < height; j++) {
++        BYTE *pSrc = (BYTE *) buf + j * alignedWidth;
++        for (i = 0; i < width; i++, pSrc += 4) {
++            // Note: if the current alpha is zero, the other three color
++            // components may (theoretically) contain some uninitialized
++            // data. The developer does not expect to display them,
++            // hence we handle this situation differently.
++            if (pSrc[3] == 0) {
++                pSrc[0] = GetBValue(blendColor) * alpha / 255;
++                pSrc[1] = GetGValue(blendColor) * alpha / 255;
++                pSrc[2] = GetRValue(blendColor) * alpha / 255;
++                pSrc[3] = alpha;
++            } else {
++                pSrc[0] = (GetBValue(blendColor) * alpha / 255) +
++                    (pSrc[0] * (255 - alpha) / 255);
++                pSrc[1] = (GetGValue(blendColor) * alpha / 255) +
++                    (pSrc[1] * (255 - alpha) / 255);
++                pSrc[2] = (GetRValue(blendColor) * alpha / 255) +
++                    (pSrc[2] * (255 - alpha) / 255);
++                pSrc[3] = (alpha * alpha / 255) +
++                    (pSrc[3] * (255 - alpha) / 255);
++            }
++        }
++    }
++
++    HBITMAP hDstBitmap = ::CreateDIBitmap(hdc,
++            reinterpret_cast<BITMAPINFOHEADER*>(&bi),
++            CBM_INIT,
++            buf,
++            reinterpret_cast<BITMAPINFO*>(&bi),
++            DIB_RGB_COLORS
++            );
++
++    ::SelectObject(hdc, oldBitmap);
++    ::DeleteDC(hdc);
++    free(buf);
++
++    return hDstBitmap;
++}
++
++/**
++ * Creates a 32 bit ARGB bitmap. Returns the bitmap handle. The *bitmapBits
++ * contains the pointer to the bitmap data or NULL if an error occured.
++ */
++HBITMAP BitmapUtil::CreateARGBBitmap(int width, int height, void ** bitmapBitsPtr)
++{
++    BITMAPINFOHEADER bmi;
++
++    ::ZeroMemory(&bmi, sizeof(bmi));
++    bmi.biSize = sizeof(BITMAPINFOHEADER);
++    bmi.biWidth = width;
++    bmi.biHeight = -height;
++    bmi.biPlanes = 1;
++    bmi.biBitCount = 32;
++    bmi.biCompression = BI_RGB;
++
++    return ::CreateDIBSection(NULL, (BITMAPINFO *) & bmi, DIB_RGB_COLORS,
++                bitmapBitsPtr, NULL, 0);
++}
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_BitmapUtil.h openjdk/jdk/src/windows/native/sun/windows/awt_BitmapUtil.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_BitmapUtil.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_BitmapUtil.h	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2006, 2009, 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
+@@ -45,6 +45,32 @@
+      */
+     static HBITMAP CreateV4BitmapFromARGB(int width, int height, int* imageData);
+ 
++    /**
++     * Creates 32-bit premultiplied ARGB V4 Bitmap (Win95-compatible) from
++     * specified ARGB Pre input data.
++     */
++    static HBITMAP CreateBitmapFromARGBPre(int width, int height,
++                                           int srcStride,
++                                           int* imageData);
++
++    /**
++     * Transforms the given bitmap into an HRGN representing the transparency
++     * of the bitmap.
++     */
++    static HRGN BitmapToRgn(HBITMAP hBitmap);
++
++    /**
++     * Makes a copy of the given bitmap. Blends every pixel of the source
++     * with the given blendColor and alpha. If alpha == 0, the function
++     * simply makes a plain copy of the source without any blending.
++     */
++    static HBITMAP BlendCopy(HBITMAP hSrcBitmap, COLORREF blendColor, BYTE alpha);
++
++    /**
++     * Creates a 32 bit ARGB bitmap. Returns the bitmap handle.
++     * The pointer to the bitmap data is stored into bitmapBitsPtr.
++     */
++    static HBITMAP CreateARGBBitmap(int width, int height, void ** bitmapBitsPtr);
+ };
+ 
+ #endif
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-16 01:27:25.012325621 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -221,9 +221,6 @@
+ BOOL AwtComponent::sm_rtlReadingOrder =
+     PRIMARYLANGID(GetInputLanguage()) == LANG_ARABIC;
+ 
+-UINT AwtComponent::sm_95WheelMessage = WM_NULL;
+-UINT AwtComponent::sm_95WheelSupport = WM_NULL;
+-
+ HWND AwtComponent::sm_cursorOn;
+ BOOL AwtComponent::m_QueryNewPaletteCalled = FALSE;
+ 
+@@ -4700,6 +4697,25 @@
+     return hdc;
+ }
+ 
++void AwtComponent::FillBackground(HDC hMemoryDC, SIZE &size)
++{
++    RECT eraseR = { 0, 0, size.cx, size.cy };
++    VERIFY(::FillRect(hMemoryDC, &eraseR, GetBackgroundBrush()));
++}
++
++void AwtComponent::FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha)
++{
++    if (bitmapBits) {
++        DWORD* dest = (DWORD*)bitmapBits;
++        //XXX: might be optimized to use one loop (cy*cx -> 0).
++        for (int i = 0; i < size.cy; i++ ) {
++            for (int j = 0; j < size.cx; j++ ) {
++                ((BYTE*)(dest++))[3] = alpha;
++            }
++        }
++    }
++}
++
+ jintArray AwtComponent::CreatePrintedPixels(SIZE &loc, SIZE &size) {
+     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+ 
+@@ -6276,15 +6292,12 @@
+ 
+     AwtComponent *c = NULL;
+ 
+-
+-
+     PDATA pData;
+     JNI_CHECK_PEER_GOTO(self, ret);
++
+     c = (AwtComponent *)pData;
+-    if (::IsWindow(c->GetHWnd()))
+-    {
++    if (::IsWindow(c->GetHWnd())) {
+         HRGN hRgn = NULL;
+-
+         if (region || x1 || x2 || y1 || y2) {
+             // If all the params are zeros, the shape must be simply reset.
+             // Otherwise, convert it into a region.
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h openjdk/jdk/src/windows/native/sun/windows/awt_Component.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.h	2011-02-16 01:27:25.016325311 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -422,9 +422,6 @@
+     /* Functions for MouseWheel support on Windows95
+      * These should only be called if running on 95
+      */
+-    static void Wheel95Init();
+-    INLINE static UINT Wheel95GetMsg() {return sm_95WheelMessage;}
+-    static UINT Wheel95GetScrLines();
+ 
+     /* Determines whether the component is obscured by another window */
+     // Called on Toolkit thread
+@@ -714,9 +711,9 @@
+     virtual void SetDragCapture(UINT flags);
+     virtual void ReleaseDragCapture(UINT flags);
+ 
+-    // 95 support for mouse wheel
+-    static UINT sm_95WheelMessage;
+-    static UINT sm_95WheelSupport;
++    //These functions are overridden in AwtWindow to handle non-opaque windows.
++    virtual void FillBackground(HDC hMemoryDC, SIZE &size);
++    virtual void FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha);
+ 
+ private:
+     BOOL m_bSubclassed;
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-02-16 01:27:25.016325311 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -25,6 +25,8 @@
+ 
+ #include <windowsx.h>
+ 
++#include <jlong.h>
++
+ #include "awt_Component.h"
+ #include "awt_Container.h"
+ #include "awt_Frame.h"
+@@ -87,7 +89,6 @@
+     jint x, y;
+     jint w, h;
+ };
+-
+ // struct for _SetIconImagesData
+ struct SetIconImagesDataStruct {
+     jobject window;
+@@ -96,7 +97,6 @@
+     jintArray smallIconRaster;
+     jint smw, smh;
+ };
+-
+ // struct for _SetMinSize() method
+ // and other methods setting sizes
+ struct SizeStruct {
+@@ -113,6 +113,24 @@
+     jobject window;
+     jlong blockerHWnd;
+ };
++// struct for _SetOpacity() method
++struct OpacityStruct {
++    jobject window;
++    jint iOpacity;
++};
++// struct for _SetOpaque() method
++struct OpaqueStruct {
++    jobject window;
++    jboolean isOpaque;
++};
++// struct for _UpdateWindow() method
++struct UpdateWindowStruct {
++    jobject window;
++    jintArray data;
++    HBITMAP hBitmap;
++    jint width, height;
++};
++
+ /************************************************************************
+  * AwtWindow fields
+  */
+@@ -164,6 +182,11 @@
+             ::SetWindowsHookEx(WH_CBT, (HOOKPROC)AwtWindow::CBTFilter,
+                                0, AwtToolkit::MainThread());
+     }
++
++    m_opaque = TRUE;
++    m_opacity = 0xff;
++
++    ::InitializeCriticalSection(&contentBitmapCS);
+ }
+ 
+ AwtWindow::~AwtWindow()
+@@ -1870,6 +1893,216 @@
+     //Does nothing for windows, is overriden for frames and dialogs
+ }
+ 
++void AwtWindow::RedrawWindow()
++{
++    if (isOpaque()) {
++        ::RedrawWindow(GetHWnd(), NULL, NULL,
++                RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
++    } else {
++        ::EnterCriticalSection(&contentBitmapCS);
++        if (hContentBitmap != NULL) {
++            UpdateWindowImpl(contentWidth, contentHeight, hContentBitmap);
++        }
++        ::LeaveCriticalSection(&contentBitmapCS);
++    }
++}
++
++void AwtWindow::SetTranslucency(BYTE opacity, BOOL opaque)
++{
++    BYTE old_opacity = getOpacity();
++    BOOL old_opaque = isOpaque();
++
++    if (opacity == old_opacity && opaque == old_opaque) {
++        return;
++    }
++
++    setOpacity(opacity);
++    setOpaque(opaque);
++
++    HWND hwnd = GetHWnd();
++
++    LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE);
++
++    if (opaque != old_opaque) {
++        ::EnterCriticalSection(&contentBitmapCS);
++        if (hContentBitmap != NULL) {
++            ::DeleteObject(hContentBitmap);
++            hContentBitmap = NULL;
++        }
++        ::LeaveCriticalSection(&contentBitmapCS);
++    }
++
++    if (opaque && opacity == 0xff) {
++        // Turn off all the effects
++        ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style & ~WS_EX_LAYERED);
++        // Ask the window to repaint itself and all the children
++        RedrawWindow();
++    } else {
++        // We're going to enable some effects
++        if (!(ex_style & WS_EX_LAYERED)) {
++            ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style | WS_EX_LAYERED);
++        } else {
++            if ((opaque && opacity < 0xff) ^ (old_opaque && old_opacity < 0xff)) {
++                // _One_ of the modes uses the SetLayeredWindowAttributes.
++                // Need to reset the style in this case.
++                // If both modes are simple (i.e. just changing the opacity level),
++                // no need to reset the style.
++                ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style & ~WS_EX_LAYERED);
++                ::SetWindowLong(hwnd, GWL_EXSTYLE, ex_style | WS_EX_LAYERED);
++            }
++        }
++
++        if (opaque) {
++            // Simple opacity mode
++            ::SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), opacity, LWA_ALPHA);
++        }
++    }
++}
++
++static HBITMAP CreateBitmapFromRaster(JNIEnv* env, jintArray raster, jint w, jint h)
++{
++    HBITMAP image = NULL;
++    if (raster != NULL) {
++        int* rasterBuffer = NULL;
++        try {
++            rasterBuffer = (int *)env->GetPrimitiveArrayCritical(raster, 0);
++            JNI_CHECK_NULL_GOTO(rasterBuffer, "raster data", done);
++            image = BitmapUtil::CreateBitmapFromARGBPre(w, h, w*4, rasterBuffer);
++        } catch (...) {
++            if (rasterBuffer != NULL) {
++                env->ReleasePrimitiveArrayCritical(raster, rasterBuffer, 0);
++            }
++            throw;
++        }
++        if (rasterBuffer != NULL) {
++            env->ReleasePrimitiveArrayCritical(raster, rasterBuffer, 0);
++        }
++    }
++done:
++    return image;
++}
++
++void AwtWindow::UpdateWindowImpl(int width, int height, HBITMAP hBitmap)
++{
++    if (isOpaque()) {
++        return;
++    }
++
++    HWND hWnd = GetHWnd();
++    HDC hdcDst = ::GetDC(NULL);
++    HDC hdcSrc = ::CreateCompatibleDC(NULL);
++    HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hdcSrc, hBitmap);
++
++    //XXX: this code doesn't paint the children (say, the java.awt.Button)!
++    //So, if we ever want to support HWs here, we need to repaint them
++    //in some other way...
++    //::SendMessage(hWnd, WM_PRINT, (WPARAM)hdcSrc, /*PRF_CHECKVISIBLE |*/
++    //      PRF_CHILDREN /*| PRF_CLIENT | PRF_NONCLIENT*/);
++
++    POINT ptSrc;
++    ptSrc.x = ptSrc.y = 0;
++
++    RECT rect;
++    POINT ptDst;
++    SIZE size;
++
++    ::GetWindowRect(hWnd, &rect);
++    ptDst.x = rect.left;
++    ptDst.y = rect.top;
++    size.cx = width;
++    size.cy = height;
++
++    BLENDFUNCTION bf;
++
++    bf.SourceConstantAlpha = getOpacity();
++    bf.AlphaFormat = AC_SRC_ALPHA;
++    bf.BlendOp = AC_SRC_OVER;
++    bf.BlendFlags = 0;
++
++    ::UpdateLayeredWindow(hWnd, hdcDst, &ptDst, &size, hdcSrc, &ptSrc,
++            RGB(0, 0, 0), &bf, ULW_ALPHA);
++
++    ::ReleaseDC(NULL, hdcDst);
++    ::SelectObject(hdcSrc, hOldBitmap);
++    ::DeleteDC(hdcSrc);
++}
++
++void AwtWindow::UpdateWindow(JNIEnv* env, jintArray data, int width, int height,
++                             HBITMAP hNewBitmap)
++{
++    if (isOpaque()) {
++        return;
++    }
++
++    HBITMAP hBitmap;
++    if (hNewBitmap == NULL) {
++        if (data == NULL) {
++            return;
++        }
++        hBitmap = CreateBitmapFromRaster(env, data, width, height);
++        if (hBitmap == NULL) {
++            return;
++        }
++    } else {
++        hBitmap = hNewBitmap;
++    }
++
++    ::EnterCriticalSection(&contentBitmapCS);
++    if (hContentBitmap != NULL) {
++        ::DeleteObject(hContentBitmap);
++    }
++    hContentBitmap = hBitmap;
++    contentWidth = width;
++    contentHeight = height;
++    UpdateWindowImpl(width, height, hBitmap);
++    ::LeaveCriticalSection(&contentBitmapCS);
++}
++
++void AwtWindow::FillBackground(HDC hMemoryDC, SIZE &size)
++{
++    if (isOpaque()) {
++        AwtCanvas::FillBackground(hMemoryDC, size);
++    }
++}
++
++void AwtWindow::FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha)
++{
++    if (isOpaque()) {
++        AwtCanvas::FillAlpha(bitmapBits, size, alpha);
++    }
++}
++
++/*
++ * Fixed 6353381: it's improved fix for 4792958
++ * which was backed-out to avoid 5059656
++ */
++BOOL AwtWindow::HasValidRect()
++{
++    RECT inside;
++    RECT outside;
++
++    if (::IsIconic(GetHWnd())) {
++        return FALSE;
++    }
++
++    ::GetClientRect(GetHWnd(), &inside);
++    ::GetWindowRect(GetHWnd(), &outside);
++
++    BOOL isZeroClientArea = (inside.right == 0 && inside.bottom == 0);
++    BOOL isInvalidLocation = ((outside.left == -32000 && outside.top == -32000) || // Win2k && WinXP
++                              (outside.left == 32000 && outside.top == 32000) || // Win95 && Win98
++                              (outside.left == 3000 && outside.top == 3000)); // Win95 && Win98
++
++    // the bounds correspond to iconic state
++    if (isZeroClientArea && isInvalidLocation)
++    {
++        return FALSE;
++    }
++
++    return TRUE;
++}
++
++
+ void AwtWindow::_SetIconImagesData(void * param)
+ {
+     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+@@ -2042,36 +2275,68 @@
+     env->DeleteGlobalRef(self);
+ }
+ 
+-/*
+- * Fixed 6353381: it's improved fix for 4792958
+- * which was backed-out to avoid 5059656
+- */
+-BOOL AwtWindow::HasValidRect()
++void AwtWindow::_SetOpacity(void* param)
+ {
+-    RECT inside;
+-    RECT outside;
++    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+ 
+-    if (::IsIconic(GetHWnd())) {
+-        return FALSE;
+-    }
++    OpacityStruct *os = (OpacityStruct *)param;
++    jobject self = os->window;
++    BYTE iOpacity = (BYTE)os->iOpacity;
+ 
+-    ::GetClientRect(GetHWnd(), &inside);
+-    ::GetWindowRect(GetHWnd(), &outside);
++    PDATA pData;
++    JNI_CHECK_PEER_GOTO(self, ret);
++    AwtWindow *window = (AwtWindow *)pData;
+ 
+-    BOOL isZeroClientArea = (inside.right == 0 && inside.bottom == 0);
+-    BOOL isInvalidLocation = ((outside.left == -32000 && outside.top == -32000) || // Win2k && WinXP
+-                              (outside.left == 32000 && outside.top == 32000) || // Win95 && Win98
+-                              (outside.left == 3000 && outside.top == 3000)); // Win95 && Win98
++    window->SetTranslucency(iOpacity, window->isOpaque());
+ 
+-    // the bounds correspond to iconic state
+-    if (isZeroClientArea && isInvalidLocation)
+-    {
+-        return FALSE;
+-    }
++  ret:
++    env->DeleteGlobalRef(self);
++    delete os;
++}
+ 
+-    return TRUE;
++void AwtWindow::_SetOpaque(void* param)
++{
++    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
++
++    OpaqueStruct *os = (OpaqueStruct *)param;
++    jobject self = os->window;
++    BOOL isOpaque = (BOOL)os->isOpaque;
++
++    PDATA pData;
++    JNI_CHECK_PEER_GOTO(self, ret);
++    AwtWindow *window = (AwtWindow *)pData;
++
++    window->SetTranslucency(window->getOpacity(), isOpaque);
++
++  ret:
++    env->DeleteGlobalRef(self);
++    delete os;
+ }
+ 
++void AwtWindow::_UpdateWindow(void* param)
++{
++    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
++
++    UpdateWindowStruct *uws = (UpdateWindowStruct *)param;
++    jobject self = uws->window;
++    jintArray data = uws->data;
++
++    PDATA pData;
++    JNI_CHECK_PEER_GOTO(self, ret);
++    AwtWindow *window = (AwtWindow *)pData;
++
++    window->UpdateWindow(env, data, (int)uws->width, (int)uws->height,
++                         uws->hBitmap);
++
++  ret:
++    env->DeleteGlobalRef(self);
++    if (data != NULL) {
++        env->DeleteGlobalRef(data);
++    }
++    delete uws;
++}
++
++
+ extern "C" {
+ 
+ /*
+@@ -2526,5 +2791,94 @@
+ 
+     CATCH_BAD_ALLOC;
+ }
++
++/*
++ * Class:     sun_awt_windows_WWindowPeer
++ * Method:    setOpacity
++ * Signature: (I)V
++ */
++JNIEXPORT void JNICALL
++Java_sun_awt_windows_WWindowPeer_setOpacity(JNIEnv *env, jobject self,
++                                              jint iOpacity)
++{
++    TRY;
++
++    OpacityStruct *os = new OpacityStruct;
++    os->window = env->NewGlobalRef(self);
++    os->iOpacity = iOpacity;
++
++    AwtToolkit::GetInstance().SyncCall(AwtWindow::_SetOpacity, os);
++    // global refs and mds are deleted in _SetMinSize
++
++    CATCH_BAD_ALLOC;
++}
++
++/*
++ * Class:     sun_awt_windows_WWindowPeer
++ * Method:    setOpaqueImpl
++ * Signature: (Z)V
++ */
++JNIEXPORT void JNICALL
++Java_sun_awt_windows_WWindowPeer_setOpaqueImpl(JNIEnv *env, jobject self,
++                                              jboolean isOpaque)
++{
++    TRY;
++
++    OpaqueStruct *os = new OpaqueStruct;
++    os->window = env->NewGlobalRef(self);
++    os->isOpaque = isOpaque;
++
++    AwtToolkit::GetInstance().SyncCall(AwtWindow::_SetOpaque, os);
++    // global refs and mds are deleted in _SetMinSize
++
++    CATCH_BAD_ALLOC;
++}
++
++/*
++ * Class:     sun_awt_windows_WWindowPeer
++ * Method:    updateWindowImpl
++ * Signature: ([III)V
++ */
++JNIEXPORT void JNICALL
++Java_sun_awt_windows_WWindowPeer_updateWindowImpl(JNIEnv *env, jobject self,
++                                                  jintArray data,
++                                                  jint width, jint height)
++{
++    TRY;
++
++    UpdateWindowStruct *uws = new UpdateWindowStruct;
++    uws->window = env->NewGlobalRef(self);
++    uws->data = (jintArray)env->NewGlobalRef(data);
++    uws->hBitmap = NULL;
++    uws->width = width;
++    uws->height = height;
++
++    AwtToolkit::GetInstance().InvokeFunction(AwtWindow::_UpdateWindow, uws);
++    // global refs and mds are deleted in _UpdateWindow
++
++    CATCH_BAD_ALLOC;
++}
++
++/**
++ * This method is called from the WGL pipeline when it needs to update
++ * the layered window WindowPeer's C++ level object.
++ */
++void AwtWindow_UpdateWindow(JNIEnv *env, jobject peer,
++                            jint width, jint height, HBITMAP hBitmap)
++{
++    TRY;
++
++    UpdateWindowStruct *uws = new UpdateWindowStruct;
++    uws->window = env->NewGlobalRef(peer);
++    uws->data = NULL;
++    uws->hBitmap = hBitmap;
++    uws->width = width;
++    uws->height = height;
++
++    AwtToolkit::GetInstance().InvokeFunction(AwtWindow::_UpdateWindow, uws);
++    // global refs and mds are deleted in _UpdateWindow
++
++    CATCH_BAD_ALLOC;
++}
+ 
+ } /* extern "C" */
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h openjdk/jdk/src/windows/native/sun/windows/awt_Window.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h	2011-02-16 00:40:21.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.h	2011-02-16 01:27:25.016325311 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2009, 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
+@@ -188,6 +188,9 @@
+ 
+     void moveToDefaultLocation(); /* moves Window to X,Y specified by Window Manger */
+ 
++    void UpdateWindow(JNIEnv* env, jintArray data, int width, int height,
++                      HBITMAP hNewBitmap = NULL);
++
+     INLINE virtual BOOL IsTopLevel() { return TRUE; }
+     static AwtWindow * GetGrabbedWindow() { return m_grabbedWindow; }
+ 
+@@ -210,6 +213,9 @@
+     static void _SetModalExcludedNativeProp(void *param);
+     static void _ModalDisable(void *param);
+     static void _ModalEnable(void *param);
++    static void _SetOpacity(void* param);
++    static void _SetOpaque(void* param);
++    static void _UpdateWindow(void* param);
+ 
+     inline static BOOL IsResizing() {
+         return sm_resizing;
+@@ -234,6 +240,32 @@
+                                        // from its hierarchy when shown. Currently applied to instances of
+                                        // javax/swing/Popup$HeavyWeightWindow class.
+ 
++    BYTE m_opacity;         // The opacity level. == 0xff by default (when opacity mode is disabled)
++    BOOL m_opaque;          // Whether the window uses the perpixel translucency (false), or not (true).
++
++    inline BYTE getOpacity() {
++        return m_opacity;
++    }
++    inline void setOpacity(BYTE opacity) {
++        m_opacity = opacity;
++    }
++
++    inline BOOL isOpaque() {
++        return m_opaque;
++    }
++    inline void setOpaque(BOOL opaque) {
++        m_opaque = opaque;
++    }
++
++    CRITICAL_SECTION contentBitmapCS;
++    HBITMAP hContentBitmap;
++    UINT contentWidth;
++    UINT contentHeight;
++
++    void RedrawWindow();
++    void SetTranslucency(BYTE opacity, BOOL opaque);
++    void UpdateWindowImpl(int width, int height, HBITMAP hBitmap);
++
+ protected:
+     BOOL m_isResizable;
+     static AwtWindow* m_grabbedWindow; // Current grabbing window
+@@ -242,6 +274,10 @@
+     BOOL m_iconInherited;     /* TRUE if icon is inherited from the owner */
+     BOOL m_filterFocusAndActivation; /* Used in the WH_CBT hook */
+ 
++    //These are used in AwtComponent::CreatePrintedPixels. They are overridden
++    //here to handle non-opaque windows.
++    virtual void FillBackground(HDC hMemoryDC, SIZE &size);
++    virtual void FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha);
+ 
+ private:
+     int m_screenNum;
+diff -Nru openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java openjdk/jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java
+--- openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/com/sun/awt/Translucency/TranslucentJAppletTest/TranslucentJAppletTest.java	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,103 @@
++/*
++ * Copyright (c) 2008, 2009, 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 %I% %E%
++ * @bug 6683728
++ * @summary Tests that a JApplet in a translucent JFrame works properly
++ * @author Kenneth.Russell@sun.com: area=Graphics
++ * @compile -XDignore.symbol.file=true TranslucentJAppletTest.java
++ * @run main/manual/othervm TranslucentJAppletTest
++ */
++
++import java.awt.*;
++import java.awt.image.*;
++
++import javax.swing.*;
++
++public class TranslucentJAppletTest {
++
++    private static JFrame frame;
++    private static volatile boolean paintComponentCalled = false;
++
++    private static void initAndShowGUI() {
++        frame = new JFrame();
++        JApplet applet = new JApplet();
++        JPanel panel = new JPanel() {
++            protected void paintComponent(Graphics g) {
++                paintComponentCalled = true;
++                g.setColor(Color.RED);
++                g.fillOval(0, 0, getWidth(), getHeight());
++            }
++        };
++        panel.setDoubleBuffered(false);
++        panel.setOpaque(false);
++        applet.add(panel);
++        frame.add(applet);
++        frame.setBounds(100, 100, 200, 200);
++        frame.setUndecorated(true);
++        com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);
++        frame.setVisible(true);
++    }
++
++    public static void main(String[] args)
++        throws Exception
++    {
++        sun.awt.SunToolkit tk = (sun.awt.SunToolkit)Toolkit.getDefaultToolkit();
++
++        Robot r = new Robot();
++        Color color1 = r.getPixelColor(100, 100); // (0, 0) in frame coordinates
++
++        SwingUtilities.invokeAndWait(new Runnable() {
++            public void run() {
++                initAndShowGUI();
++            }
++        });
++        tk.realSync();
++
++        if (!paintComponentCalled) {
++            throw new RuntimeException("Test FAILED: panel's paintComponent() method is not called");
++        }
++
++        Color newColor1 = r.getPixelColor(100, 100);
++        // unfortunately, robot.getPixelColor() doesn't work for some unknown reason
++        // Color newColor2 = r.getPixelColor(200, 200);
++        BufferedImage bim = r.createScreenCapture(new Rectangle(200, 200, 1, 1));
++        Color newColor2 = new Color(bim.getRGB(0, 0));
++
++        // Frame must be transparent at (100, 100) in screen coords
++        if (!color1.equals(newColor1)) {
++            System.err.println("color1 = " + color1);
++            System.err.println("newColor1 = " + newColor1);
++            throw new RuntimeException("Test FAILED: frame pixel at (0, 0) is not transparent");
++        }
++
++        // Frame must be RED at (200, 200) in screen coords
++        if (!newColor2.equals(Color.RED)) {
++            System.err.println("newColor2 = " + newColor2);
++            throw new RuntimeException("Test FAILED: frame pixel at (100, 100) is not red (transparent?)");
++        }
++
++        System.out.println("Test PASSED");
++    }
++}
+diff -Nru openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form
+--- openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.form	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,230 @@
++<?xml version="1.0" encoding="UTF-8" ?>
++
++<Form version="1.3" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
++  <NonVisualComponents>
++    <Component class="javax.swing.ButtonGroup" name="createDisposeGrp">
++    </Component>
++  </NonVisualComponents>
++  <Properties>
++    <Property name="defaultCloseOperation" type="int" value="3"/>
++    <Property name="title" type="java.lang.String" value="TranslucentShapedFrameTest"/>
++  </Properties>
++  <SyntheticProperties>
++    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
++  </SyntheticProperties>
++  <AuxValues>
++    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
++    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
++    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
++    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
++    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
++    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
++  </AuxValues>
++
++  <Layout>
++    <DimensionLayout dim="0">
++      <Group type="103" groupAlignment="0" attributes="0">
++          <Group type="102" attributes="0">
++              <EmptySpace max="-2" attributes="0"/>
++              <Group type="103" groupAlignment="0" attributes="0">
++                  <Group type="102" alignment="0" attributes="0">
++                      <Component id="transparencySld" pref="375" max="32767" attributes="0"/>
++                      <EmptySpace max="-2" attributes="0"/>
++                  </Group>
++                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
++                  <Group type="102" alignment="0" attributes="0">
++                      <Component id="shapedCb" min="-2" max="-2" attributes="0"/>
++                      <EmptySpace max="-2" attributes="0"/>
++                      <Component id="nonOpaqueChb" min="-2" max="-2" attributes="0"/>
++                      <EmptySpace max="-2" attributes="0"/>
++                      <Component id="useSwingCb" min="-2" max="-2" attributes="0"/>
++                      <EmptySpace pref="102" max="32767" attributes="0"/>
++                  </Group>
++                  <Group type="102" alignment="0" attributes="0">
++                      <Group type="103" groupAlignment="0" attributes="0">
++                          <Group type="102" alignment="0" attributes="0">
++                              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
++                              <EmptySpace pref="314" max="-2" attributes="0"/>
++                          </Group>
++                          <Group type="102" alignment="0" attributes="0">
++                              <Component id="passedBtn" min="-2" max="-2" attributes="0"/>
++                              <EmptySpace max="-2" attributes="0"/>
++                              <Component id="failedBtn" min="-2" max="-2" attributes="0"/>
++                              <EmptySpace pref="241" max="-2" attributes="0"/>
++                          </Group>
++                          <Component id="jScrollPane1" alignment="1" pref="375" max="32767" attributes="0"/>
++                          <Group type="102" alignment="0" attributes="0">
++                              <Component id="createFrameBtn" min="-2" pref="187" max="-2" attributes="0"/>
++                              <EmptySpace max="-2" attributes="0"/>
++                              <Component id="disposeFrameBtn" min="-2" pref="182" max="-2" attributes="0"/>
++                          </Group>
++                      </Group>
++                      <EmptySpace max="-2" attributes="0"/>
++                  </Group>
++              </Group>
++          </Group>
++      </Group>
++    </DimensionLayout>
++    <DimensionLayout dim="1">
++      <Group type="103" groupAlignment="0" attributes="0">
++          <Group type="102" alignment="0" attributes="0">
++              <EmptySpace max="-2" attributes="0"/>
++              <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
++              <EmptySpace max="-2" attributes="0"/>
++              <Component id="transparencySld" min="-2" max="-2" attributes="0"/>
++              <EmptySpace max="-2" attributes="0"/>
++              <Group type="103" groupAlignment="3" attributes="0">
++                  <Component id="shapedCb" alignment="3" min="-2" max="-2" attributes="0"/>
++                  <Component id="nonOpaqueChb" alignment="3" min="-2" max="-2" attributes="0"/>
++                  <Component id="useSwingCb" alignment="3" min="-2" max="-2" attributes="0"/>
++              </Group>
++              <EmptySpace max="-2" attributes="0"/>
++              <Group type="103" groupAlignment="3" attributes="0">
++                  <Component id="disposeFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
++                  <Component id="createFrameBtn" alignment="3" min="-2" max="-2" attributes="0"/>
++              </Group>
++              <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
++              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
++              <EmptySpace max="-2" attributes="0"/>
++              <Component id="jScrollPane1" min="-2" pref="148" max="-2" attributes="0"/>
++              <EmptySpace max="-2" attributes="0"/>
++              <Group type="103" groupAlignment="3" attributes="0">
++                  <Component id="passedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
++                  <Component id="failedBtn" alignment="3" min="-2" max="-2" attributes="0"/>
++              </Group>
++              <EmptySpace max="32767" attributes="0"/>
++          </Group>
++      </Group>
++    </DimensionLayout>
++  </Layout>
++  <SubComponents>
++    <Component class="javax.swing.JLabel" name="jLabel1">
++      <Properties>
++        <Property name="text" type="java.lang.String" value="Frame Opacity:"/>
++      </Properties>
++    </Component>
++    <Component class="javax.swing.JSlider" name="transparencySld">
++      <Properties>
++        <Property name="majorTickSpacing" type="int" value="10"/>
++        <Property name="minorTickSpacing" type="int" value="5"/>
++        <Property name="paintLabels" type="boolean" value="true"/>
++        <Property name="paintTicks" type="boolean" value="true"/>
++        <Property name="value" type="int" value="100"/>
++      </Properties>
++      <Events>
++        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySldStateChanged"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JCheckBox" name="shapedCb">
++      <Properties>
++        <Property name="text" type="java.lang.String" value="Shaped Frame"/>
++        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
++          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
++            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
++          </Border>
++        </Property>
++        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
++          <Insets value="[0, 0, 0, 0]"/>
++        </Property>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="shapedCbActionPerformed"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JCheckBox" name="nonOpaqueChb">
++      <Properties>
++        <Property name="text" type="java.lang.String" value="Non Opaque Frame"/>
++        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
++          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
++            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
++          </Border>
++        </Property>
++        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
++          <Insets value="[0, 0, 0, 0]"/>
++        </Property>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="nonOpaqueChbActionPerformed"/>
++      </Events>
++    </Component>
++    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
++      <AuxValues>
++        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
++      </AuxValues>
++
++      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
++      <SubComponents>
++        <Component class="javax.swing.JTextArea" name="jTextArea1">
++          <Properties>
++            <Property name="columns" type="int" value="20"/>
++            <Property name="rows" type="int" value="5"/>
++            <Property name="text" type="java.lang.String" value="Create translucent and/or shaped, or&#xa;non-opaque frame. Make sure it behaves&#xa;correctly (no artifacts left on the screen&#xa;when dragging - if dragging is possible).&#xa;Click &quot;Passed&quot; if the test behaves correctly,&#xa;&quot;Falied&quot; otherwise."/>
++          </Properties>
++        </Component>
++      </SubComponents>
++    </Container>
++    <Component class="javax.swing.JLabel" name="jLabel2">
++      <Properties>
++        <Property name="text" type="java.lang.String" value="Instructions:"/>
++      </Properties>
++    </Component>
++    <Component class="javax.swing.JButton" name="passedBtn">
++      <Properties>
++        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
++          <Color blue="64" green="ff" red="81" type="rgb"/>
++        </Property>
++        <Property name="text" type="java.lang.String" value="Passed"/>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="passedBtnActionPerformed"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JButton" name="failedBtn">
++      <Properties>
++        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
++          <Color blue="0" green="0" id="red" palette="1" red="ff" type="palette"/>
++        </Property>
++        <Property name="text" type="java.lang.String" value="Failed"/>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="failedBtnActionPerformed"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JToggleButton" name="createFrameBtn">
++      <Properties>
++        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
++          <ComponentRef name="createDisposeGrp"/>
++        </Property>
++        <Property name="text" type="java.lang.String" value="Create Frame"/>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="createFrameBtnActionPerformed"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JToggleButton" name="disposeFrameBtn">
++      <Properties>
++        <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
++          <ComponentRef name="createDisposeGrp"/>
++        </Property>
++        <Property name="selected" type="boolean" value="true"/>
++        <Property name="text" type="java.lang.String" value="Dispose Frame"/>
++      </Properties>
++      <Events>
++        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="disposeFrameBtnActionPerformed"/>
++      </Events>
++    </Component>
++    <Component class="javax.swing.JCheckBox" name="useSwingCb">
++      <Properties>
++        <Property name="text" type="java.lang.String" value="Use JFrame"/>
++        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
++          <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
++            <EmptyBorder bottom="0" left="0" right="0" top="0"/>
++          </Border>
++        </Property>
++        <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
++          <Insets value="[0, 0, 0, 0]"/>
++        </Property>
++      </Properties>
++    </Component>
++  </SubComponents>
++</Form>
+diff -Nru openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java
+--- openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TranslucentShapedFrameTest.java	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,359 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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 %I% %E%
++ * @bug 6655001 6670649 6687141
++ * @summary Tests that hw acceleration doesn't affect translucent/shaped windows
++ * @author Dmitri.Trembovetski@sun.com: area=Graphics
++ * @compile -XDignore.symbol.file=true TranslucentShapedFrameTest.java
++ * @compile -XDignore.symbol.file=true TSFrame.java
++ * @run main/manual/othervm TranslucentShapedFrameTest
++ * @run main/manual/othervm -Dsun.java2d.noddraw=true TranslucentShapedFrameTest
++ * @run main/manual/othervm -Dsun.java2d.opengl=True TranslucentShapedFrameTest
++ */
++import com.sun.awt.AWTUtilities;
++import static com.sun.awt.AWTUtilities.Translucency.*;
++import java.awt.Frame;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsDevice;
++import java.awt.GraphicsEnvironment;
++import java.awt.Shape;
++import java.awt.geom.Ellipse2D;
++import java.util.concurrent.CountDownLatch;
++import javax.swing.JSlider;
++import javax.swing.SwingUtilities;
++import javax.swing.UIManager;
++import javax.swing.UnsupportedLookAndFeelException;
++
++public class TranslucentShapedFrameTest extends javax.swing.JFrame {
++    Frame testFrame;
++    static CountDownLatch done;
++    static volatile boolean failed = false;
++    GraphicsConfiguration gcToUse = null;
++
++    /**
++     * Creates new form TranslucentShapedFrameTest
++     */
++    public TranslucentShapedFrameTest() {
++        // not necessary, but we just look nicer
++        try {
++            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
++        } catch (Exception ex) {}
++
++        initComponents();
++        checkEffects();
++
++        SwingUtilities.updateComponentTreeUI(this);
++    }
++
++    /** This method is called from within the constructor to
++     * initialize the form.
++     * WARNING: Do NOT modify this code. The content of this method is
++     * always regenerated by the Form Editor.
++     */
++    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
++    private void initComponents() {
++        createDisposeGrp = new javax.swing.ButtonGroup();
++        jLabel1 = new javax.swing.JLabel();
++        transparencySld = new javax.swing.JSlider();
++        shapedCb = new javax.swing.JCheckBox();
++        nonOpaqueChb = new javax.swing.JCheckBox();
++        jScrollPane1 = new javax.swing.JScrollPane();
++        jTextArea1 = new javax.swing.JTextArea();
++        jLabel2 = new javax.swing.JLabel();
++        passedBtn = new javax.swing.JButton();
++        failedBtn = new javax.swing.JButton();
++        createFrameBtn = new javax.swing.JToggleButton();
++        disposeFrameBtn = new javax.swing.JToggleButton();
++        useSwingCb = new javax.swing.JCheckBox();
++
++        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
++        setTitle("TranslucentShapedFrameTest");
++        jLabel1.setText("Frame Opacity:");
++
++        transparencySld.setMajorTickSpacing(10);
++        transparencySld.setMinorTickSpacing(5);
++        transparencySld.setPaintLabels(true);
++        transparencySld.setPaintTicks(true);
++        transparencySld.setValue(100);
++        transparencySld.addChangeListener(new javax.swing.event.ChangeListener() {
++            public void stateChanged(javax.swing.event.ChangeEvent evt) {
++                transparencySldStateChanged(evt);
++            }
++        });
++
++        shapedCb.setText("Shaped Frame");
++        shapedCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
++        shapedCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
++        shapedCb.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                shapedCbActionPerformed(evt);
++            }
++        });
++
++        nonOpaqueChb.setText("Non Opaque Frame");
++        nonOpaqueChb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
++        nonOpaqueChb.setMargin(new java.awt.Insets(0, 0, 0, 0));
++        nonOpaqueChb.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                nonOpaqueChbActionPerformed(evt);
++            }
++        });
++
++        jTextArea1.setColumns(20);
++        jTextArea1.setRows(5);
++        jTextArea1.setText("Create translucent and/or shaped, or\nnon-opaque frame. Make sure it behaves\ncorrectly (no artifacts left on the screen\nwhen dragging - if dragging is possible).\nClick \"Passed\" if the test behaves correctly,\n\"Falied\" otherwise.");
++        jScrollPane1.setViewportView(jTextArea1);
++
++        jLabel2.setText("Instructions:");
++
++        passedBtn.setBackground(new java.awt.Color(129, 255, 100));
++        passedBtn.setText("Passed");
++        passedBtn.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                passedBtnActionPerformed(evt);
++            }
++        });
++
++        failedBtn.setBackground(java.awt.Color.red);
++        failedBtn.setText("Failed");
++        failedBtn.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                failedBtnActionPerformed(evt);
++            }
++        });
++
++        createDisposeGrp.add(createFrameBtn);
++        createFrameBtn.setText("Create Frame");
++        createFrameBtn.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                createFrameBtnActionPerformed(evt);
++            }
++        });
++
++        createDisposeGrp.add(disposeFrameBtn);
++        disposeFrameBtn.setSelected(true);
++        disposeFrameBtn.setText("Dispose Frame");
++        disposeFrameBtn.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent evt) {
++                disposeFrameBtnActionPerformed(evt);
++            }
++        });
++
++        useSwingCb.setText("Use JFrame");
++        useSwingCb.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
++        useSwingCb.setMargin(new java.awt.Insets(0, 0, 0, 0));
++
++        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
++        getContentPane().setLayout(layout);
++        layout.setHorizontalGroup(
++            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
++            .addGroup(layout.createSequentialGroup()
++                .addContainerGap()
++                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
++                    .addGroup(layout.createSequentialGroup()
++                        .addComponent(transparencySld, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
++                        .addContainerGap())
++                    .addComponent(jLabel1)
++                    .addGroup(layout.createSequentialGroup()
++                        .addComponent(shapedCb)
++                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                        .addComponent(nonOpaqueChb)
++                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                        .addComponent(useSwingCb)
++                        .addContainerGap(102, Short.MAX_VALUE))
++                    .addGroup(layout.createSequentialGroup()
++                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
++                            .addGroup(layout.createSequentialGroup()
++                                .addComponent(jLabel2)
++                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
++                            .addGroup(layout.createSequentialGroup()
++                                .addComponent(passedBtn)
++                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                                .addComponent(failedBtn)
++                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
++                            .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE)
++                            .addGroup(layout.createSequentialGroup()
++                                .addComponent(createFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
++                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                                .addComponent(disposeFrameBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
++                        .addContainerGap())))
++        );
++        layout.setVerticalGroup(
++            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
++            .addGroup(layout.createSequentialGroup()
++                .addContainerGap()
++                .addComponent(jLabel1)
++                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                .addComponent(transparencySld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
++                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
++                    .addComponent(shapedCb)
++                    .addComponent(nonOpaqueChb)
++                    .addComponent(useSwingCb))
++                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
++                    .addComponent(disposeFrameBtn)
++                    .addComponent(createFrameBtn))
++                .addGap(17, 17, 17)
++                .addComponent(jLabel2)
++                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
++                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
++                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
++                    .addComponent(passedBtn)
++                    .addComponent(failedBtn))
++                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
++        );
++        pack();
++    }// </editor-fold>//GEN-END:initComponents
++
++    private void nonOpaqueChbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nonOpaqueChbActionPerformed
++        if (testFrame != null) {
++            // REMIND: this path in the test doesn't work well (test bug)
++//            AWTUtilities.setWindowOpaque(testFrame, !nonOpaqueChb.isSelected());
++        }
++    }//GEN-LAST:event_nonOpaqueChbActionPerformed
++
++    private void shapedCbActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_shapedCbActionPerformed
++        if (testFrame != null) {
++            Shape s = null;
++            if (shapedCb.isSelected()) {
++                s = new Ellipse2D.Double(0, 0,
++                                         testFrame.getWidth(),
++                                         testFrame.getHeight());
++            }
++            AWTUtilities.setWindowShape(testFrame, s);
++        }
++    }//GEN-LAST:event_shapedCbActionPerformed
++
++    private void transparencySldStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_transparencySldStateChanged
++        JSlider source = (JSlider)evt.getSource();
++            int transl = transparencySld.getValue();
++            if (testFrame != null) {
++                AWTUtilities.setWindowOpacity(testFrame, (float)transl/100f);
++            }
++    }//GEN-LAST:event_transparencySldStateChanged
++
++    private void failedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_failedBtnActionPerformed
++        disposeFrameBtnActionPerformed(evt);
++        dispose();
++        failed = true;
++        done.countDown();
++    }//GEN-LAST:event_failedBtnActionPerformed
++
++    private void disposeFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_disposeFrameBtnActionPerformed
++        TSFrame.stopThreads();
++        if (testFrame != null) {
++            testFrame.dispose();
++            testFrame = null;
++        }
++    }//GEN-LAST:event_disposeFrameBtnActionPerformed
++
++    private void createFrameBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFrameBtnActionPerformed
++        disposeFrameBtnActionPerformed(evt);
++        int transl = transparencySld.getValue();
++        testFrame = TSFrame.createGui(gcToUse,
++                useSwingCb.isSelected(), shapedCb.isSelected(),
++                (transl < 100), nonOpaqueChb.isSelected(),
++                (float)transl/100f);
++    }//GEN-LAST:event_createFrameBtnActionPerformed
++
++    private void passedBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_passedBtnActionPerformed
++        disposeFrameBtnActionPerformed(evt);
++        dispose();
++        done.countDown();
++    }//GEN-LAST:event_passedBtnActionPerformed
++
++    /**
++     * @param args the command line arguments
++     */
++    public static void main(String args[]) {
++        done = new CountDownLatch(1);
++        java.awt.EventQueue.invokeLater(new Runnable() {
++            public void run() {
++                new TranslucentShapedFrameTest().setVisible(true);
++            }
++        });
++        try {
++            done.await();
++        } catch (InterruptedException ex) {}
++        if (failed) {
++            throw new RuntimeException("Test FAILED");
++        }
++        System.out.println("Test PASSED");
++    }
++
++    private void checkEffects() {
++        if (!AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
++            shapedCb.setEnabled(false);
++        }
++
++        if (!AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
++            transparencySld.setEnabled(false);
++        }
++
++        GraphicsConfiguration gc = null;
++        if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT)) {
++            gc = findGraphicsConfig();
++            if (gc == null) {
++                nonOpaqueChb.setEnabled(false);
++            }
++        }
++
++        gcToUse = gc;
++    }
++
++    private GraphicsConfiguration findGraphicsConfig() {
++        GraphicsDevice gd =
++            GraphicsEnvironment.getLocalGraphicsEnvironment().
++                getDefaultScreenDevice();
++        GraphicsConfiguration gcs[] = gd.getConfigurations();
++        for (GraphicsConfiguration gc : gcs) {
++            if (AWTUtilities.isTranslucencyCapable(gc)) {
++                return gc;
++            }
++        }
++        return null;
++    }
++
++    // Variables declaration - do not modify//GEN-BEGIN:variables
++    private javax.swing.ButtonGroup createDisposeGrp;
++    private javax.swing.JToggleButton createFrameBtn;
++    private javax.swing.JToggleButton disposeFrameBtn;
++    private javax.swing.JButton failedBtn;
++    private javax.swing.JLabel jLabel1;
++    private javax.swing.JLabel jLabel2;
++    private javax.swing.JScrollPane jScrollPane1;
++    private javax.swing.JTextArea jTextArea1;
++    private javax.swing.JCheckBox nonOpaqueChb;
++    private javax.swing.JButton passedBtn;
++    private javax.swing.JCheckBox shapedCb;
++    private javax.swing.JSlider transparencySld;
++    private javax.swing.JCheckBox useSwingCb;
++    // End of variables declaration//GEN-END:variables
++
++}
+diff -Nru openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java
+--- openjdk.orig/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/com/sun/awt/Translucency/TranslucentShapedFrameTest/TSFrame.java	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,306 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++import com.sun.awt.AWTUtilities;
++import static com.sun.awt.AWTUtilities.Translucency.*;
++import java.awt.BorderLayout;
++import java.awt.Color;
++import java.awt.Dimension;
++import java.awt.Frame;
++import java.awt.Graphics;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsEnvironment;
++import java.awt.RenderingHints;
++import java.awt.event.MouseAdapter;
++import java.awt.event.MouseEvent;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++import java.awt.Canvas;
++import java.awt.Component;
++import java.awt.GradientPaint;
++import java.awt.Graphics2D;
++import java.awt.Paint;
++import java.util.Random;
++import java.awt.geom.Ellipse2D;
++import javax.swing.JApplet;
++import javax.swing.JButton;
++import javax.swing.JComponent;
++import javax.swing.JFrame;
++import javax.swing.JPanel;
++import javax.swing.SwingUtilities;
++
++public class TSFrame {
++
++    static volatile boolean done = false;
++
++    static final boolean useSwing = System.getProperty("useswing") != null;
++    static final boolean useShape = System.getProperty("useshape") != null;
++    static final boolean useTransl = System.getProperty("usetransl") != null;
++    static final boolean useNonOpaque = System.getProperty("usenonop") != null;
++
++    static final Random rnd = new Random();
++    private static void render(Graphics g, int w, int h, boolean useNonOpaque) {
++        if (useNonOpaque) {
++            Graphics2D g2d = (Graphics2D)g;
++            GradientPaint p =
++                new GradientPaint(0.0f, 0.0f,
++                                  new Color(rnd.nextInt(0xffffff)),
++                                  w, h,
++                                  new Color(rnd.nextInt(0xff),
++                                            rnd.nextInt(0xff),
++                                            rnd.nextInt(0xff), 0),
++                                  true);
++            g2d.setPaint(p);
++            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
++                                 RenderingHints.VALUE_ANTIALIAS_ON);
++            g2d.fillOval(0, 0, w, h);
++        } else {
++            g.setColor(new Color(rnd.nextInt(0xffffff)));
++            g.fillRect(0, 0, w, h);
++        }
++    }
++
++    private static class MyCanvas extends Canvas {
++        @Override
++        public void paint(Graphics g) {
++            render(g, getWidth(), getHeight(), false);
++        }
++        @Override
++        public Dimension getPreferredSize() {
++            return new Dimension(200, 100);
++        }
++    }
++    private static class NonOpaqueJFrame extends JFrame {
++        NonOpaqueJFrame(GraphicsConfiguration gc) {
++            super("NonOpaque Swing JFrame", gc);
++            JPanel p = new JPanel() {
++                public void paintComponent(Graphics g) {
++                    super.paintComponent(g);
++                    render(g, getWidth(), getHeight(), true);
++                    g.setColor(Color.red);
++                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
++                }
++            };
++            p.setDoubleBuffered(false);
++            p.setOpaque(false);
++            add(p);
++            setUndecorated(true);
++        }
++    }
++    private static class NonOpaqueJAppletFrame extends JFrame {
++        JPanel p;
++        NonOpaqueJAppletFrame(GraphicsConfiguration gc) {
++            super("NonOpaque Swing JAppletFrame", gc);
++            JApplet ja = new JApplet() {
++                public void paint(Graphics g) {
++                    super.paint(g);
++                    System.err.println("JAppletFrame paint called");
++                }
++            };
++            p = new JPanel() {
++                public void paintComponent(Graphics g) {
++                    super.paintComponent(g);
++                    render(g, getWidth(), getHeight(), true);
++                    g.setColor(Color.red);
++                    g.drawString("Non-Opaque Swing JFrame", 10, 15);
++                }
++            };
++            p.setDoubleBuffered(false);
++            p.setOpaque(false);
++            ja.add(p);
++            add(ja);
++            setUndecorated(true);
++        }
++    }
++    private static class NonOpaqueFrame extends Frame {
++        NonOpaqueFrame(GraphicsConfiguration gc) {
++            super("NonOpaque AWT Frame", gc);
++            // uncomment to test with hw child
++//            setLayout(null);
++//            Component c = new Panel() {
++//                public void paint(Graphics g) {
++//                    g.setColor(new Color(1.0f, 1.0f, 1.0f, 0.5f));
++//                    g.fillRect(0, 0, getWidth(), getHeight());
++//                }
++//            };
++//            c.setSize(100, 100);
++//            c.setBackground(Color.red);
++//            c.setForeground(Color.red);
++//            add(c);
++//            c.setLocation(130, 130);
++        }
++        @Override
++        public void paint(Graphics g) {
++            render(g, getWidth(), getHeight(), true);
++            g.setColor(Color.red);
++            g.drawString("Non-Opaque AWT Frame", 10, 15);
++        }
++    }
++
++    private static class MyJPanel extends JPanel {
++        @Override
++        public void paintComponent(Graphics g) {
++            render(g, getWidth(), getHeight(), false);
++        }
++    }
++
++    public static Frame createGui(GraphicsConfiguration gc,
++                                  final boolean useSwing,
++                                  final boolean useShape,
++                                  final boolean useTransl,
++                                  final boolean useNonOpaque,
++                                  final float factor)
++    {
++        Frame frame;
++        done = false;
++
++        if (gc == null) {
++            gc = GraphicsEnvironment.getLocalGraphicsEnvironment().
++                    getDefaultScreenDevice().getDefaultConfiguration();
++        }
++
++        if (useNonOpaque) {
++            if (useSwing) {
++                frame = new NonOpaqueJFrame(gc);
++//                frame = new NonOpaqueJAppletFrame(gc);
++            } else {
++                frame = new NonOpaqueFrame(gc);
++            }
++            animateComponent(frame);
++        } else if (useSwing) {
++            frame = new JFrame("Swing Frame", gc);
++            JComponent p = new JButton("Swing!");
++            p.setPreferredSize(new Dimension(200, 100));
++            frame.add("North", p);
++            p = new MyJPanel();
++            animateComponent(p);
++            frame.add("Center", p);
++        } else {
++            frame = new Frame("AWT Frame", gc) {
++                public void paint(Graphics g) {
++                    g.setColor(Color.red);
++                    g.fillRect(0, 0, 100, 100);
++                }
++            };
++            frame.setLayout(new BorderLayout());
++            Canvas c = new MyCanvas();
++            frame.add("North", c);
++            animateComponent(c);
++            c = new MyCanvas();
++            frame.add("Center", c);
++            animateComponent(c);
++            c = new MyCanvas();
++            frame.add("South", c);
++            animateComponent(c);
++        }
++        final Frame finalFrame = frame;
++        frame.addWindowListener(new WindowAdapter() {
++            @Override
++            public void windowClosing(WindowEvent e) {
++                finalFrame.dispose();
++                done = true;
++            }
++        });
++        frame.addMouseListener(new MouseAdapter() {
++            @Override
++            public void mouseClicked(MouseEvent e) {
++                finalFrame.dispose();
++                done = true;
++            }
++        });
++        frame.setPreferredSize(new Dimension(800, 600));
++
++        if (useShape) {
++            frame.setUndecorated(true);
++        }
++
++        frame.setLocation(450, 10);
++        frame.pack();
++
++        if (useShape) {
++            if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSPARENT)) {
++                System.out.println("applying PERPIXEL_TRANSPARENT");
++                AWTUtilities.setWindowShape(frame,
++                    new Ellipse2D.Double(0, 0, frame.getWidth(),
++                                               frame.getHeight()/3));
++                frame.setTitle("PERPIXEL_TRANSPARENT");
++            } else {
++                System.out.println("Passed: PERPIXEL_TRANSPARENT unsupported");
++            }
++        }
++        if (useTransl) {
++            if (AWTUtilities.isTranslucencySupported(TRANSLUCENT)) {
++                System.out.println("applying TRANSLUCENT");
++                AWTUtilities.setWindowOpacity(frame, factor);
++                frame.setTitle("TRANSLUCENT");
++            } else {
++                System.out.println("Passed: TRANSLUCENT unsupported");
++            }
++        }
++        if (useNonOpaque) {
++            if (AWTUtilities.isTranslucencySupported(PERPIXEL_TRANSLUCENT) &&
++                AWTUtilities.isTranslucencyCapable(gc))
++            {
++                System.out.println("applying PERPIXEL_TRANSLUCENT");
++                AWTUtilities.setWindowOpaque(frame, false);
++                frame.setTitle("PERPIXEL_TRANSLUCENT");
++            } else {
++                System.out.println("Passed: PERPIXEL_TRANSLUCENT unsupported");
++            }
++        }
++        frame.setVisible(true);
++        return frame;
++    }
++
++    public static void stopThreads() {
++        done = true;
++    }
++
++    private static void animateComponent(final Component comp) {
++        Thread t = new Thread(new Runnable() {
++            public void run() {
++                do {
++                    try {
++                        Thread.sleep(50);
++                    } catch (InterruptedException ex) {}
++                    comp.repaint();
++                } while (!done);
++            }
++        });
++        t.start();
++    }
++
++    public static void main(String[] args) throws Exception {
++        SwingUtilities.invokeLater(new Runnable() {
++            public void run() {
++                TSFrame.createGui(null, useSwing,
++                                  useShape,
++                                  useTransl,
++                                  useNonOpaque,
++                                  0.7f);
++            }
++        });
++    }
++}
+diff -Nru openjdk.orig/jdk/test/com/sun/awt/Translucency/WindowOpacity.java openjdk/jdk/test/com/sun/awt/Translucency/WindowOpacity.java
+--- openjdk.orig/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/com/sun/awt/Translucency/WindowOpacity.java	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,461 @@
++/*
++ * Copyright (c) 2008, 2009, 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 %W% %E%
++  @bug 6594131
++  @summary Tests the AWTUtilities.get/setWindowOpacity() methods
++  @author anthony.petrov@...: area=awt.toplevel
++  @run main WindowOpacity
++*/
++
++import java.awt.*;
++import java.awt.event.*;
++
++import com.sun.awt.AWTUtilities;
++import sun.awt.SunToolkit;
++
++public class WindowOpacity
++{
++    //*** test-writer defined static variables go here ***
++
++    private static void realSync() {
++        ((SunToolkit)Toolkit.getDefaultToolkit()).realSync();
++    }
++
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++        if (!AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT)) {
++            System.out.println("Either the Toolkit or the native system does not support controlling the window opacity level.");
++            pass();
++        }
++
++        boolean passed;
++
++        Frame f = new Frame("Opacity test");
++
++        passed = false;
++        try {
++            AWTUtilities.getWindowOpacity(null);
++        } catch (NullPointerException e) {
++            passed = true;
++        }
++        if (!passed) {
++            fail("getWindowOpacity() allows passing null.");
++        }
++
++
++        passed = false;
++        try {
++            AWTUtilities.setWindowOpacity(null, 0.5f);
++        } catch (NullPointerException e) {
++            passed = true;
++        }
++        if (!passed) {
++            fail("setWindowOpacity() allows passing null.");
++        }
++
++
++        float curOpacity = AWTUtilities.getWindowOpacity(f);
++        if (curOpacity < 1.0f || curOpacity > 1.0f) {
++            fail("getWindowOpacity() reports the initial opacity level other than 1.0: " + curOpacity);
++        }
++
++
++
++        passed = false;
++        try {
++            AWTUtilities.setWindowOpacity(f, -0.5f);
++        } catch (IllegalArgumentException e) {
++            passed = true;
++        }
++        if (!passed) {
++            fail("setWindowOpacity() allows passing negative opacity level.");
++        }
++
++
++
++        passed = false;
++        try {
++            AWTUtilities.setWindowOpacity(f, 1.5f);
++        } catch (IllegalArgumentException e) {
++            passed = true;
++        }
++        if (!passed) {
++            fail("setWindowOpacity() allows passing opacity level greater than 1.0.");
++        }
++
++
++        AWTUtilities.setWindowOpacity(f, 0.5f);
++
++        curOpacity = AWTUtilities.getWindowOpacity(f);
++        if (curOpacity < 0.5f || curOpacity > 0.5f) {
++            fail("getWindowOpacity() reports the opacity level that differs from the value set with setWindowOpacity: " + curOpacity);
++        }
++
++
++        AWTUtilities.setWindowOpacity(f, 0.75f);
++
++        curOpacity = AWTUtilities.getWindowOpacity(f);
++        if (curOpacity < 0.75f || curOpacity > 0.75f) {
++            fail("getWindowOpacity() reports the opacity level that differs from the value set with setWindowOpacity the second time: " + curOpacity);
++        }
++
++
++        f.setBounds(100, 100, 300, 200);
++        f.setVisible(true);
++
++        realSync();
++
++        curOpacity = AWTUtilities.getWindowOpacity(f);
++        if (curOpacity < 0.75f || curOpacity > 0.75f) {
++            fail("getWindowOpacity() reports the opacity level that differs from the value set with setWindowOpacity before showing the frame: " + curOpacity);
++        }
++
++
++
++        AWTUtilities.setWindowOpacity(f, 0.5f);
++        realSync();
++
++        curOpacity = AWTUtilities.getWindowOpacity(f);
++        if (curOpacity < 0.5f || curOpacity > 0.5f) {
++            fail("getWindowOpacity() reports the opacity level that differs from the value set with setWindowOpacity after showing the frame: " + curOpacity);
++        }
++
++        WindowOpacity.pass();
++
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class WindowOpacity
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         WindowOpacity.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         WindowOpacity.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
+diff -Nru openjdk.orig/jdk/test/sun/java2d/pipe/RegionOps.java openjdk/jdk/test/sun/java2d/pipe/RegionOps.java
+--- openjdk.orig/jdk/test/sun/java2d/pipe/RegionOps.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/sun/java2d/pipe/RegionOps.java	2011-02-16 01:27:25.016325311 +0000
+@@ -0,0 +1,533 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++ * @bug 6504874
++ * @summary This test verifies the operation (and performance) of the
++ *          various CAG operations on the internal Region class.
++ * @run main RegionOps
++ */
++
++import java.awt.Rectangle;
++import java.awt.geom.Area;
++import java.awt.geom.AffineTransform;
++import java.awt.image.BufferedImage;
++import java.util.Random;
++import sun.java2d.pipe.Region;
++
++public class RegionOps {
++    public static final int DEFAULT_NUMREGIONS = 50;
++    public static final int DEFAULT_MINSUBRECTS = 1;
++    public static final int DEFAULT_MAXSUBRECTS = 10;
++
++    public static final int MINCOORD = -20;
++    public static final int MAXCOORD = 20;
++
++    public static boolean useArea;
++
++    static int numops;
++    static int numErrors;
++    static Random rand = new Random();
++    static boolean skipCheck;
++    static boolean countErrors;
++
++    static {
++        // Instantiating BufferedImage initializes sun.java2d
++        BufferedImage bimg =
++            new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
++    }
++
++    public static void usage(String error) {
++        if (error != null) {
++            System.err.println("Error: "+error);
++        }
++        System.err.println("Usage: java RegionOps "+
++                           "[-regions N] [-rects M] "+
++                           "[-[min|max]rects M] [-area]");
++        System.err.println("                      "+
++                           "[-add|union] [-sub|diff] "+
++                           "[-int[ersect]] [-xor]");
++        System.err.println("                      "+
++                           "[-seed S] [-nocheck] [-count[errors]] [-help]");
++        System.exit((error != null) ? 1 : 0);
++    }
++
++    public static void error(RectListImpl a, RectListImpl b, String problem) {
++        System.err.println("Operating on:  "+a);
++        if (b != null) {
++            System.err.println("and:  "+b);
++        }
++        if (countErrors) {
++            System.err.println(problem);
++            numErrors++;
++        } else {
++            throw new RuntimeException(problem);
++        }
++    }
++
++    public static void main(String argv[]) {
++        int numregions = DEFAULT_NUMREGIONS;
++        int minsubrects = DEFAULT_MINSUBRECTS;
++        int maxsubrects = DEFAULT_MAXSUBRECTS;
++        boolean doUnion = false;
++        boolean doIntersect = false;
++        boolean doSubtract = false;
++        boolean doXor = false;
++
++        for (int i = 0; i < argv.length; i++) {
++            String arg = argv[i];
++            if (arg.equalsIgnoreCase("-regions")) {
++                if (i+1 >= argv.length) {
++                    usage("missing arg for -regions");
++                }
++                numregions = Integer.parseInt(argv[++i]);
++            } else if (arg.equalsIgnoreCase("-rects")) {
++                if (i+1 >= argv.length) {
++                    usage("missing arg for -rects");
++                }
++                minsubrects = maxsubrects = Integer.parseInt(argv[++i]);
++            } else if (arg.equalsIgnoreCase("-minrects")) {
++                if (i+1 >= argv.length) {
++                    usage("missing arg for -minrects");
++                }
++                minsubrects = Integer.parseInt(argv[++i]);
++            } else if (arg.equalsIgnoreCase("-maxrects")) {
++                if (i+1 >= argv.length) {
++                    usage("missing arg for -maxrects");
++                }
++                maxsubrects = Integer.parseInt(argv[++i]);
++            } else if (arg.equalsIgnoreCase("-area")) {
++                useArea = true;
++            } else if (arg.equalsIgnoreCase("-add") ||
++                       arg.equalsIgnoreCase("-union"))
++            {
++                doUnion = true;
++            } else if (arg.equalsIgnoreCase("-sub") ||
++                       arg.equalsIgnoreCase("-diff"))
++            {
++                doSubtract = true;
++            } else if (arg.equalsIgnoreCase("-int") ||
++                       arg.equalsIgnoreCase("-intersect"))
++            {
++                doIntersect = true;
++            } else if (arg.equalsIgnoreCase("-xor")) {
++                doXor = true;
++            } else if (arg.equalsIgnoreCase("-seed")) {
++                if (i+1 >= argv.length) {
++                    usage("missing arg for -seed");
++                }
++                rand.setSeed(Long.decode(argv[++i]).longValue());
++            } else if (arg.equalsIgnoreCase("-nocheck")) {
++                skipCheck = true;
++            } else if (arg.equalsIgnoreCase("-count") ||
++                       arg.equalsIgnoreCase("-counterrors"))
++            {
++                countErrors = true;
++            } else if (arg.equalsIgnoreCase("-help")) {
++                usage(null);
++            } else {
++                usage("Unknown argument: "+arg);
++            }
++        }
++
++        if (maxsubrects < minsubrects) {
++            usage("maximum number of subrectangles less than minimum");
++        }
++
++        if (minsubrects <= 0) {
++            usage("minimum number of subrectangles must be positive");
++        }
++
++        if (!doUnion && !doSubtract && !doIntersect && !doXor) {
++            doUnion = doSubtract = doIntersect = doXor = true;
++        }
++
++        long start = System.currentTimeMillis();
++        RectListImpl rlist[] = new RectListImpl[numregions];
++        int totalrects = 0;
++        for (int i = 0; i < rlist.length; i++) {
++            RectListImpl rli = RectListImpl.getInstance();
++            int numsubrects =
++                minsubrects + rand.nextInt(maxsubrects - minsubrects + 1);
++            for (int j = 0; j < numsubrects; j++) {
++                addRectTo(rli);
++                totalrects++;
++            }
++            rlist[i] = rli;
++        }
++        long end = System.currentTimeMillis();
++        System.out.println((end-start)+"ms to create "+
++                           rlist.length+" regions containing "+
++                           totalrects+" subrectangles");
++
++        start = System.currentTimeMillis();
++        for (int i = 0; i < rlist.length; i++) {
++            RectListImpl a = rlist[i];
++            testTranslate(a);
++            for (int j = i; j < rlist.length; j++) {
++                RectListImpl b = rlist[j];
++                if (doUnion) testUnion(a, b);
++                if (doSubtract) testDifference(a, b);
++                if (doIntersect) testIntersection(a, b);
++                if (doXor) testExclusiveOr(a, b);
++            }
++        }
++        end = System.currentTimeMillis();
++        System.out.println(numops+" ops took "+(end-start)+"ms");
++
++        if (numErrors > 0) {
++            throw new RuntimeException(numErrors+" errors encountered");
++        }
++    }
++
++    public static void addRectTo(RectListImpl rli) {
++        int lox = MINCOORD + rand.nextInt(MAXCOORD - MINCOORD + 1);
++        int hix = MINCOORD + rand.nextInt(MAXCOORD - MINCOORD + 1);
++        int loy = MINCOORD + rand.nextInt(MAXCOORD - MINCOORD + 1);
++        int hiy = MINCOORD + rand.nextInt(MAXCOORD - MINCOORD + 1);
++        rli.addRect(lox, loy, hix, hiy);
++    }
++
++    public static void checkEqual(RectListImpl a, RectListImpl b,
++                                  String optype)
++    {
++        if (a.hashCode() != b.hashCode()) {
++            error(a, b, "hashcode failed for "+optype);
++        }
++        if (!a.equals(b)) {
++            error(a, b, "equals failed for "+optype);
++        }
++    }
++
++    public static void testTranslate(RectListImpl a) {
++        RectListImpl maxTrans =
++            a.getTranslation(Integer.MAX_VALUE, Integer.MAX_VALUE)
++            .getTranslation(Integer.MAX_VALUE, Integer.MAX_VALUE)
++            .getTranslation(Integer.MAX_VALUE, Integer.MAX_VALUE);
++        if (!maxTrans.checkTransEmpty()) {
++            error(maxTrans, null, "overflow translated RectList not empty");
++        }
++        RectListImpl minTrans =
++            a.getTranslation(Integer.MIN_VALUE, Integer.MIN_VALUE)
++            .getTranslation(Integer.MIN_VALUE, Integer.MIN_VALUE)
++            .getTranslation(Integer.MIN_VALUE, Integer.MIN_VALUE);
++        if (!minTrans.checkTransEmpty()) {
++            error(minTrans, null, "overflow translated RectList not empty");
++        }
++        testTranslate(a, Integer.MAX_VALUE, Integer.MAX_VALUE, false,
++                      MINCOORD, 0, MINCOORD, 0);
++        testTranslate(a, Integer.MAX_VALUE, Integer.MIN_VALUE, false,
++                      MINCOORD, 0, 0, MAXCOORD);
++        testTranslate(a, Integer.MIN_VALUE, Integer.MAX_VALUE, false,
++                      0, MAXCOORD, MINCOORD, 0);
++        testTranslate(a, Integer.MIN_VALUE, Integer.MIN_VALUE, false,
++                      0, MAXCOORD, 0, MAXCOORD);
++        for (int dy = -100; dy <= 100; dy += 50) {
++            for (int dx = -100; dx <= 100; dx += 50) {
++                testTranslate(a, dx, dy, true,
++                              MINCOORD, MAXCOORD,
++                              MINCOORD, MAXCOORD);
++            }
++        }
++    }
++
++    public static void testTranslate(RectListImpl a, int dx, int dy,
++                                     boolean isNonDestructive,
++                                     int xmin, int xmax,
++                                     int ymin, int ymax)
++    {
++        RectListImpl theTrans = a.getTranslation(dx, dy); numops++;
++        if (skipCheck) return;
++        RectListImpl unTrans = theTrans.getTranslation(-dx, -dy);
++        if (isNonDestructive) checkEqual(a, unTrans, "Translate");
++        for (int x = xmin; x < xmax; x++) {
++            for (int y = ymin; y < ymax; y++) {
++                boolean inside = a.contains(x, y);
++                if (theTrans.contains(x+dx, y+dy) != inside) {
++                    error(a, null, "translation failed for "+
++                          dx+", "+dy+" at "+x+", "+y);
++                }
++            }
++        }
++    }
++
++    public static void testUnion(RectListImpl a, RectListImpl b) {
++        RectListImpl aUb = a.getUnion(b); numops++;
++        RectListImpl bUa = b.getUnion(a); numops++;
++        if (skipCheck) return;
++        checkEqual(aUb, bUa, "Union");
++        testUnion(a, b, aUb);
++        testUnion(a, b, bUa);
++    }
++
++    public static void testUnion(RectListImpl a, RectListImpl b,
++                                 RectListImpl theUnion)
++    {
++        for (int x = MINCOORD; x < MAXCOORD; x++) {
++            for (int y = MINCOORD; y < MAXCOORD; y++) {
++                boolean inside = (a.contains(x, y) || b.contains(x, y));
++                if (theUnion.contains(x, y) != inside) {
++                    error(a, b, "union failed at "+x+", "+y);
++                }
++            }
++        }
++    }
++
++    public static void testDifference(RectListImpl a, RectListImpl b) {
++        RectListImpl aDb = a.getDifference(b); numops++;
++        RectListImpl bDa = b.getDifference(a); numops++;
++        if (skipCheck) return;
++        // Note that difference is not commutative so we cannot check equals
++        // checkEqual(a, b, "Difference");
++        testDifference(a, b, aDb);
++        testDifference(b, a, bDa);
++    }
++
++    public static void testDifference(RectListImpl a, RectListImpl b,
++                                      RectListImpl theDifference)
++    {
++        for (int x = MINCOORD; x < MAXCOORD; x++) {
++            for (int y = MINCOORD; y < MAXCOORD; y++) {
++                boolean inside = (a.contains(x, y) && !b.contains(x, y));
++                if (theDifference.contains(x, y) != inside) {
++                    error(a, b, "difference failed at "+x+", "+y);
++                }
++            }
++        }
++    }
++
++    public static void testIntersection(RectListImpl a, RectListImpl b) {
++        RectListImpl aIb = a.getIntersection(b); numops++;
++        RectListImpl bIa = b.getIntersection(a); numops++;
++        if (skipCheck) return;
++        checkEqual(aIb, bIa, "Intersection");
++        testIntersection(a, b, aIb);
++        testIntersection(a, b, bIa);
++    }
++
++    public static void testIntersection(RectListImpl a, RectListImpl b,
++                                        RectListImpl theIntersection)
++    {
++        for (int x = MINCOORD; x < MAXCOORD; x++) {
++            for (int y = MINCOORD; y < MAXCOORD; y++) {
++                boolean inside = (a.contains(x, y) && b.contains(x, y));
++                if (theIntersection.contains(x, y) != inside) {
++                    error(a, b, "intersection failed at "+x+", "+y);
++                }
++            }
++        }
++    }
++
++    public static void testExclusiveOr(RectListImpl a, RectListImpl b) {
++        RectListImpl aXb = a.getExclusiveOr(b); numops++;
++        RectListImpl bXa = b.getExclusiveOr(a); numops++;
++        if (skipCheck) return;
++        checkEqual(aXb, bXa, "ExclusiveOr");
++        testExclusiveOr(a, b, aXb);
++        testExclusiveOr(a, b, bXa);
++    }
++
++    public static void testExclusiveOr(RectListImpl a, RectListImpl b,
++                                       RectListImpl theExclusiveOr)
++    {
++        for (int x = MINCOORD; x < MAXCOORD; x++) {
++            for (int y = MINCOORD; y < MAXCOORD; y++) {
++                boolean inside = (a.contains(x, y) != b.contains(x, y));
++                if (theExclusiveOr.contains(x, y) != inside) {
++                    error(a, b, "xor failed at "+x+", "+y);
++                }
++            }
++        }
++    }
++
++    public abstract static class RectListImpl {
++        public static RectListImpl getInstance() {
++            if (useArea) {
++                return new AreaImpl();
++            } else {
++                return new RegionImpl();
++            }
++        }
++
++        public abstract void addRect(int lox, int loy, int hix, int hiy);
++
++        public abstract RectListImpl getTranslation(int dx, int dy);
++
++        public abstract RectListImpl getIntersection(RectListImpl rli);
++        public abstract RectListImpl getExclusiveOr(RectListImpl rli);
++        public abstract RectListImpl getDifference(RectListImpl rli);
++        public abstract RectListImpl getUnion(RectListImpl rli);
++
++        // Used for making sure that 3xMAX translates yields an empty region
++        public abstract boolean checkTransEmpty();
++
++        public abstract boolean contains(int x, int y);
++
++        public abstract int hashCode();
++        public abstract boolean equals(RectListImpl other);
++    }
++
++    public static class AreaImpl extends RectListImpl {
++        Area theArea;
++
++        public AreaImpl() {
++        }
++
++        public AreaImpl(Area a) {
++            theArea = a;
++        }
++
++        public void addRect(int lox, int loy, int hix, int hiy) {
++            Area a2 = new Area(new Rectangle(lox, loy, hix-lox, hiy-loy));
++            if (theArea == null) {
++                theArea = a2;
++            } else {
++                theArea.add(a2);
++            }
++        }
++
++        public RectListImpl getTranslation(int dx, int dy) {
++            AffineTransform at = AffineTransform.getTranslateInstance(dx, dy);
++            return new AreaImpl(theArea.createTransformedArea(at));
++        }
++
++        public RectListImpl getIntersection(RectListImpl rli) {
++            Area a2 = new Area(theArea);
++            a2.intersect(((AreaImpl) rli).theArea);
++            return new AreaImpl(a2);
++        }
++
++        public RectListImpl getExclusiveOr(RectListImpl rli) {
++            Area a2 = new Area(theArea);
++            a2.exclusiveOr(((AreaImpl) rli).theArea);
++            return new AreaImpl(a2);
++        }
++
++        public RectListImpl getDifference(RectListImpl rli) {
++            Area a2 = new Area(theArea);
++            a2.subtract(((AreaImpl) rli).theArea);
++            return new AreaImpl(a2);
++        }
++
++        public RectListImpl getUnion(RectListImpl rli) {
++            Area a2 = new Area(theArea);
++            a2.add(((AreaImpl) rli).theArea);
++            return new AreaImpl(a2);
++        }
++
++        // Used for making sure that 3xMAX translates yields an empty region
++        public boolean checkTransEmpty() {
++            // Area objects will actually survive 3 MAX translates so just
++            // pretend that it had the intended effect...
++            return true;
++        }
++
++        public boolean contains(int x, int y) {
++            return theArea.contains(x, y);
++        }
++
++        public int hashCode() {
++            // Area does not override hashCode...
++            return 0;
++        }
++
++        public boolean equals(RectListImpl other) {
++            return theArea.equals(((AreaImpl) other).theArea);
++        }
++
++        public String toString() {
++            return theArea.toString();
++        }
++    }
++
++    public static class RegionImpl extends RectListImpl {
++        Region theRegion;
++
++        public RegionImpl() {
++        }
++
++        public RegionImpl(Region r) {
++            theRegion = r;
++        }
++
++        public void addRect(int lox, int loy, int hix, int hiy) {
++            Region r2 = Region.getInstanceXYXY(lox, loy, hix, hiy);
++            if (theRegion == null) {
++                theRegion = r2;
++            } else {
++                theRegion = theRegion.getUnion(r2);
++            }
++        }
++
++        public RectListImpl getTranslation(int dx, int dy) {
++            return new RegionImpl(theRegion.getTranslatedRegion(dx, dy));
++        }
++
++        public RectListImpl getIntersection(RectListImpl rli) {
++            Region r2 = ((RegionImpl) rli).theRegion;
++            r2 = theRegion.getIntersection(r2);
++            return new RegionImpl(r2);
++        }
++
++        public RectListImpl getExclusiveOr(RectListImpl rli) {
++            Region r2 = ((RegionImpl) rli).theRegion;
++            r2 = theRegion.getExclusiveOr(r2);
++            return new RegionImpl(r2);
++        }
++
++        public RectListImpl getDifference(RectListImpl rli) {
++            Region r2 = ((RegionImpl) rli).theRegion;
++            r2 = theRegion.getDifference(r2);
++            return new RegionImpl(r2);
++        }
++
++        public RectListImpl getUnion(RectListImpl rli) {
++            Region r2 = ((RegionImpl) rli).theRegion;
++            r2 = theRegion.getUnion(r2);
++            return new RegionImpl(r2);
++        }
++
++        // Used for making sure that 3xMAX translates yields an empty region
++        public boolean checkTransEmpty() {
++            // Region objects should be empty after 3 MAX translates...
++            return theRegion.isEmpty();
++        }
++
++        public boolean contains(int x, int y) {
++            return theRegion.contains(x, y);
++        }
++
++        public int hashCode() {
++            return theRegion.hashCode();
++        }
++
++        public boolean equals(RectListImpl other) {
++            return theRegion.equals(((RegionImpl) other).theRegion);
++        }
++
++        public String toString() {
++            return theRegion.toString();
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6637796-set_bounds.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,465 @@
+# HG changeset patch
+# User anthony
+# Date 1295642949 0
+# Node ID fcb2f8dcf112ceaf5d8d18b75749baa22b29bda6
+# Parent  8aafe588257f91d68436c0e13d98b6f4b27e2436
+6637796: setBounds doesn't enlarge Component
+Summary: Added the areBoundsValid() method that verifies whether the current bounds of the component are valid. Using the isValid() method for this purpose previously was incorrect.
+Reviewed-by: son, art
+
+diff -r 8aafe588257f -r fcb2f8dcf112 src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	Thu Mar 20 11:09:16 2008 +0300
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Fri Jan 21 20:49:09 2011 +0000
+@@ -9310,6 +9310,19 @@
+     // ************************** MIXING CODE *******************************
+ 
+     /**
++     * Check whether we can trust the current bounds of the component.
++     * The return value of false indicates that the container of the
++     * component is invalid, and therefore needs to be layed out, which would
++     * probably mean changing the bounds of its children.
++     * Null-layout of the container or absence of the container mean
++     * the bounds of the component are final and can be trusted.
++     */
++    private boolean areBoundsValid() {
++        Container cont = getContainer();
++        return cont == null || cont.isValid() || cont.getLayout() == null;
++    }
++
++    /**
+      * Applies the shape to the component
+      * @param shape Shape to be applied to the component
+      */
+@@ -9332,7 +9345,7 @@
+                 // to modify the object outside of the mixing code.
+                 this.compoundShape = shape;
+ 
+-                if (isValid()) {
++                if (areBoundsValid()) {
+                     Point compAbsolute = getLocationOnWindow();
+ 
+                     if (mixingLog.isLoggable(Level.FINER)) {
+@@ -9459,7 +9472,7 @@
+ 
+     void applyCurrentShape() {
+         checkTreeLock();
+-        if (!isValid()) {
++        if (!areBoundsValid()) {
+             return; // Because applyCompoundShape() ignores such components anyway
+         }
+         if (mixingLog.isLoggable(Level.FINE)) {
+diff -r 8aafe588257f -r fcb2f8dcf112 test/java/awt/Mixing/ValidBounds.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Mixing/ValidBounds.java	Fri Jan 21 20:49:09 2011 +0000
+@@ -0,0 +1,411 @@
++/*
++ * Copyright (c) 2007, 2008, 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 6637796
++  @summary Shape should be correctly updated on invalid components
++  @author anthony.petrov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main ValidBounds
++*/
++
++/**
++ * ValidBounds.java
++ *
++ * summary:  Shape should be correctly updated on invalid components
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import test.java.awt.regtesthelpers.Util;
++
++public class ValidBounds
++{
++
++    static volatile boolean clickPassed = false;
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++
++        // Create the frame and the button
++        Frame f = new Frame();
++        f.setBounds(100, 100, 400, 300);
++
++        Button b = new Button("OK");
++
++        f.setLayout(null);
++        f.add(b);
++        b.setBounds(50, 50, 200, 50);
++
++        b.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent e) {
++                clickPassed = true;
++            }
++        });
++
++        f.setVisible(true);
++
++        // Let's make the button much smaller first...
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        b.setBounds(50, 50, 5, 5);
++        Util.waitForIdle(robot);
++
++        // ... and now let's enlarge it.
++        b.setBounds(50, 50, 200, 50);
++        Util.waitForIdle(robot);
++
++        // If the button doesn't receive the click, it means that the test
++        // failed: the shape of the button was not enlarged.
++        Point heavyLoc = b.getLocationOnScreen();
++        robot.mouseMove(heavyLoc.x + 20, heavyLoc.y + 20);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        if (clickPassed) {
++            pass();
++        } else {
++            fail("The button cannot be clicked.");
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class ValidBounds
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         ValidBounds.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         ValidBounds.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6682046-shape_calculation.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,506 @@
+# HG changeset patch
+# User anthony
+# Date 1292028654 0
+# Node ID 6de73ab429ca5638f4761c98f15a92dda7327d09
+# Parent  5dab44569221369c0353129cd4fac0c3f259f258
+6682046: Mixing code does not always recalculate shapes correctly when resizing components
+Summary: The valid property is now encapsulated in Component.
+Reviewed-by: art
+
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Button.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Button.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Button.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -213,8 +213,8 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (testvalid && valid) {
+-            invalidate();
++        if (testvalid) {
++            invalidateIfValid();
+         }
+     }
+ 
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Checkbox.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Checkbox.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Checkbox.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -284,8 +284,8 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (testvalid && valid) {
+-            invalidate();
++        if (testvalid) {
++            invalidateIfValid();
+         }
+     }
+ 
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Choice.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Choice.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Choice.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -207,9 +207,7 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -269,9 +267,7 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -299,9 +295,7 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -323,9 +317,7 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -367,9 +359,7 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -345,7 +345,7 @@
+      * @see #validate
+      * @see #invalidate
+      */
+-    volatile boolean valid = false;
++    private volatile boolean valid = false;
+ 
+     /**
+      * The <code>DropTarget</code> associated with this component.
+@@ -1699,9 +1699,9 @@
+         // This could change the preferred size of the Component.
+         // Fix for 6213660. Should compare old and new fonts and do not
+         // call invalidate() if they are equal.
+-        if (valid && f != oldFont && (oldFont == null ||
++        if (f != oldFont && (oldFont == null ||
+                                       !oldFont.equals(f))) {
+-            invalidate();
++            invalidateIfValid();
+         }
+     }
+ 
+@@ -1758,9 +1758,7 @@
+         firePropertyChange("locale", oldValue, l);
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -2069,8 +2067,8 @@
+                     if (resized) {
+                         invalidate();
+                     }
+-                    if (parent != null && parent.valid) {
+-                        parent.invalidate();
++                    if (parent != null) {
++                        parent.invalidateIfValid();
+                     }
+                 }
+                 if (needNotify) {
+@@ -2639,7 +2637,8 @@
+     public void validate() {
+         synchronized (getTreeLock()) {
+             ComponentPeer peer = this.peer;
+-            if (!valid && peer != null) {
++            boolean wasValid = isValid();
++            if (!wasValid && peer != null) {
+                 Font newfont = getFont();
+                 Font oldfont = peerFont;
+                 if (newfont != oldfont && (oldfont == null
+@@ -2650,6 +2649,9 @@
+                 peer.layout();
+             }
+             valid = true;
++            if (!wasValid) {
++                mixOnValidating();
++            }
+         }
+     }
+ 
+@@ -2678,9 +2680,17 @@
+             if (!isMaximumSizeSet()) {
+                 maxSize = null;
+             }
+-            if (parent != null && parent.valid) {
+-                parent.invalidate();
+-            }
++            if (parent != null) {
++                parent.invalidateIfValid();
++            }
++        }
++    }
++
++    /** Invalidates the component unless it is already invalid.
++     */
++    final void invalidateIfValid() {
++        if (isValid()) {
++            invalidate();
+         }
+     }
+ 
+@@ -7690,7 +7700,7 @@
+     protected String paramString() {
+         String thisName = getName();
+         String str = (thisName != null? thisName : "") + "," + x + "," + y + "," + width + "x" + height;
+-        if (!valid) {
++        if (!isValid()) {
+             str += ",invalid";
+         }
+         if (!visible) {
+@@ -8450,9 +8460,7 @@
+         firePropertyChange("componentOrientation", oldValue, o);
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -9294,7 +9302,8 @@
+      */
+     private boolean areBoundsValid() {
+         Container cont = getContainer();
+-        return cont == null || cont.isValid() || cont.getLayout() == null;
++        return cont == null || cont.isValid()
++            || cont.getLayout() == null;
+     }
+ 
+     /**
+@@ -9565,5 +9574,10 @@
+         }
+     }
+ 
++    void mixOnValidating() {
++        // This method gets overriden in the Container. Obviously, a plain
++        // non-container components don't need to handle validation.
++    }
++
+     // ****************** END OF MIXING CODE ********************************
+ }
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -505,9 +505,7 @@
+             comp.parent = null;
+             component.remove(index);
+ 
+-            if (valid) {
+-                invalidate();
+-            }
++            invalidateIfValid();
+         } else {
+             // We should remove component and then
+             // add it by the newIndex without newIndex decrement if even we shift components to the left
+@@ -796,9 +794,7 @@
+             }
+         }
+ 
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+         if (peer != null) {
+             if (comp.peer == null) { // Remove notify was called or it didn't have peer - create new one
+                 comp.addNotify();
+@@ -1060,9 +1056,7 @@
+                 comp.numListening(AWTEvent.HIERARCHY_BOUNDS_EVENT_MASK));
+             adjustDescendants(comp.countHierarchyMembers());
+ 
+-            if (valid) {
+-                invalidate();
+-            }
++            invalidateIfValid();
+             if (peer != null) {
+                 comp.addNotify();
+             }
+@@ -1151,9 +1145,7 @@
+             comp.parent = null;
+             component.remove(index);
+ 
+-            if (valid) {
+-                invalidate();
+-            }
++            invalidateIfValid();
+             if (containerListener != null ||
+                 (eventMask & AWTEvent.CONTAINER_EVENT_MASK) != 0 ||
+                 Toolkit.enabledOnToolkit(AWTEvent.CONTAINER_EVENT_MASK)) {
+@@ -1245,9 +1237,7 @@
+             if (peer != null && layoutMgr == null && isVisible()) {
+                 updateCursorImmediately();
+             }
+-            if (valid) {
+-                invalidate();
+-            }
++            invalidateIfValid();
+         }
+     }
+ 
+@@ -1407,9 +1397,7 @@
+      */
+     public void setLayout(LayoutManager mgr) {
+         layoutMgr = mgr;
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
+@@ -1481,10 +1469,10 @@
+      */
+     public void validate() {
+         /* Avoid grabbing lock unless really necessary. */
+-        if (!valid) {
++        if (!isValid()) {
+             boolean updateCur = false;
+             synchronized (getTreeLock()) {
+-                if (!valid && peer != null) {
++                if (!isValid() && peer != null) {
+                     ContainerPeer p = null;
+                     if (peer instanceof ContainerPeer) {
+                         p = (ContainerPeer) peer;
+@@ -1493,7 +1481,6 @@
+                         p.beginValidate();
+                     }
+                     validateTree();
+-                    valid = true;
+                     if (p != null) {
+                         p.endValidate();
+                         updateCur = isVisible();
+@@ -1516,7 +1503,7 @@
+      * @see #validate
+      */
+     protected void validateTree() {
+-        if (!valid) {
++        if (!isValid()) {
+             if (peer instanceof ContainerPeer) {
+                 ((ContainerPeer)peer).beginLayout();
+             }
+@@ -1525,7 +1512,7 @@
+                 Component comp = component.get(i);
+                 if (   (comp instanceof Container)
+                        && !(comp instanceof Window)
+-                       && !comp.valid) {
++                       && !comp.isValid()) {
+                     ((Container)comp).validateTree();
+                 } else {
+                     comp.validate();
+@@ -1535,7 +1522,7 @@
+                 ((ContainerPeer)peer).endLayout();
+             }
+         }
+-        valid = true;
++        super.validate();
+     }
+ 
+     /**
+@@ -1550,14 +1537,10 @@
+                     ((Container)comp).invalidateTree();
+                 }
+                 else {
+-                    if (comp.valid) {
+-                        comp.invalidate();
+-                    }
++                    comp.invalidateIfValid();
+                 }
+             }
+-            if (valid) {
+-                invalidate();
+-            }
++            invalidateIfValid();
+         }
+     }
+ 
+@@ -4079,6 +4062,21 @@
+         }
+     }
+ 
++    @Override
++    void mixOnValidating() {
++        synchronized (getTreeLock()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this);
++            }
++
++            if (hasHeavyweightDescendants()) {
++                recursiveApplyCurrentShape();
++            }
++
++            super.mixOnValidating();
++        }
++    }
++
+     // ****************** END OF MIXING CODE ********************************
+ }
+ 
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Dialog.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Dialog.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Dialog.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -1327,8 +1327,8 @@
+         // the insets of the Dialog. If we could, we'd call invalidate()
+         // from the peer, but we need to guarantee that we're not holding
+         // the Dialog lock when we call invalidate().
+-        if (testvalid && valid) {
+-            invalidate();
++        if (testvalid) {
++            invalidateIfValid();
+         }
+     }
+ 
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Frame.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Frame.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Frame.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -590,9 +590,7 @@
+                 if (peer != null) {
+                     mbManagement = true;
+                     menuBar.addNotify();
+-                    if (valid) {
+-                        invalidate();
+-                    }
++                    invalidateIfValid();
+                     peer.setMenuBar(menuBar);
+                 }
+             }
+@@ -633,8 +631,8 @@
+         // the insets of the Frame. If we could, we'd call invalidate()
+         // from the peer, but we need to guarantee that we're not holding
+         // the Frame lock when we call invalidate().
+-        if (testvalid && valid) {
+-            invalidate();
++        if (testvalid) {
++            invalidateIfValid();
+         }
+         firePropertyChange("resizable", oldResizable, resizable);
+     }
+@@ -858,9 +856,7 @@
+                 FramePeer peer = (FramePeer)this.peer;
+                 if (peer != null) {
+                     mbManagement = true;
+-                    if (valid) {
+-                        invalidate();
+-                    }
++                    invalidateIfValid();
+                     peer.setMenuBar(null);
+                     m.removeNotify();
+                 }
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/Label.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Label.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Label.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -257,8 +257,8 @@
+         }
+ 
+         // This could change the preferred size of the Component.
+-        if (testvalid && valid) {
+-            invalidate();
++        if (testvalid) {
++            invalidateIfValid();
+         }
+     }
+ 
+diff -r 5dab44569221 -r 6de73ab429ca src/share/classes/java/awt/TextField.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/TextField.java	Tue Feb 01 17:59:02 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/TextField.java	Sat Dec 11 00:50:54 2010 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -296,9 +296,7 @@
+         super.setText(t);
+ 
+         // This could change the preferred size of the Component.
+-        if (valid) {
+-            invalidate();
+-        }
++        invalidateIfValid();
+     }
+ 
+     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6693253-security_warning.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,5403 @@
+# HG changeset patch
+# User anthony
+# Date 1297956979 0
+# Node ID 2c9218aed28a5706c062eac8c5e7db1ec3dc9dfc
+# Parent  119b67260c33358c5a34dddf69b709b78b39e590
+6693253: Security Warning appearance requires enhancements
+6779717: A Window does not show applet security warning icon on X platforms
+6785058: Parent don't get the focus after dialog is closed if security warning is applied
+Summary: Forward-port from 6u10-6u14
+Reviewed-by: art, dcherepanov
+diff -Nru openjdk.orig/jdk/make/sun/awt/Depend.mak openjdk/jdk/make/sun/awt/Depend.mak
+--- openjdk.orig/jdk/make/sun/awt/Depend.mak	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/sun/awt/Depend.mak	2011-02-17 15:50:10.704058433 +0000
+@@ -71,6 +71,7 @@
+ 	$(STUBDIR)/Ole2.h \
+ 	$(STUBDIR)/Zmouse.h \
+ 	$(STUBDIR)/cderr.h \
++	$(STUBDIR)/commctrl.h \
+ 	$(STUBDIR)/commdlg.h \
+ 	$(STUBDIR)/direct.h \
+ 	$(STUBDIR)/d3dcom.h \
+diff -Nru openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk openjdk/jdk/make/sun/awt/FILES_c_windows.gmk
+--- openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/make/sun/awt/FILES_c_windows.gmk	2011-02-17 15:50:10.712057805 +0000
+@@ -202,6 +202,7 @@
+ 	ShellFolder2.cpp \
+ 	ThemeReader.cpp \
+ 	ComCtl32Util.cpp \
++	DllUtil.cpp \
+ 	initIDs.cpp \
+ 	awt_dlls.cpp \
+ 	UnicowsLoader.cpp \
+diff -Nru openjdk.orig/jdk/make/sun/awt/make.depend openjdk/jdk/make/sun/awt/make.depend
+--- openjdk.orig/jdk/make/sun/awt/make.depend	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/make/sun/awt/make.depend	2011-02-17 15:50:10.720057177 +0000
+@@ -14,145 +14,145 @@
+ 
+ $(OBJDIR)/AnyShort.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/awt_AWTEvent.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_AWTEvent.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_BitmapUtil.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/awt_BitmapUtil.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Brush.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Brush.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Button.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Button.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WButtonPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Button.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Button.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Button.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WButtonPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Button.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Canvas.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Canvas.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Checkbox.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Checkbox.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Checkbox.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Checkbox.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Checkbox.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Checkbox.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Choice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Choice.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WChoicePeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Choice.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Choice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Choice.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WChoicePeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Choice.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Clipboard.obj::	$(CLASSHDRDIR)/sun_awt_windows_WClipboard.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Clipboard.obj::	$(CLASSHDRDIR)/sun_awt_windows_WClipboard.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Color.obj::	$(CLASSHDRDIR)/sun_awt_windows_WColor.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Color.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Color.obj::	$(CLASSHDRDIR)/sun_awt_windows_WColor.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Color.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Component.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Color.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_MouseWheelEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPanelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/awt_Component.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Color.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_MouseWheelEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPanelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Container.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Container.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Cursor.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Cursor.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCustomCursor.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WGlobalCursorManager.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Cursor.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Cursor.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WCustomCursor.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WGlobalCursorManager.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_DataTransferer.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_datatransfer_DataTransferer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDataTransferer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_DataTransferer.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_datatransfer_DataTransferer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDataTransferer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Debug.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Debug.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/awt_Desktop.obj::	../../../src/share/javavm/export/jni.h ../../../src/windows/javavm/export/jni_md.h
+ 
+-$(OBJDIR)/awt_DesktopProperties.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDesktopProperties.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_DesktopProperties.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDesktopProperties.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Dialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Dialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Dimension.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Dimension.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_dlls.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_dlls.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_DnDDS.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_dnd_SunDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_DnDDS.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_dnd_SunDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDragSourceContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_DnDDT.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDropTargetContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_DnDDT.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_dnd_DnDConstants.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDropTargetContextPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_DataTransferer.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_DrawingSurface.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_DrawingSurface.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Event.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Event.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_FileDialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_FileDialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Font.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDefaultFontCharset.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFontPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Font.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDefaultFontCharset.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFontPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Frame.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/java_lang_Integer.h $(CLASSHDRDIR)/sun_awt_EmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Frame.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/java_lang_Integer.h $(CLASSHDRDIR)/sun_awt_EmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFrame.h $(CLASSHDRDIR)/sun_awt_windows_WEmbeddedFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_GDIObject.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_GDIObject.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_IconCursor.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_IconCursor.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/awt_ImageRep.obj::	$(CLASSHDRDIR)/sun_awt_image_ImageRepresentation.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+ $(OBJDIR)/awt_ImagingLib.obj::	$(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_image_BufferedImage.h $(CLASSHDRDIR)/java_awt_image_ConvolveOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_image_ImagingLib.h $(CLASSHDRDIR)/sun_awt_image_IntegerComponentRaster.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/share/native/sun/awt/medialib/awt_ImagingLib.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_types.h ../../../src/share/native/sun/awt/medialib/safe_alloc.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/awt_Mlib.h
+ 
+-$(OBJDIR)/awt_InputEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_InputEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_InputMethod.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethodDescriptor.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_InputMethod.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethodDescriptor.h $(CLASSHDRDIR)/sun_awt_windows_WInputMethod.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/common/locale_str.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_InputTextInfor.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_InputTextInfor.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_InputTextInfor.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Insets.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Insets.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_KeyboardFocusManager.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_KeyboardFocusManager.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_KeyboardFocusManager.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_KeyEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_KeyEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Label.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Label.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WLabelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Label.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Label.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Label.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WLabelPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Label.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_List.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_List.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dimension.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Menu.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_MenuBar.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_MenuBar.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_MenuItem.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_CheckboxMenuItem.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_MenuItem.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_CheckboxMenuItem.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCheckboxMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Menu.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/awt_Mlib.obj::	$(CLASSHDRDIR)/java_awt_image_BufferedImage.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/medialib/awt_ImagingLib.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_types.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Mlib.h ../../../src/windows/native/sun/windows/stdhdrs.h
+ 
+ $(OBJDIR)/awt_MMStub.obj::	../../../src/windows/native/sun/windows/awt_MMStub.h
+ 
+-$(OBJDIR)/awt_MouseEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_MouseEvent.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MouseEvent.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_new.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_new.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Object.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Object.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Palette.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_CustomPaletteDef.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Palette.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_CustomPaletteDef.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Panel.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Panel.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/awt_parseImage.obj::	$(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_image_BufferedImage.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_image_ImagingLib.h $(CLASSHDRDIR)/sun_awt_image_IntegerComponentRaster.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/awt_parseImage.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/share/native/sun/awt/medialib/awt_ImagingLib.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_types.h ../../../src/share/native/sun/awt/medialib/safe_alloc.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/awt_Mlib.h
+ 
+-$(OBJDIR)/awt_Pen.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Pen.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_PopupMenu.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_PopupMenu.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Event.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_PrintControl.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_PrintControl.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_PrintDialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialog.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_PrintDialog.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialog.h $(CLASSHDRDIR)/sun_awt_windows_WPrintDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_PrintJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrinterJob.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_PrintJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPrinterJob.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Rectangle.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Rectangle.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Rectangle.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Rectangle.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Robot.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WRobotPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Robot.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Robot.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WRobotPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Robot.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Scrollbar.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Scrollbar.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_ScrollPane.obj::	$(CLASSHDRDIR)/java_awt_Adjustable.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_AdjustmentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_ScrollPane.h $(CLASSHDRDIR)/java_awt_ScrollPaneAdjustable.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollPanePeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_ScrollPane.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_ScrollPane.obj::	$(CLASSHDRDIR)/java_awt_Adjustable.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_AdjustmentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Scrollbar.h $(CLASSHDRDIR)/java_awt_ScrollPaneAdjustable.h $(CLASSHDRDIR)/java_awt_ScrollPane.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollbarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WScrollPanePeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Scrollbar.h ../../../src/windows/native/sun/windows/awt_ScrollPane.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_TextArea.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextArea.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextAreaPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextArea.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_TextArea.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextArea.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextAreaPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextArea.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_TextComponent.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_TextComponent.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_TextField.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_TextField.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextFieldPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_TextField.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_TextField.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_TextComponent.h $(CLASSHDRDIR)/java_awt_TextField.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WTextFieldPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_KeyboardFocusManager.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_TextComponent.h ../../../src/windows/native/sun/windows/awt_TextField.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Toolkit.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_ComponentPeer.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Toolkit.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputMethodEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_List.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_ComponentPeer.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_PopupMenu.h $(CLASSHDRDIR)/java_awt_Toolkit.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WListPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WPopupMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Clipboard.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Cursor.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DesktopProperties.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_DnDDS.h ../../../src/windows/native/sun/windows/awt_DnDDT.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_InputEvent.h ../../../src/windows/native/sun/windows/awt_KeyEvent.h ../../../src/windows/native/sun/windows/awt_List.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_new.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PopupMenu.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/DllUtil.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_TrayIcon.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_ActionEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TrayIcon.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WTrayIconPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_TrayIcon.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_TrayIcon.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_ActionEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_InputEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_TrayIcon.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WTrayIconPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_AWTEvent.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_TrayIcon.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Unicode.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Unicode.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Win32GraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsConfig.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Win32GraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsConfig.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsConfig.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Win32GraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsDevice.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/awt/image/dither.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Win32GraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_color_ColorSpace.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_image_DataBuffer.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsDevice.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/awt/image/dither.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/img_util_md.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Win32GraphicsEnv.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsEnvironment.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Win32GraphicsEnv.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_Win32GraphicsEnvironment.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/DllUtil.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/awt_Window.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Container.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_ComponentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/awt_Window.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Container.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_ComponentEvent.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Insets.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Container.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_IconCursor.h ../../../src/windows/native/sun/windows/awt_Insets.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Panel.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/Blit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_Blit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/BlitBg.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_BlitBg.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/BlitBg.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_BlitBg.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Blit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_Blit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/BufferedMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedMaskBlit.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+@@ -166,45 +166,45 @@
+ 
+ $(OBJDIR)/ByteBinary4Bit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByteBinary.h ../../../src/share/native/sun/java2d/loops/ByteBinary4Bit.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/ByteGray.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/ByteGray.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/ByteIndexed.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/ByteIndexed.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/CmdIDList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/CmdIDList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/ComCtl32Util.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/ComCtl32Util.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DShaders.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DShaders.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DGlyphCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DGlyphCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DGraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DGraphicsDevice.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DGraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DGraphicsDevice.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DMaskCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DMaskCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DPipelineManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBadHardware.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DPipelineManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBadHardware.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DResourceManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DResourceManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/D3DVertexCacher.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DVertexCacher.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/DataBufferNative.obj::	$(CLASSHDRDIR)/sun_awt_image_DataBufferNative.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+@@ -216,12 +216,14 @@
+ 
+ $(OBJDIR)/debug_util.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/Devices.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/Devices.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/Disposer.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+ $(OBJDIR)/dither.obj::	../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/awt/image/dither.h ../../../src/windows/native/sun/windows/colordata.h
+ 
++$(OBJDIR)/DllUtil.obj::	../../../src/windows/native/sun/windows/DllUtil.h
++
+ $(OBJDIR)/DrawLine.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawLine.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/DrawPath.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+@@ -236,23 +238,23 @@
+ 
+ $(OBJDIR)/FillSpans.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillSpans.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/FourByteAbgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgr.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/FourByteAbgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgr.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/FourByteAbgrPre.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgrPre.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/FourByteAbgrPre.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any4Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/FourByteAbgrPre.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/GDIBlitLoops.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIBlitLoops.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/GDIBlitLoops.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIBlitLoops.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/GDIHashtable.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/GDIHashtable.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/GDIRenderer.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/GDIRenderer.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/GDIWindowSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIWindowSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h 
++$(OBJDIR)/GDIWindowSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_GDIWindowSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/gifdecoder.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/GraphicsPrimitiveMgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_GraphicsPrimitiveMgr.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/GraphicsPrimitiveMgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_GraphicsPrimitiveMgr.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Hashtable.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/Hashtable.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/imageInitIDs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/image/imageInitIDs.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+@@ -266,92 +268,92 @@
+ 
+ $(OBJDIR)/initIDs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/IntArgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/IntArgbBm.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/IntArgbBm.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/IntArgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/IntArgbPre.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/IntBgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/IntBgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/Index8Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/IntRgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/IntRgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/IntRgbx.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/IntRgbx.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/IntRgbx.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyInt.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/IntRgbx.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/MaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/MaskBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/MaskFill.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/MouseInfo.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/MouseInfo.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/ObjectList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/ObjectList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/OGLBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLFuncs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLFuncs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLMaskFill.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLMaskFill.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedPaints.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedPaints.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLRenderer.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLRenderer.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+-$(OBJDIR)/OGLVertexCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
++$(OBJDIR)/OGLVertexCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
+ $(OBJDIR)/ProcessPath.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Region.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/Region.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+ $(OBJDIR)/RenderBuffer.obj::	$(CLASSHDRDIR)/sun_java2d_pipe_RenderBuffer.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/ScaledBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_ScaledBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/ScaledBlit.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_ScaledBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/ShapeSpanIterator.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h $(CLASSHDRDIR)/sun_java2d_pipe_ShapeSpanIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/pipe/PathConsumer2D.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/ShellFolder2.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/ShellFolder2.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+ $(OBJDIR)/SpanClipRenderer.obj::	$(CLASSHDRDIR)/sun_java2d_pipe_RegionIterator.h $(CLASSHDRDIR)/sun_java2d_pipe_SpanClipRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+ $(OBJDIR)/SurfaceData.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/ThemeReader.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_ThemeReader.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/ThemeReader.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_ThemeReader.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/ThreeByteBgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any3Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/ThreeByteBgr.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/Any3Byte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/Trace.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
+ 
+-$(OBJDIR)/TransformHelper.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_loops_TransformHelper.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/awt/utility/rect.h
++$(OBJDIR)/TransformHelper.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_loops_TransformHelper.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+ $(OBJDIR)/UnicowsLoader.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/Ushort4444Argb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Ushort4444Argb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Ushort555Rgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Ushort555Rgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Ushort555Rgbx.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgbx.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Ushort555Rgbx.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgbx.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/Ushort565Rgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/Ushort565Rgb.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/Ushort4444Argb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/UshortGray.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/UshortGray.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyShort.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/UshortIndexed.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/loops/UshortIndexed.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/UshortIndexed.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/loops/UshortIndexed.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
+-$(OBJDIR)/WGLGraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
++$(OBJDIR)/WGLGraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+ 
+-$(OBJDIR)/WGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
++$(OBJDIR)/WGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+ 
+-$(OBJDIR)/WindowsFlags.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/WindowsFlags.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
+-$(OBJDIR)/WPrinterJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/WPrinterJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+diff -Nru openjdk.orig/jdk/make/sun/awt/Makefile openjdk/jdk/make/sun/awt/Makefile
+--- openjdk.orig/jdk/make/sun/awt/Makefile	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/make/sun/awt/Makefile	2011-02-17 15:50:10.712057805 +0000
+@@ -551,3 +551,4 @@
+ 
+ .PHONY: dgalibs dgalib.clean fontconfigs fontconfigs.clean
+ 
++# DO NOT DELETE
+diff -Nru openjdk.orig/jdk/make/sun/awt/README openjdk/jdk/make/sun/awt/README
+--- openjdk.orig/jdk/make/sun/awt/README	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/sun/awt/README	2011-02-17 15:50:10.712057805 +0000
+@@ -6,11 +6,9 @@
+ 
+ Included in this project is a generated file, make.depend, which lists
+ all interdependencies of the source files.  This file is generated *on
+-Solaris* with the following commands:
++Solaris or Linux* with the following command:
+ 
+-	% sccs edit make.depend
+ 	% gnumake -f Depend.mak
+-	% sccs delget make.depend
+ 
+ This step only needs to be run when new files are added to the project,
+ or include statements are changed.
+diff -Nru openjdk.orig/jdk/make/sun/xawt/FILES_c_unix.gmk openjdk/jdk/make/sun/xawt/FILES_c_unix.gmk
+--- openjdk.orig/jdk/make/sun/xawt/FILES_c_unix.gmk	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/FILES_c_unix.gmk	2011-02-17 15:50:10.720057177 +0000
+@@ -78,4 +78,5 @@
+ 	awt_Plugin.c \
+ 	gtk2_interface.c \
+         swing_GTKEngine.c \
+-        swing_GTKStyle.c
++        swing_GTKStyle.c \
++        rect.c
+diff -Nru openjdk.orig/jdk/make/sun/xawt/Makefile openjdk/jdk/make/sun/xawt/Makefile
+--- openjdk.orig/jdk/make/sun/xawt/Makefile	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/Makefile	2011-02-17 15:50:10.720057177 +0000
+@@ -79,6 +79,7 @@
+ vpath %.c   $(SHARE_SRC)/native/sun/java2d/loops
+ vpath %.c   $(SHARE_SRC)/native/sun/java2d/pipe
+ vpath %.c   $(SHARE_SRC)/native/sun/awt/medialib
++vpath %.c   $(SHARE_SRC)/native/sun/awt/utility
+ vpath %.cpp $(SHARE_SRC)/native/sun/image
+ vpath %.c   $(SHARE_SRC)/native/sun/font
+ vpath %.c   $(PLATFORM_SRC)/native/sun/awt/robot_child
+@@ -276,6 +277,23 @@
+     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \
+     $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png
+ 
++
++ICONPATH=$(PLATFORM_SRC)/classes/sun/awt/X11
++
++ICONS += \
++   $(ICONPATH)/security-icon-bw16.png \
++   $(ICONPATH)/security-icon-interim16.png \
++   $(ICONPATH)/security-icon-yellow16.png \
++   $(ICONPATH)/security-icon-bw24.png \
++   $(ICONPATH)/security-icon-interim24.png \
++   $(ICONPATH)/security-icon-yellow24.png \
++   $(ICONPATH)/security-icon-bw32.png \
++   $(ICONPATH)/security-icon-interim32.png \
++   $(ICONPATH)/security-icon-yellow32.png \
++   $(ICONPATH)/security-icon-bw48.png \
++   $(ICONPATH)/security-icon-interim48.png \
++   $(ICONPATH)/security-icon-yellow48.png
++
+ TEMPDIR_CLASSES = $(TEMPDIR)/classes
+ 
+ $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java
+diff -Nru openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
+--- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	2011-02-17 15:50:10.720057177 +0000
+@@ -93,6 +93,8 @@
+         Java_sun_awt_X11_XlibWrapper_XGetWMHints;
+         Java_sun_awt_X11_XlibWrapper_XShapeQueryExtension;
+         Java_sun_awt_X11_XlibWrapper_SetRectangularShape;
++        Java_sun_awt_X11_XlibWrapper_SetBitmapShape;
++        Java_sun_awt_X11_XlibWrapper_XConfigureWindow;
+         Java_sun_awt_X11_XToolkit_initIDs;
+         Java_sun_awt_X11_XWindow_getNativeColor;
+         Java_sun_awt_X11_XWindow_getWMInsets;
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/awt/SecurityWarning.java openjdk/jdk/src/share/classes/com/sun/awt/SecurityWarning.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/awt/SecurityWarning.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/awt/SecurityWarning.java	2011-02-17 15:50:10.720057177 +0000
+@@ -0,0 +1,169 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package com.sun.awt;
++
++import java.awt.*;
++import java.awt.geom.*;
++
++import sun.awt.AWTAccessor;
++
++
++/**
++ * Security Warning control interface.
++ *
++ * This class provides a couple of methods that help a developer relocate
++ * the AWT security warning to an appropriate position relative to the current
++ * window size. A "top-level window" is an instance of the {@code Window}
++ * class (or its descendant, such as {@code JFrame}). The security warning
++ * is applied to all windows created by an untrusted code. All such windows
++ * have a non-null "warning string" (see {@link Window#getWarningString()}).
++ * <p>
++ * <b>WARNING</b>: This class is an implementation detail and only meant
++ * for limited use outside of the core platform. This API may change
++ * drastically between update release, and it may even be
++ * removed or be moved to some other packages or classes.
++ */
++public final class SecurityWarning {
++
++    /**
++     * The SecurityWarning class should not be instantiated
++     */
++    private SecurityWarning() {
++    }
++
++    /**
++     * Gets the size of the security warning.
++     *
++     * The returned value is not valid until the peer has been created. Before
++     * invoking this method a developer must call the {@link Window#pack()},
++     * {@link Window#setVisible()}, or some other method that creates the peer.
++     *
++     * @param window the window to get the security warning size for
++     *
++     * @throws NullPointerException if the window argument is null
++     * @throws IllegalArgumentException if the window is trusted (i.e.
++     * the {@code getWarningString()} returns null)
++     */
++    public static Dimension getSize(Window window) {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++        if (window.getWarningString() == null) {
++            throw new IllegalArgumentException(
++                    "The window must have a non-null warning string.");
++        }
++        // We don't check for a non-null peer since it may be destroyed
++        // after assigning a valid value to the security warning size.
++
++        return AWTAccessor.getWindowAccessor().getSecurityWarningSize(window);
++    }
++
++    /**
++     * Sets the position of the security warning.
++     * <p>
++     * The {@code alignmentX} and {@code alignmentY} arguments specify the
++     * origin of the coordinate system used to calculate the position of the
++     * security warning. The values must be in the range [0.0f...1.0f].  The
++     * {@code 0.0f} value represents the left (top) edge of the rectangular
++     * bounds of the window. The {@code 1.0f} value represents the right
++     * (bottom) edge of the bounds. Whenever the size of the window changes,
++     * the origin of the coordinate system gets relocated accordingly. For
++     * convenience a developer may use the {@code Component.*_ALIGNMENT}
++     * constants to pass predefined values for these arguments.
++     * <p>
++     * The {@code point} argument specifies the location of the security
++     * warning in the coordinate system described above. If both {@code x} and
++     * {@code y} coordinates of the point are equal to zero, the warning will
++     * be located right in the origin of the coordinate system. On the other
++     * hand, if both {@code alignmentX} and {@code alignmentY} are equal to
++     * zero (i.e. the origin of the coordinate system is placed at the top-left
++     * corner of the window), then the {@code point} argument represents the
++     * absolute location of the security warning relative to the location of
++     * the window. The "absolute" in this case means that the position of the
++     * security warning is not effected by resizing of the window.
++     * <p>
++     * Note that the security warning managment code guarantees that:
++     * <ul>
++     * <li>The security warning cannot be located farther than two pixels from
++     * the rectangular bounds of the window (see {@link Window#getBounds}), and
++     * <li>The security warning is always visible on the screen.
++     * </ul>
++     * If either of the conditions is violated, the calculated position of the
++     * security warning is adjusted by the system to meet both these
++     * conditions.
++     * <p>
++     * The default position of the security warning is in the upper-right
++     * corner of the window, two pixels to the right from the right edge. This
++     * corresponds to the following arguments passed to this method:
++     * <ul>
++     * <li>{@code alignmentX = Component.RIGHT_ALIGNMENT}
++     * <li>{@code alignmentY = Component.TOP_ALIGNMENT}
++     * <li>{@code point = (2, 0)}
++     * </ul>
++     *
++     * @param window the window to set the position of the security warning for
++     * @param alignmentX the horizontal origin of the coordinate system
++     * @param alignmentY the vertical origin of the coordinate system
++     * @param point the position of the security warning in the specified
++     * coordinate system
++     *
++     * @throws NullPointerException if the window argument is null
++     * @throws NullPointerException if the point argument is null
++     * @throws IllegalArgumentException if the window is trusted (i.e.
++     * the {@code getWarningString()} returns null
++     * @throws IllegalArgumentException if the alignmentX or alignmentY
++     * arguments are not within the range [0.0f ... 1.0f]
++     */
++    public static void setPosition(Window window, Point2D point,
++            float alignmentX, float alignmentY)
++    {
++        if (window == null) {
++            throw new NullPointerException(
++                    "The window argument should not be null.");
++        }
++        if (window.getWarningString() == null) {
++            throw new IllegalArgumentException(
++                    "The window must have a non-null warning string.");
++        }
++        if (point == null) {
++            throw new NullPointerException(
++                    "The point argument must not be null");
++        }
++        if (alignmentX < 0.0f || alignmentX > 1.0f) {
++            throw new IllegalArgumentException(
++                    "alignmentX must be in the range [0.0f ... 1.0f].");
++        }
++        if (alignmentY < 0.0f || alignmentY > 1.0f) {
++            throw new IllegalArgumentException(
++                    "alignmentY must be in the range [0.0f ... 1.0f].");
++        }
++
++        AWTAccessor.getWindowAccessor().setSecurityWarningPosition(window,
++                point, alignmentX, alignmentY);
++    }
++}
++
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Component.java openjdk/jdk/src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	2011-02-17 15:50:10.724056863 +0000
+@@ -855,6 +855,10 @@
+                     }
+                 }
+             }
++
++            public boolean isVisible_NoClientCode(Component comp) {
++                return comp.isVisible_NoClientCode();
++            }
+         });
+     }
+ 
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/peer/WindowPeer.java openjdk/jdk/src/share/classes/java/awt/peer/WindowPeer.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/peer/WindowPeer.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/peer/WindowPeer.java	2011-02-17 15:50:10.724056863 +0000
+@@ -67,4 +67,9 @@
+      * @see Window#setBackground(Color)
+      */
+     void updateWindow(BufferedImage backBuffer);
++
++    /**
++     * Instructs the peer to update the position of the security warning.
++     */
++    void repositionSecurityWarning();
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Window.java openjdk/jdk/src/share/classes/java/awt/Window.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Window.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Window.java	2011-02-17 15:50:10.724056863 +0000
+@@ -26,6 +26,7 @@
+ 
+ import java.applet.Applet;
+ import java.awt.event.*;
++import java.awt.geom.Point2D;
+ import java.awt.im.InputContext;
+ import java.awt.image.BufferStrategy;
+ import java.awt.image.BufferedImage;
+@@ -326,6 +327,23 @@
+ 
+     transient boolean isTrayIconWindow = false;
+ 
++    /**
++     * These fields are initialized in the native peer code
++     * or via AWTAccessor's WindowAccessor.
++     */
++    private transient volatile int securityWarningWidth = 0;
++    private transient volatile int securityWarningHeight = 0;
++
++    /**
++     * These fields represent the desired location for the security
++     * warning if this window is untrusted.
++     * See com.sun.awt.SecurityWarning for more details.
++     */
++    private transient double securityWarningPointX = 2.0;
++    private transient double securityWarningPointY = 0.0;
++    private transient float securityWarningAlignmentX = RIGHT_ALIGNMENT;
++    private transient float securityWarningAlignmentY = TOP_ALIGNMENT;
++
+     static {
+         /* ensure that the necessary native libraries are loaded */
+         Toolkit.loadLibraries();
+@@ -2789,6 +2807,13 @@
+          shape = (Shape)f.get("shape", null);
+          opacity = (Float)f.get("opacity", 1.0f);
+ 
++         this.securityWarningWidth = 0;
++         this.securityWarningHeight = 0;
++         this.securityWarningPointX = 2.0;
++         this.securityWarningPointY = 0.0;
++         this.securityWarningAlignmentX = RIGHT_ALIGNMENT;
++         this.securityWarningAlignmentY = TOP_ALIGNMENT;
++
+          deserializeResources(s);
+     }
+ 
+@@ -3463,6 +3488,18 @@
+ 
+     // ****************** END OF MIXING CODE ********************************
+ 
++    // This method gets the window location/size as reported by the native
++    // system since the locally cached values may represent outdated data.
++    // NOTE: this method is invoked on the toolkit thread, and therefore
++    // is not supposed to become public/user-overridable.
++    private Point2D calculateSecurityWarningPosition(double x, double y,
++            double w, double h)
++    {
++        return new Point2D.Double(
++                x + w * securityWarningAlignmentX + securityWarningPointX,
++                y + h * securityWarningAlignmentY + securityWarningPointY);
++    }
++
+     static {
+         AWTAccessor.setWindowAccessor(new AWTAccessor.WindowAccessor() {
+             public float getOpacity(Window window) {
+@@ -3496,6 +3533,39 @@
+             public void updateWindow(Window window, BufferedImage backBuffer) {
+                 window.updateWindow(backBuffer);
+             }
++
++            public Dimension getSecurityWarningSize(Window window) {
++                return new Dimension(window.securityWarningWidth,
++                        window.securityWarningHeight);
++            }
++
++            public void setSecurityWarningSize(Window window, int width, int height)
++            {
++                window.securityWarningWidth = width;
++                window.securityWarningHeight = height;
++            }
++
++            public void setSecurityWarningPosition(Window window,
++                    Point2D point, float alignmentX, float alignmentY)
++            {
++                window.securityWarningPointX = point.getX();
++                window.securityWarningPointY = point.getY();
++                window.securityWarningAlignmentX = alignmentX;
++                window.securityWarningAlignmentY = alignmentY;
++
++                synchronized (window.getTreeLock()) {
++                    WindowPeer peer = (WindowPeer)window.getPeer();
++                    if (peer != null) {
++                        peer.repositionSecurityWarning();
++                    }
++                }
++            }
++
++            public Point2D calculateSecurityWarningPosition(Window window,
++                    double x, double y, double w, double h)
++            {
++                return window.calculateSecurityWarningPosition(x, y, w, h);
++            }
+         }); // WindowAccessor
+     } // static
+ 
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-17 15:50:40.725701922 +0000
+@@ -88,6 +88,12 @@
+          * Returns the acc this component was constructed with.
+          */
+         AccessControlContext getAccessControlContext(Component comp);
++
++        /**
++         * Returns whether the component is visible without invoking
++         * any client code.
++         */
++        boolean isVisible_NoClientCode(Component comp);
+     }
+ 
+     /*
+@@ -123,6 +129,26 @@
+          * Update the image of a non-opaque (translucent) window.
+          */
+         void updateWindow(Window window, BufferedImage backBuffer);
++
++        /** Get the size of the security warning.
++         */
++        Dimension getSecurityWarningSize(Window w);
++
++        /**
++         * Set the size of the security warning.
++         */
++        void setSecurityWarningSize(Window w, int width, int height);
++
++        /** Set the position of the security warning.
++         */
++        void setSecurityWarningPosition(Window w, Point2D point,
++                float alignmentX, float alignmentY);
++
++        /** Request to recalculate the new position of the security warning for
++         * the given window size/location as reported by the native system.
++         */
++        Point2D calculateSecurityWarningPosition(Window window,
++                double x, double y, double w, double h);
+     }
+ 
+     /*
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/EmbeddedFrame.java openjdk/jdk/src/share/classes/sun/awt/EmbeddedFrame.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/EmbeddedFrame.java	2011-02-17 15:50:10.724056863 +0000
+@@ -586,5 +586,7 @@
+         }
+         public void updateWindow(BufferedImage backBuffer) {
+         }
++        public void repositionSecurityWarning() {
++        }
+      }
+ } // class EmbeddedFrame
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java openjdk/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java	2011-02-17 15:50:10.724056863 +0000
+@@ -0,0 +1,495 @@
++/*
++ * Copyright (c) 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.awt.X11;
++
++import java.awt.*;
++import java.awt.event.*;
++import java.awt.peer.TrayIconPeer;
++import sun.awt.*;
++import java.awt.image.*;
++import java.text.BreakIterator;
++import java.util.logging.Logger;
++import java.util.logging.Level;
++import java.util.concurrent.ArrayBlockingQueue;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
++import java.lang.reflect.InvocationTargetException;
++
++/**
++ * An utility window class. This is a base class for Tooltip and Balloon.
++ */
++public abstract class InfoWindow extends Window {
++    private Container container;
++    private Closer closer;
++
++    protected InfoWindow(Frame parent, Color borderColor) {
++        super(parent);
++        container = new Container() {
++            @Override
++            public Insets getInsets() {
++                return new Insets(1, 1, 1, 1);
++            }
++        };
++        setLayout(new BorderLayout());
++        setBackground(borderColor);
++        add(container, BorderLayout.CENTER);
++        container.setLayout(new BorderLayout());
++
++        closer = new Closer();
++    }
++
++    public Component add(Component c) {
++        container.add(c, BorderLayout.CENTER);
++        return c;
++    }
++
++    protected void setCloser(Runnable action, int time) {
++        closer.set(action, time);
++    }
++
++    // Must be executed on EDT.
++    protected void show(Point corner, int indent) {
++        assert SunToolkit.isDispatchThreadForAppContext(this);
++
++        pack();
++
++        Dimension size = getSize();
++        // TODO: When 6356322 is fixed we should get screen bounds in
++        // this way: eframe.getGraphicsConfiguration().getBounds().
++        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
++
++        if (corner.x < scrSize.width/2 && corner.y < scrSize.height/2) { // 1st square
++            setLocation(corner.x + indent, corner.y + indent);
++
++        } else if (corner.x >= scrSize.width/2 && corner.y < scrSize.height/2) { // 2nd square
++            setLocation(corner.x - indent - size.width, corner.y + indent);
++
++        } else if (corner.x < scrSize.width/2 && corner.y >= scrSize.height/2) { // 3rd square
++            setLocation(corner.x + indent, corner.y - indent - size.height);
++
++        } else if (corner.x >= scrSize.width/2 && corner.y >= scrSize.height/2) { // 4th square
++            setLocation(corner.x - indent - size.width, corner.y - indent - size.height);
++        }
++
++        super.show();
++        closer.schedule();
++    }
++
++    public void hide() {
++        closer.close();
++    }
++
++    private class Closer implements Runnable {
++        Runnable action;
++        int time;
++
++        public void run() {
++            doClose();
++        }
++
++        void set(Runnable action, int time) {
++            this.action = action;
++            this.time = time;
++        }
++
++        void schedule() {
++            XToolkit.schedule(this, time);
++        }
++
++        void close() {
++            XToolkit.remove(this);
++            doClose();
++        }
++
++        // WARNING: this method may be executed on Toolkit thread.
++        private void doClose() {
++            SunToolkit.executeOnEventHandlerThread(InfoWindow.this, new Runnable() {
++                public void run() {
++                    InfoWindow.super.hide();
++                    invalidate();
++                    if (action != null) {
++                        action.run();
++                    }
++                }
++            });
++        }
++    }
++
++
++    private interface LiveArguments {
++        /** Whether the target of the InfoWindow is disposed. */
++        boolean isDisposed();
++
++        /** The bounds of the target of the InfoWindow. */
++        Rectangle getBounds();
++    }
++
++    public static class Tooltip extends InfoWindow {
++
++        public interface LiveArguments extends InfoWindow.LiveArguments {
++            /** The tooltip to be displayed. */
++            String getTooltipString();
++        }
++
++        private final Object target;
++        private final LiveArguments liveArguments;
++
++        private final Label textLabel = new Label("");
++        private final Runnable starter = new Runnable() {
++                public void run() {
++                    display();
++                }};
++
++        private final static int TOOLTIP_SHOW_TIME = 10000;
++        private final static int TOOLTIP_START_DELAY_TIME = 1000;
++        private final static int TOOLTIP_MAX_LENGTH = 64;
++        private final static int TOOLTIP_MOUSE_CURSOR_INDENT = 5;
++        private final static Color TOOLTIP_BACKGROUND_COLOR = new Color(255, 255, 220);
++        private final static Font TOOLTIP_TEXT_FONT = XWindow.defaultFont;
++
++        public Tooltip(Frame parent, Object target,
++                LiveArguments liveArguments)
++        {
++            super(parent, Color.black);
++
++            this.target = target;
++            this.liveArguments = liveArguments;
++
++            XTrayIconPeer.suppressWarningString(this);
++
++            setCloser(null, TOOLTIP_SHOW_TIME);
++            textLabel.setBackground(TOOLTIP_BACKGROUND_COLOR);
++            textLabel.setFont(TOOLTIP_TEXT_FONT);
++            add(textLabel);
++        }
++
++        /*
++         * WARNING: this method is executed on Toolkit thread!
++         */
++        private void display() {
++            String tooltipString = liveArguments.getTooltipString();
++            if (tooltipString == null) {
++                return;
++            } else if (tooltipString.length() >  TOOLTIP_MAX_LENGTH) {
++                textLabel.setText(tooltipString.substring(0, TOOLTIP_MAX_LENGTH));
++            } else {
++                textLabel.setText(tooltipString);
++            }
++
++            // Execute on EDT to avoid deadlock (see 6280857).
++            SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
++                    public void run() {
++                        if (liveArguments.isDisposed()) {
++                            return;
++                        }
++                        Point pointer = (Point)AccessController.doPrivileged(new PrivilegedAction() {
++                                public Object run() {
++                                    if (!isPointerOverTrayIcon(liveArguments.getBounds())) {
++                                        return null;
++                                    }
++                                    return MouseInfo.getPointerInfo().getLocation();
++                                }
++                            });
++                        if (pointer == null) {
++                            return;
++                        }
++                        show(new Point(pointer.x, pointer.y), TOOLTIP_MOUSE_CURSOR_INDENT);
++                    }
++                });
++        }
++
++        public void enter() {
++            XToolkit.schedule(starter, TOOLTIP_START_DELAY_TIME);
++        }
++
++        public void exit() {
++            XToolkit.remove(starter);
++            if (isVisible()) {
++                hide();
++            }
++        }
++
++        private boolean isPointerOverTrayIcon(Rectangle trayRect) {
++            Point p = MouseInfo.getPointerInfo().getLocation();
++            return !(p.x < trayRect.x || p.x > (trayRect.x + trayRect.width) ||
++                     p.y < trayRect.y || p.y > (trayRect.y + trayRect.height));
++        }
++    }
++
++    public static class Balloon extends InfoWindow {
++
++        public interface LiveArguments extends InfoWindow.LiveArguments {
++            /** The action to be performed upon clicking the baloon. */
++            String getActionCommand();
++        }
++
++        private final LiveArguments liveArguments;
++        private final Object target;
++
++        private final static int BALLOON_SHOW_TIME = 10000;
++        private final static int BALLOON_TEXT_MAX_LENGTH = 256;
++        private final static int BALLOON_WORD_LINE_MAX_LENGTH = 16;
++        private final static int BALLOON_WORD_LINE_MAX_COUNT = 4;
++        private final static int BALLOON_ICON_WIDTH = 32;
++        private final static int BALLOON_ICON_HEIGHT = 32;
++        private final static int BALLOON_TRAY_ICON_INDENT = 0;
++        private final static Color BALLOON_CAPTION_BACKGROUND_COLOR = new Color(200, 200 ,255);
++        private final static Font BALLOON_CAPTION_FONT = new Font(Font.DIALOG, Font.BOLD, 12);
++
++        private Panel mainPanel = new Panel();
++        private Panel captionPanel = new Panel();
++        private Label captionLabel = new Label("");
++        private Button closeButton = new Button("X");
++        private Panel textPanel = new Panel();
++        private XTrayIconPeer.IconCanvas iconCanvas = new XTrayIconPeer.IconCanvas(BALLOON_ICON_WIDTH, BALLOON_ICON_HEIGHT);
++        private Label[] lineLabels = new Label[BALLOON_WORD_LINE_MAX_COUNT];
++        private ActionPerformer ap = new ActionPerformer();
++
++        private Image iconImage;
++        private Image errorImage;
++        private Image warnImage;
++        private Image infoImage;
++        private boolean gtkImagesLoaded;
++
++        private Displayer displayer = new Displayer();
++
++        public Balloon(Frame parent, Object target, LiveArguments liveArguments) {
++            super(parent, new Color(90, 80 ,190));
++            this.liveArguments = liveArguments;
++            this.target = target;
++
++            XTrayIconPeer.suppressWarningString(this);
++
++            setCloser(new Runnable() {
++                    public void run() {
++                        if (textPanel != null) {
++                            textPanel.removeAll();
++                            textPanel.setSize(0, 0);
++                            iconCanvas.setSize(0, 0);
++                            XToolkit.awtLock();
++                            try {
++                                displayer.isDisplayed = false;
++                                XToolkit.awtLockNotifyAll();
++                            } finally {
++                                XToolkit.awtUnlock();
++                            }
++                        }
++                    }
++                }, BALLOON_SHOW_TIME);
++
++            add(mainPanel);
++
++            captionLabel.setFont(BALLOON_CAPTION_FONT);
++            captionLabel.addMouseListener(ap);
++
++            captionPanel.setLayout(new BorderLayout());
++            captionPanel.add(captionLabel, BorderLayout.WEST);
++            captionPanel.add(closeButton, BorderLayout.EAST);
++            captionPanel.setBackground(BALLOON_CAPTION_BACKGROUND_COLOR);
++            captionPanel.addMouseListener(ap);
++
++            closeButton.addActionListener(new ActionListener() {
++                    public void actionPerformed(ActionEvent e) {
++                        hide();
++                    }
++                });
++
++            mainPanel.setLayout(new BorderLayout());
++            mainPanel.setBackground(Color.white);
++            mainPanel.add(captionPanel, BorderLayout.NORTH);
++            mainPanel.add(iconCanvas, BorderLayout.WEST);
++            mainPanel.add(textPanel, BorderLayout.CENTER);
++
++            iconCanvas.addMouseListener(ap);
++
++            for (int i = 0; i < BALLOON_WORD_LINE_MAX_COUNT; i++) {
++                lineLabels[i] = new Label();
++                lineLabels[i].addMouseListener(ap);
++                lineLabels[i].setBackground(Color.white);
++            }
++
++            displayer.start();
++        }
++
++        public void display(String caption, String text, String messageType) {
++            if (!gtkImagesLoaded) {
++                loadGtkImages();
++            }
++            displayer.display(caption, text, messageType);
++        }
++
++        private void _display(String caption, String text, String messageType) {
++            captionLabel.setText(caption);
++
++            BreakIterator iter = BreakIterator.getWordInstance();
++            if (text != null) {
++                iter.setText(text);
++                int start = iter.first(), end;
++                int nLines = 0;
++
++                do {
++                    end = iter.next();
++
++                    if (end == BreakIterator.DONE ||
++                        text.substring(start, end).length() >= 50)
++                    {
++                        lineLabels[nLines].setText(text.substring(start, end == BreakIterator.DONE ?
++                                                                  iter.last() : end));
++                        textPanel.add(lineLabels[nLines++]);
++                        start = end;
++                    }
++                    if (nLines == BALLOON_WORD_LINE_MAX_COUNT) {
++                        if (end != BreakIterator.DONE) {
++                            lineLabels[nLines - 1].setText(
++                                new String(lineLabels[nLines - 1].getText() + " ..."));
++                        }
++                        break;
++                    }
++                } while (end != BreakIterator.DONE);
++
++
++                textPanel.setLayout(new GridLayout(nLines, 1));
++            }
++
++            if ("ERROR".equals(messageType)) {
++                iconImage = errorImage;
++            } else if ("WARNING".equals(messageType)) {
++                iconImage = warnImage;
++            } else if ("INFO".equals(messageType)) {
++                iconImage = infoImage;
++            } else {
++                iconImage = null;
++            }
++
++            if (iconImage != null) {
++                Dimension tpSize = textPanel.getSize();
++                iconCanvas.setSize(BALLOON_ICON_WIDTH, (BALLOON_ICON_HEIGHT > tpSize.height ?
++                                                        BALLOON_ICON_HEIGHT : tpSize.height));
++                iconCanvas.validate();
++            }
++
++            SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
++                    public void run() {
++                        if (liveArguments.isDisposed()) {
++                            return;
++                        }
++                        Point parLoc = getParent().getLocationOnScreen();
++                        Dimension parSize = getParent().getSize();
++                        show(new Point(parLoc.x + parSize.width/2, parLoc.y + parSize.height/2),
++                             BALLOON_TRAY_ICON_INDENT);
++                        if (iconImage != null) {
++                            iconCanvas.updateImage(iconImage); // call it after the show(..) above
++                        }
++                    }
++                });
++        }
++
++        public void dispose() {
++            displayer.interrupt();
++            super.dispose();
++        }
++
++        private void loadGtkImages() {
++            if (!gtkImagesLoaded) {
++                errorImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
++                    "gtk.icon.gtk-dialog-error.6.rtl");
++                warnImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
++                    "gtk.icon.gtk-dialog-warning.6.rtl");
++                infoImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
++                    "gtk.icon.gtk-dialog-info.6.rtl");
++                gtkImagesLoaded = true;
++            }
++        }
++
++        private class ActionPerformer extends MouseAdapter {
++            public void mouseClicked(MouseEvent e) {
++                // hide the balloon by any click
++                hide();
++                if (e.getButton() == MouseEvent.BUTTON1) {
++                    ActionEvent aev = new ActionEvent(target, ActionEvent.ACTION_PERFORMED,
++                                                      liveArguments.getActionCommand(),
++                                                      e.getWhen(), e.getModifiers());
++                    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(aev);
++                }
++            }
++        }
++
++        private class Displayer extends Thread {
++            final int MAX_CONCURRENT_MSGS = 10;
++
++            ArrayBlockingQueue<Message> messageQueue = new ArrayBlockingQueue<Message>(MAX_CONCURRENT_MSGS);
++            boolean isDisplayed;
++
++            Displayer() {
++                setDaemon(true);
++            }
++
++            public void run() {
++                while (true) {
++                    Message msg = null;
++                    try {
++                        msg = (Message)messageQueue.take();
++                    } catch (InterruptedException e) {
++                        return;
++                    }
++
++                    /*
++                     * Wait till the previous message is displayed if any
++                     */
++                    XToolkit.awtLock();
++                    try {
++                        while (isDisplayed) {
++                            try {
++                                XToolkit.awtLockWait();
++                            } catch (InterruptedException e) {
++                                return;
++                            }
++                        }
++                        isDisplayed = true;
++                    } finally {
++                        XToolkit.awtUnlock();
++                    }
++                    _display(msg.caption, msg.text, msg.messageType);
++                }
++            }
++
++            void display(String caption, String text, String messageType) {
++                messageQueue.offer(new Message(caption, text, messageType));
++            }
++        }
++
++        private static class Message {
++            String caption, text, messageType;
++
++            Message(String caption, String text, String messageType) {
++                this.caption = caption;
++                this.text = text;
++                this.messageType = messageType;
++            }
++        }
++    }
++}
++
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	2011-02-17 15:50:10.724056863 +0000
+@@ -451,7 +451,7 @@
+ 
+     public Insets getInsets() {
+         Insets in = copy(getRealInsets());
+-        in.top += getMenuBarHeight() + getWarningWindowHeight();
++        in.top += getMenuBarHeight();
+         if (insLog.isLoggable(Level.FINEST)) {
+             insLog.log(Level.FINEST, "Get insets returns {0}",
+                        new Object[] {String.valueOf(in)});
+@@ -812,6 +812,8 @@
+         }
+         reconfigureContentWindow(newDimensions);
+         updateChildrenSizes();
++
++        repositionSecurityWarning();
+     }
+ 
+     private void checkShellRectSize(Rectangle shellRect) {
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	2011-02-17 15:43:30.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	2011-02-17 15:50:10.724056863 +0000
+@@ -62,8 +62,25 @@
+ 
+     static void setCurrentNativeFocusedWindow(Window win) {
+         if (focusLog.isLoggable(Level.FINER)) focusLog.finer("Setting current native focused window " + win);
++        XWindowPeer from = null, to = null;
++
+         synchronized(lock) {
++            if (currentFocusedWindow != null) {
++                from = (XWindowPeer)currentFocusedWindow.getPeer();
++            }
++
+             currentFocusedWindow = win;
++
++            if (currentFocusedWindow != null) {
++                to = (XWindowPeer)currentFocusedWindow.getPeer();
++            }
++        }
++
++        if (from != null) {
++            from.updateSecurityWarningVisibility();
++        }
++        if (to != null) {
++            to.updateSecurityWarningVisibility();
+         }
+     }
+ 
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java	2011-02-17 15:50:10.728056549 +0000
+@@ -157,6 +157,8 @@
+ 
+     static native void XLowerWindow(long display, long window);
+     static native void XRestackWindows(long display, long windows, int length);
++    static native void XConfigureWindow(long display, long window,
++            long value_mask, long values);
+     static native void XSetInputFocus(long display, long window);
+     static native void XSetInputFocus2(long display, long window, long time);
+     static native long XGetInputFocus(long display);
+@@ -533,6 +535,11 @@
+     static native void SetRectangularShape(long display, long window,
+             int lox, int loy, int hix, int hiy,
+             sun.java2d.pipe.Region region);
++    /** Each int in the bitmap array is one pixel with a 32-bit color:
++     *  R, G, B, and Alpha.
++     */
++    static native void SetBitmapShape(long display, long window,
++             int width, int height, int[] bitmap);
+ 
+ /* Global memory area used for X lib parameter passing */
+ 
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java	2011-02-17 15:50:10.724056863 +0000
+@@ -178,6 +178,34 @@
+         return ((layer == LAYER_ALWAYS_ON_TOP) || (layer == LAYER_NORMAL)) && doLayerProtocol();
+     }
+ 
++    public void requestState(XWindow window, XAtom state, boolean isAdd) {
++        XClientMessageEvent req = new XClientMessageEvent();
++        try {
++            req.set_type((int)XConstants.ClientMessage);
++            req.set_window(window.getWindow());
++            req.set_message_type(XA_NET_WM_STATE.getAtom());
++            req.set_format(32);
++            req.set_data(0, isAdd ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE);
++            req.set_data(1, state.getAtom());
++            // Fix for 6735584: req.data[2] must be set to 0 when only one property is changed
++            req.set_data(2, 0);
++            log.log(Level.FINE, "Setting _NET_STATE atom {0} on {1} for {2}", new Object[] {state, window, Boolean.valueOf(isAdd)});
++            XToolkit.awtLock();
++            try {
++                XlibWrapper.XSendEvent(XToolkit.getDisplay(),
++                        XlibWrapper.RootWindow(XToolkit.getDisplay(), window.getScreenNumber()),
++                        false,
++                        XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
++                        req.pData);
++            }
++            finally {
++                XToolkit.awtUnlock();
++            }
++        } finally {
++            req.dispose();
++        }
++    }
++
+     /**
+      * Helper function to set/reset one state in NET_WM_STATE
+      * If window is showing then it uses ClientMessage, otherwise adjusts NET_WM_STATE list
+@@ -190,32 +218,7 @@
+                 new Object[] {Boolean.valueOf(window.isWithdrawn()), Boolean.valueOf(window.isVisible()),
+                               Boolean.valueOf(window.isMapped()), Boolean.valueOf(window.isShowing())});
+         if (window.isShowing()) {
+-            XClientMessageEvent req = new XClientMessageEvent();
+-            try {
+-                req.set_type((int)XlibWrapper.ClientMessage);
+-                req.set_window(window.getWindow());
+-                req.set_message_type(XA_NET_WM_STATE.getAtom());
+-                req.set_format(32);
+-                req.set_data(0, (!set) ? _NET_WM_STATE_REMOVE : _NET_WM_STATE_ADD);
+-                req.set_data(1, state.getAtom());
+-                if (log.isLoggable(Level.FINE)) {
+-                    log.log(Level.FINE, "Setting _NET_STATE atom {0} on {1} for {2}",
+-                            new Object[] {String.valueOf(state), String.valueOf(window), Boolean.valueOf(set)});
+-                }
+-                XToolkit.awtLock();
+-                try {
+-                    XlibWrapper.XSendEvent(XToolkit.getDisplay(),
+-                                           XlibWrapper.RootWindow(XToolkit.getDisplay(), window.getScreenNumber()),
+-                                           false,
+-                                           XlibWrapper.SubstructureRedirectMask | XlibWrapper.SubstructureNotifyMask,
+-                                           req.pData);
+-                }
+-                finally {
+-                    XToolkit.awtUnlock();
+-                }
+-            } finally {
+-                req.dispose();
+-            }
++            requestState(window, state, set);
+         } else {
+             XAtomList net_wm_state = window.getNETWMState();
+             if (log.isLoggable(Level.FINE)) {
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java	2011-02-17 15:50:10.724056863 +0000
+@@ -41,15 +41,18 @@
+ import java.security.PrivilegedAction;
+ import java.lang.reflect.InvocationTargetException;
+ 
+-public class XTrayIconPeer implements TrayIconPeer {
++public class XTrayIconPeer implements TrayIconPeer,
++       InfoWindow.Balloon.LiveArguments,
++       InfoWindow.Tooltip.LiveArguments
++{
+     private static final Logger ctrLog = Logger.getLogger("sun.awt.X11.XTrayIconPeer.centering");
+ 
+     TrayIcon target;
+     TrayIconEventProxy eventProxy;
+     XTrayIconEmbeddedFrame eframe;
+     TrayIconCanvas canvas;
+-    Balloon balloon;
+-    Tooltip tooltip;
++    InfoWindow.Balloon balloon;
++    InfoWindow.Tooltip tooltip;
+     PopupMenu popup;
+     String tooltipString;
+     boolean isTrayIconDisplayed;
+@@ -263,8 +266,8 @@
+         eframe.setVisible(true);
+         updateImage();
+ 
+-        balloon = new Balloon(this, eframe);
+-        tooltip = new Tooltip(this, eframe);
++        balloon = new InfoWindow.Balloon(eframe, target, this);
++        tooltip = new InfoWindow.Tooltip(eframe, target, this);
+ 
+         addListeners();
+     }
+@@ -308,6 +311,10 @@
+         tooltipString = tooltip;
+     }
+ 
++    public String getTooltipString() {
++        return tooltipString;
++    }
++
+     public void updateImage() {
+         Runnable r = new Runnable() {
+                 public void run() {
+@@ -393,7 +400,7 @@
+         return eframe.getLocationOnScreen();
+     }
+ 
+-    private Rectangle getBounds() {
++    public Rectangle getBounds() {
+         Point loc = getLocationOnScreen();
+         return new Rectangle(loc.x, loc.y, loc.x + TRAY_ICON_WIDTH, loc.y + TRAY_ICON_HEIGHT);
+     }
+@@ -407,10 +414,14 @@
+         return ((XEmbeddedFramePeer)eframe.getPeer()).getWindow();
+     }
+ 
+-    boolean isDisposed() {
++    public boolean isDisposed() {
+         return isDisposed;
+     }
+ 
++    public String getActionCommand() {
++        return target.getActionCommand();
++    }
++
+     static class TrayIconEventProxy implements MouseListener, MouseMotionListener {
+         XTrayIconPeer xtiPeer;
+ 
+@@ -482,8 +493,8 @@
+     }
+ 
+     static boolean isTrayIconStuffWindow(Window w) {
+-        return (w instanceof Tooltip) ||
+-               (w instanceof Balloon) ||
++        return (w instanceof InfoWindow.Tooltip) ||
++               (w instanceof InfoWindow.Balloon) ||
+                (w instanceof XTrayIconEmbeddedFrame);
+     }
+ 
+@@ -538,7 +549,7 @@
+         }
+     }
+ 
+-    static class IconCanvas extends Canvas {
++    public static class IconCanvas extends Canvas {
+         volatile Image image;
+         IconObserver observer;
+         int width, height;
+@@ -617,427 +628,4 @@
+         }
+     }
+ 
+-    // ***************************************
+-    // Classes for toolitp and balloon windows
+-    // ***************************************
+-
+-    static class Tooltip extends InfoWindow {
+-        XTrayIconPeer xtiPeer;
+-        Label textLabel = new Label("");
+-        Runnable starter = new Runnable() {
+-                public void run() {
+-                    display();
+-                }};
+-
+-        final static int TOOLTIP_SHOW_TIME = 10000;
+-        final static int TOOLTIP_START_DELAY_TIME = 1000;
+-        final static int TOOLTIP_MAX_LENGTH = 64;
+-        final static int TOOLTIP_MOUSE_CURSOR_INDENT = 5;
+-        final static Color TOOLTIP_BACKGROUND_COLOR = new Color(255, 255, 220);
+-        final static Font TOOLTIP_TEXT_FONT = XWindow.defaultFont;
+-
+-        Tooltip(XTrayIconPeer xtiPeer, Frame parent) {
+-            super(parent, Color.black);
+-            this.xtiPeer = xtiPeer;
+-
+-            suppressWarningString(this);
+-
+-            setCloser(null, TOOLTIP_SHOW_TIME);
+-            textLabel.setBackground(TOOLTIP_BACKGROUND_COLOR);
+-            textLabel.setFont(TOOLTIP_TEXT_FONT);
+-            add(textLabel);
+-        }
+-
+-        /*
+-         * WARNING: this method is executed on Toolkit thread!
+-         */
+-        void display() {
+-            String tip = xtiPeer.tooltipString;
+-            if (tip == null) {
+-                return;
+-            } else if (tip.length() >  TOOLTIP_MAX_LENGTH) {
+-                textLabel.setText(tip.substring(0, TOOLTIP_MAX_LENGTH));
+-            } else {
+-                textLabel.setText(tip);
+-            }
+-
+-            // Execute on EDT to avoid deadlock (see 6280857).
+-            SunToolkit.executeOnEventHandlerThread(xtiPeer.target, new Runnable() {
+-                    public void run() {
+-                        if (xtiPeer.isDisposed()) {
+-                            return;
+-                        }
+-                        Point pointer = (Point)AccessController.doPrivileged(new PrivilegedAction() {
+-                                public Object run() {
+-                                    if (!isPointerOverTrayIcon(xtiPeer.getBounds())) {
+-                                        return null;
+-                                    }
+-                                    return MouseInfo.getPointerInfo().getLocation();
+-                                }
+-                            });
+-                        if (pointer == null) {
+-                            return;
+-                        }
+-                        show(new Point(pointer.x, pointer.y), TOOLTIP_MOUSE_CURSOR_INDENT);
+-                    }
+-                });
+-        }
+-
+-        void enter() {
+-            XToolkit.schedule(starter, TOOLTIP_START_DELAY_TIME);
+-        }
+-
+-        void exit() {
+-            XToolkit.remove(starter);
+-            if (isVisible()) {
+-                hide();
+-            }
+-        }
+-
+-        boolean isPointerOverTrayIcon(Rectangle trayRect) {
+-            Point p = MouseInfo.getPointerInfo().getLocation();
+-            return !(p.x < trayRect.x || p.x > (trayRect.x + trayRect.width) ||
+-                     p.y < trayRect.y || p.y > (trayRect.y + trayRect.height));
+-        }
+-    }
+-
+-    static class Balloon extends InfoWindow {
+-        final static int BALLOON_SHOW_TIME = 10000;
+-        final static int BALLOON_TEXT_MAX_LENGTH = 256;
+-        final static int BALLOON_WORD_LINE_MAX_LENGTH = 16;
+-        final static int BALLOON_WORD_LINE_MAX_COUNT = 4;
+-        final static int BALLOON_ICON_WIDTH = 32;
+-        final static int BALLOON_ICON_HEIGHT = 32;
+-        final static int BALLOON_TRAY_ICON_INDENT = 0;
+-        final static Color BALLOON_CAPTION_BACKGROUND_COLOR = new Color(200, 200 ,255);
+-        final static Font BALLOON_CAPTION_FONT = new Font(Font.DIALOG, Font.BOLD, 12);
+-
+-        XTrayIconPeer xtiPeer;
+-        Panel mainPanel = new Panel();
+-        Panel captionPanel = new Panel();
+-        Label captionLabel = new Label("");
+-        Button closeButton = new Button("X");
+-        Panel textPanel = new Panel();
+-        IconCanvas iconCanvas = new IconCanvas(BALLOON_ICON_WIDTH, BALLOON_ICON_HEIGHT);
+-        Label[] lineLabels = new Label[BALLOON_WORD_LINE_MAX_COUNT];
+-        ActionPerformer ap = new ActionPerformer();
+-
+-        Image iconImage;
+-        Image errorImage;
+-        Image warnImage;
+-        Image infoImage;
+-        boolean gtkImagesLoaded;
+-
+-        Displayer displayer = new Displayer();
+-
+-        Balloon(final XTrayIconPeer xtiPeer, Frame parent) {
+-            super(parent, new Color(90, 80 ,190));
+-            this.xtiPeer = xtiPeer;
+-
+-            suppressWarningString(this);
+-
+-            setCloser(new Runnable() {
+-                    public void run() {
+-                        if (textPanel != null) {
+-                            textPanel.removeAll();
+-                            textPanel.setSize(0, 0);
+-                            iconCanvas.setSize(0, 0);
+-                            XToolkit.awtLock();
+-                            try {
+-                                displayer.isDisplayed = false;
+-                                XToolkit.awtLockNotifyAll();
+-                            } finally {
+-                                XToolkit.awtUnlock();
+-                            }
+-                        }
+-                    }
+-                }, BALLOON_SHOW_TIME);
+-
+-            add(mainPanel);
+-
+-            captionLabel.setFont(BALLOON_CAPTION_FONT);
+-            captionLabel.addMouseListener(ap);
+-
+-            captionPanel.setLayout(new BorderLayout());
+-            captionPanel.add(captionLabel, BorderLayout.WEST);
+-            captionPanel.add(closeButton, BorderLayout.EAST);
+-            captionPanel.setBackground(BALLOON_CAPTION_BACKGROUND_COLOR);
+-            captionPanel.addMouseListener(ap);
+-
+-            closeButton.addActionListener(new ActionListener() {
+-                    public void actionPerformed(ActionEvent e) {
+-                        hide();
+-                    }
+-                });
+-
+-            mainPanel.setLayout(new BorderLayout());
+-            mainPanel.setBackground(Color.white);
+-            mainPanel.add(captionPanel, BorderLayout.NORTH);
+-            mainPanel.add(iconCanvas, BorderLayout.WEST);
+-            mainPanel.add(textPanel, BorderLayout.CENTER);
+-
+-            iconCanvas.addMouseListener(ap);
+-
+-            for (int i = 0; i < BALLOON_WORD_LINE_MAX_COUNT; i++) {
+-                lineLabels[i] = new Label();
+-                lineLabels[i].addMouseListener(ap);
+-                lineLabels[i].setBackground(Color.white);
+-            }
+-
+-            displayer.start();
+-        }
+-
+-        void display(String caption, String text, String messageType) {
+-            if (!gtkImagesLoaded) {
+-                loadGtkImages();
+-            }
+-            displayer.display(caption, text, messageType);
+-        }
+-
+-        private void _display(String caption, String text, String messageType) {
+-            captionLabel.setText(caption);
+-
+-            BreakIterator iter = BreakIterator.getWordInstance();
+-            if (text != null) {
+-                iter.setText(text);
+-                int start = iter.first(), end;
+-                int nLines = 0;
+-
+-                do {
+-                    end = iter.next();
+-
+-                    if (end == BreakIterator.DONE ||
+-                        text.substring(start, end).length() >= 50)
+-                    {
+-                        lineLabels[nLines].setText(text.substring(start, end == BreakIterator.DONE ?
+-                                                                  iter.last() : end));
+-                        textPanel.add(lineLabels[nLines++]);
+-                        start = end;
+-                    }
+-                    if (nLines == BALLOON_WORD_LINE_MAX_COUNT) {
+-                        if (end != BreakIterator.DONE) {
+-                            lineLabels[nLines - 1].setText(
+-                                new String(lineLabels[nLines - 1].getText() + " ..."));
+-                        }
+-                        break;
+-                    }
+-                } while (end != BreakIterator.DONE);
+-
+-
+-                textPanel.setLayout(new GridLayout(nLines, 1));
+-            }
+-
+-            if ("ERROR".equals(messageType)) {
+-                iconImage = errorImage;
+-            } else if ("WARNING".equals(messageType)) {
+-                iconImage = warnImage;
+-            } else if ("INFO".equals(messageType)) {
+-                iconImage = infoImage;
+-            } else {
+-                iconImage = null;
+-            }
+-
+-            if (iconImage != null) {
+-                Dimension tpSize = textPanel.getSize();
+-                iconCanvas.setSize(BALLOON_ICON_WIDTH, (BALLOON_ICON_HEIGHT > tpSize.height ?
+-                                                        BALLOON_ICON_HEIGHT : tpSize.height));
+-            }
+-
+-            SunToolkit.executeOnEventHandlerThread(xtiPeer.target, new Runnable() {
+-                    public void run() {
+-                        if (xtiPeer.isDisposed()) {
+-                            return;
+-                        }
+-                        Point parLoc = getParent().getLocationOnScreen();
+-                        Dimension parSize = getParent().getSize();
+-                        show(new Point(parLoc.x + parSize.width/2, parLoc.y + parSize.height/2),
+-                             BALLOON_TRAY_ICON_INDENT);
+-                        if (iconImage != null) {
+-                            iconCanvas.updateImage(iconImage); // call it after the show(..) above
+-                        }
+-                    }
+-                });
+-        }
+-
+-        public void dispose() {
+-            displayer.interrupt();
+-            super.dispose();
+-        }
+-
+-        void loadGtkImages() {
+-            if (!gtkImagesLoaded) {
+-                errorImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
+-                    "gtk.icon.gtk-dialog-error.6.rtl");
+-                warnImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
+-                    "gtk.icon.gtk-dialog-warning.6.rtl");
+-                infoImage = (Image)Toolkit.getDefaultToolkit().getDesktopProperty(
+-                    "gtk.icon.gtk-dialog-info.6.rtl");
+-                gtkImagesLoaded = true;
+-            }
+-        }
+-
+-        class ActionPerformer extends MouseAdapter {
+-            public void mouseClicked(MouseEvent e) {
+-                // hide the balloon by any click
+-                hide();
+-                if (e.getButton() == MouseEvent.BUTTON1) {
+-                    ActionEvent aev = new ActionEvent(xtiPeer.target, ActionEvent.ACTION_PERFORMED,
+-                                                      xtiPeer.target.getActionCommand(),
+-                                                      e.getWhen(), e.getModifiers());
+-                    Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(aev);
+-                }
+-            }
+-        }
+-
+-        class Displayer extends Thread {
+-            final int MAX_CONCURRENT_MSGS = 10;
+-
+-            ArrayBlockingQueue<Message> messageQueue = new ArrayBlockingQueue<Message>(MAX_CONCURRENT_MSGS);
+-            boolean isDisplayed;
+-
+-            Displayer() {
+-                setDaemon(true);
+-            }
+-
+-            public void run() {
+-                while (true) {
+-                    Message msg = null;
+-                    try {
+-                        msg = (Message)messageQueue.take();
+-                    } catch (InterruptedException e) {
+-                        return;
+-                    }
+-
+-                    /*
+-                     * Wait till the previous message is displayed if any
+-                     */
+-                    XToolkit.awtLock();
+-                    try {
+-                        while (isDisplayed) {
+-                            try {
+-                                XToolkit.awtLockWait();
+-                            } catch (InterruptedException e) {
+-                                return;
+-                            }
+-                        }
+-                        isDisplayed = true;
+-                    } finally {
+-                        XToolkit.awtUnlock();
+-                    }
+-                    _display(msg.caption, msg.text, msg.messageType);
+-                }
+-            }
+-
+-            void display(String caption, String text, String messageType) {
+-                messageQueue.offer(new Message(caption, text, messageType));
+-            }
+-        }
+-
+-        class Message {
+-            String caption, text, messageType;
+-
+-            Message(String caption, String text, String messageType) {
+-                this.caption = caption;
+-                this.text = text;
+-                this.messageType = messageType;
+-            }
+-        }
+-    }
+-
+-    static class InfoWindow extends Window {
+-        Container container;
+-        Closer closer;
+-
+-        InfoWindow(Frame parent, Color borderColor) {
+-            super(parent);
+-            container = new Container() {
+-                    public Insets getInsets() {
+-                        return new Insets(1, 1, 1, 1);
+-                    }
+-                };
+-            setLayout(new BorderLayout());
+-            setBackground(borderColor);
+-            add(container, BorderLayout.CENTER);
+-            container.setLayout(new BorderLayout());
+-
+-            closer = new Closer();
+-        }
+-
+-        public Component add(Component c) {
+-            container.add(c, BorderLayout.CENTER);
+-            return c;
+-        }
+-
+-        void setCloser(Runnable action, int time) {
+-            closer.set(action, time);
+-        }
+-
+-        // Must be executed on EDT.
+-        protected void show(Point corner, int indent) {
+-            assert SunToolkit.isDispatchThreadForAppContext(InfoWindow.this);
+-
+-            pack();
+-
+-            Dimension size = getSize();
+-            // TODO: When 6356322 is fixed we should get screen bounds in
+-            // this way: eframe.getGraphicsConfiguration().getBounds().
+-            Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
+-
+-            if (corner.x < scrSize.width/2 && corner.y < scrSize.height/2) { // 1st square
+-                setLocation(corner.x + indent, corner.y + indent);
+-
+-            } else if (corner.x >= scrSize.width/2 && corner.y < scrSize.height/2) { // 2nd square
+-                setLocation(corner.x - indent - size.width, corner.y + indent);
+-
+-            } else if (corner.x < scrSize.width/2 && corner.y >= scrSize.height/2) { // 3rd square
+-                setLocation(corner.x + indent, corner.y - indent - size.height);
+-
+-            } else if (corner.x >= scrSize.width/2 && corner.y >= scrSize.height/2) { // 4th square
+-                setLocation(corner.x - indent - size.width, corner.y - indent - size.height);
+-            }
+-
+-            InfoWindow.super.show();
+-            InfoWindow.this.closer.schedule();
+-        }
+-
+-        public void hide() {
+-            closer.close();
+-        }
+-
+-        class Closer implements Runnable {
+-            Runnable action;
+-            int time;
+-
+-            public void run() {
+-                doClose();
+-            }
+-
+-            void set(Runnable action, int time) {
+-                this.action = action;
+-                this.time = time;
+-            }
+-
+-            void schedule() {
+-                XToolkit.schedule(this, time);
+-            }
+-
+-            void close() {
+-                XToolkit.remove(this);
+-                doClose();
+-            }
+-
+-            // WARNING: this method may be executed on Toolkit thread.
+-            private void doClose() {
+-                SunToolkit.executeOnEventHandlerThread(InfoWindow.this, new Runnable() {
+-                        public void run() {
+-                            InfoWindow.super.hide();
+-                            invalidate();
+-                            if (action != null) {
+-                                action.run();
+-                            }
+-                        }
+-                    });
+-            }
+-        }
+-    }
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWarningWindow.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWarningWindow.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWarningWindow.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWarningWindow.java	2011-02-17 15:50:10.728056549 +0000
+@@ -25,16 +25,194 @@
+ package sun.awt.X11;
+ 
+ import java.awt.*;
++import java.awt.event.*;
++import java.awt.geom.Point2D;
++import java.lang.ref.WeakReference;
++import sun.java2d.SunGraphics2D;
++import sun.java2d.pipe.Region;
++import sun.awt.AWTAccessor;
++import sun.awt.SunToolkit;
+ 
+ class XWarningWindow extends XWindow {
+-    final static int defaultHeight = 27;
++    private final static int showingDelay = 330;
++    private final static int hidingDelay = 2000;
+ 
+-    Window ownerWindow;
+-    XWarningWindow(Window ownerWindow, long parentWindow) {
+-        super(ownerWindow, parentWindow);
++    private final Window ownerWindow;
++    private WeakReference<XWindowPeer> ownerPeer;
++
++    public final Window getOwnerWindow() {
++        return ownerWindow;
++    }
++    private long parentWindow;
++
++    private final static String OWNER = "OWNER";
++
++    private static XIconInfo[][] icons;
++
++    private InfoWindow.Tooltip tooltip;
++
++    private static synchronized XIconInfo getSecurityIconInfo(int size, int num) {
++        if (icons == null) {
++            icons = new XIconInfo[4][3];
++            if (XlibWrapper.dataModel == 32) {
++                icons[0][0] = new XIconInfo(XAWTIcon32_security_icon_bw16_png.security_icon_bw16_png);
++                icons[0][1] = new XIconInfo(XAWTIcon32_security_icon_interim16_png.security_icon_interim16_png);
++                icons[0][2] = new XIconInfo(XAWTIcon32_security_icon_yellow16_png.security_icon_yellow16_png);
++                icons[1][0] = new XIconInfo(XAWTIcon32_security_icon_bw24_png.security_icon_bw24_png);
++                icons[1][1] = new XIconInfo(XAWTIcon32_security_icon_interim24_png.security_icon_interim24_png);
++                icons[1][2] = new XIconInfo(XAWTIcon32_security_icon_yellow24_png.security_icon_yellow24_png);
++                icons[2][0] = new XIconInfo(XAWTIcon32_security_icon_bw32_png.security_icon_bw32_png);
++                icons[2][1] = new XIconInfo(XAWTIcon32_security_icon_interim32_png.security_icon_interim32_png);
++                icons[2][2] = new XIconInfo(XAWTIcon32_security_icon_yellow32_png.security_icon_yellow32_png);
++                icons[3][0] = new XIconInfo(XAWTIcon32_security_icon_bw48_png.security_icon_bw48_png);
++                icons[3][1] = new XIconInfo(XAWTIcon32_security_icon_interim48_png.security_icon_interim48_png);
++                icons[3][2] = new XIconInfo(XAWTIcon32_security_icon_yellow48_png.security_icon_yellow48_png);
++            } else {
++                icons[0][0] = new XIconInfo(XAWTIcon64_security_icon_bw16_png.security_icon_bw16_png);
++                icons[0][1] = new XIconInfo(XAWTIcon64_security_icon_interim16_png.security_icon_interim16_png);
++                icons[0][2] = new XIconInfo(XAWTIcon64_security_icon_yellow16_png.security_icon_yellow16_png);
++                icons[1][0] = new XIconInfo(XAWTIcon64_security_icon_bw24_png.security_icon_bw24_png);
++                icons[1][1] = new XIconInfo(XAWTIcon64_security_icon_interim24_png.security_icon_interim24_png);
++                icons[1][2] = new XIconInfo(XAWTIcon64_security_icon_yellow24_png.security_icon_yellow24_png);
++                icons[2][0] = new XIconInfo(XAWTIcon64_security_icon_bw32_png.security_icon_bw32_png);
++                icons[2][1] = new XIconInfo(XAWTIcon64_security_icon_interim32_png.security_icon_interim32_png);
++                icons[2][2] = new XIconInfo(XAWTIcon64_security_icon_yellow32_png.security_icon_yellow32_png);
++                icons[3][0] = new XIconInfo(XAWTIcon64_security_icon_bw48_png.security_icon_bw48_png);
++                icons[3][1] = new XIconInfo(XAWTIcon64_security_icon_interim48_png.security_icon_interim48_png);
++                icons[3][2] = new XIconInfo(XAWTIcon64_security_icon_yellow48_png.security_icon_yellow48_png);
++            }
++        }
++        final int sizeIndex = size % icons.length;
++        return icons[sizeIndex][num % icons[sizeIndex].length];
++    }
++
++    private volatile int currentIcon = 0;
++
++    /* -1 - uninitialized yet
++     * 0 - 16x16
++     * 1 - 24x24
++     * 2 - 32x32
++     * 3 - 48x48
++     */
++    private volatile int currentSize = -1;
++
++    /** Indicates whether the shape of the window must be updated
++     */
++    private volatile boolean sizeUpdated = true;
++
++    private synchronized boolean updateIconSize() {
++        int newSize = currentSize;
++
++        if (ownerWindow != null) {
++            Insets insets = ownerWindow.getInsets();
++            int max = Math.max(insets.top, Math.max(insets.bottom,
++                        Math.max(insets.left, insets.right)));
++            if (max < 24) {
++                newSize = 0;
++            } else if (max < 32) {
++                newSize = 1;
++            } else if (max < 48) {
++                newSize = 2;
++            } else {
++                newSize = 3;
++            }
++        }
++        if (newSize != currentSize) {
++            currentSize = newSize;
++            sizeUpdated = true;
++        }
++        return sizeUpdated;
++    }
++
++    private synchronized XIconInfo getSecurityIconInfo() {
++        updateIconSize();
++        return getSecurityIconInfo(currentSize, currentIcon);
++    }
++
++    XWarningWindow(final Window ownerWindow, long parentWindow, XWindowPeer ownerPeer) {
++        super(new XCreateWindowParams(new Object[] {
++                        TARGET, ownerWindow,
++                        OWNER, Long.valueOf(parentWindow)
++        }));
+         this.ownerWindow = ownerWindow;
+-        xSetVisible(true);
+-        toFront();
++        this.parentWindow = parentWindow;
++        this.tooltip = new InfoWindow.Tooltip(null, getTarget(),
++                new InfoWindow.Tooltip.LiveArguments() {
++                    public boolean isDisposed() {
++                        return XWarningWindow.this.isDisposed();
++                    }
++                    public Rectangle getBounds() {
++                        return XWarningWindow.this.getBounds();
++                    }
++                    public String getTooltipString() {
++                        return XWarningWindow.this.ownerWindow.getWarningString();
++                    }
++                });
++        this.ownerPeer = new WeakReference<XWindowPeer>(ownerPeer);
++    }
++
++    private void requestNoTaskbar() {
++        XNETProtocol netProtocol = XWM.getWM().getNETProtocol();
++        if (netProtocol != null) {
++            netProtocol.requestState(this, netProtocol.XA_NET_WM_STATE_SKIP_TASKBAR, true);
++        }
++    }
++
++    @Override
++    void postInit(XCreateWindowParams params) {
++        super.postInit(params);
++        XToolkit.awtLock();
++        try {
++            XWM.setMotifDecor(this, false, 0, 0);
++            XWM.setOLDecor(this, false, 0);
++
++            long parentWindow = ((Long)params.get(OWNER)).longValue();
++            XlibWrapper.XSetTransientFor(XToolkit.getDisplay(),
++                    getWindow(), parentWindow);
++
++            XWMHints hints = getWMHints();
++            hints.set_flags(hints.get_flags() | (int)XUtilConstants.InputHint | (int)XUtilConstants.StateHint);
++            hints.set_input(false);
++            hints.set_initial_state(XUtilConstants.NormalState);
++            XlibWrapper.XSetWMHints(XToolkit.getDisplay(), getWindow(), hints.pData);
++
++            initWMProtocols();
++            requestNoTaskbar();
++        } finally {
++            XToolkit.awtUnlock();
++        }
++    }
++
++    private void updateWarningWindowBounds() {
++        XWindowPeer peer = ownerPeer.get();
++        if (peer != null) {
++            synchronized (this) {
++                if (updateIconSize()) {
++                    XIconInfo ico = getSecurityIconInfo();
++                    XToolkit.awtLock();
++                    try {
++                        XlibWrapper.SetBitmapShape(XToolkit.getDisplay(), getWindow(),
++                                ico.getWidth(), ico.getHeight(), ico.getIntData());
++                    } finally {
++                        XToolkit.awtUnlock();
++                    }
++                    sizeUpdated = false;
++                    AWTAccessor.getWindowAccessor().setSecurityWarningSize(
++                            ownerWindow, ico.getWidth(), ico.getHeight());
++                }
++            }
++            peer.repositionSecurityWarning();
++        }
++    }
++
++    /**
++     * @param x,y,w,h coordinates of the untrusted window
++     */
++    public void reposition(int x, int y, int w, int h) {
++        Point2D point = AWTAccessor.getWindowAccessor().
++            calculateSecurityWarningPosition(ownerWindow,
++                x, y, w, h);
++        reshape((int)point.getX(), (int)point.getY(), getWidth(), getHeight());
+     }
+ 
+     protected String getWMName() {
+@@ -49,33 +227,19 @@
+                                  getFont());
+     }
+     void paint(Graphics g, int x, int y, int width, int height) {
+-        String warningString = getWarningString();
+-        Rectangle bounds = getBounds();
+-        bounds.x = 0;
+-        bounds.y = 0;
+-        Rectangle updateRect = new Rectangle(x, y, width, height);
+-        if (updateRect.intersects(bounds)) {
+-            Rectangle updateArea = updateRect.intersection(bounds);
+-            g.setClip(updateArea);
+-            g.setColor(getBackground());
+-            g.fillRect(updateArea.x, updateArea.y, updateArea.width, updateArea.height);
+-            g.setColor(getColor());
+-            g.setFont(getFont());
+-            FontMetrics fm = g.getFontMetrics();
+-            int warningWidth = fm.stringWidth(warningString);
+-            int w_x = (bounds.width - warningWidth)/2;
+-            int w_y = (bounds.height + fm.getMaxAscent() - fm.getMaxDescent())/2;
+-            g.drawString(warningString, w_x, w_y);
+-            g.drawLine(bounds.x, bounds.y+bounds.height-1, bounds.x+bounds.width-1, bounds.y+bounds.height-1);
+-        }
++        g.drawImage(getSecurityIconInfo().getImage(), 0, 0, null);
+     }
+ 
+     String getWarningString() {
+         return ownerWindow.getWarningString();
+     }
+ 
++    int getWidth() {
++        return getSecurityIconInfo().getWidth();
++    }
++
+     int getHeight() {
+-        return defaultHeight; // should implement depending on Font
++        return getSecurityIconInfo().getHeight();
+     }
+ 
+     Color getBackground() {
+@@ -97,6 +261,7 @@
+         }
+     }
+ 
++    @Override
+     public void handleExposeEvent(XEvent xev) {
+         super.handleExposeEvent(xev);
+ 
+@@ -105,18 +270,156 @@
+         final int y = xe.get_y();
+         final int width = xe.get_width();
+         final int height = xe.get_height();
+-        EventQueue.invokeLater(new Runnable() {
+-            public void run() {
+-                Graphics g = getGraphics();
+-                try {
+-                    paint(g, x, y, width, height);
+-                } finally {
+-                    g.dispose();
+-                }
+-            }
+-        });
++        SunToolkit.executeOnEventHandlerThread(target,
++                new Runnable() {
++                    public void run() {
++                        Graphics g = getGraphics();
++                        try {
++                            paint(g, x, y, width, height);
++                        } finally {
++                            g.dispose();
++                        }
++                    }
++                });
+     }
++
++    @Override
+     protected boolean isEventDisabled(XEvent e) {
+         return true;
+     }
++
++    /** Send a synthetic UnmapNotify in order to withdraw the window.
++     */
++    private void withdraw() {
++        XEvent req = new XEvent();
++        try {
++            long root;
++            XToolkit.awtLock();
++            try {
++                root = XlibWrapper.RootWindow(XToolkit.getDisplay(), getScreenNumber());
++            }
++            finally {
++                XToolkit.awtUnlock();
++            }
++
++            req.set_type(XConstants.UnmapNotify);
++
++            XUnmapEvent umev = req.get_xunmap();
++
++            umev.set_event(root);
++            umev.set_window(getWindow());
++            umev.set_from_configure(false);
++
++            XToolkit.awtLock();
++            try {
++                XlibWrapper.XSendEvent(XToolkit.getDisplay(),
++                        root,
++                        false,
++                        XConstants.SubstructureRedirectMask | XConstants.SubstructureNotifyMask,
++                        req.pData);
++            }
++            finally {
++                XToolkit.awtUnlock();
++            }
++        } finally {
++            req.dispose();
++        }
++    }
++
++    @Override
++    protected void stateChanged(long time, int oldState, int newState) {
++        if (newState == XUtilConstants.IconicState) {
++            super.xSetVisible(false);
++            withdraw();
++        }
++    }
++
++    @Override
++    protected void setMouseAbove(boolean above) {
++        super.setMouseAbove(above);
++        XWindowPeer p = ownerPeer.get();
++        if (p != null) {
++            p.updateSecurityWarningVisibility();
++        }
++    }
++
++    @Override
++    protected void enterNotify(long window) {
++        super.enterNotify(window);
++        if (window == getWindow()) {
++            tooltip.enter();
++        }
++    }
++
++    @Override
++    protected void leaveNotify(long window) {
++        super.leaveNotify(window);
++        if (window == getWindow()) {
++            tooltip.exit();
++        }
++    }
++
++    @Override
++    public void xSetVisible(boolean visible) {
++        super.xSetVisible(visible);
++
++        // The _NET_WM_STATE_SKIP_TASKBAR got reset upon hiding/showing,
++        // so we request it every time whenever we change the visibility.
++        requestNoTaskbar();
++    }
++
++    private final Runnable hidingTask = new Runnable() {
++        public void run() {
++            xSetVisible(false);
++        }
++    };
++
++    private final Runnable showingTask = new Runnable() {
++        public void run() {
++            new Thread() {
++                public void run() {
++                    if (!isVisible()) {
++                        xSetVisible(true);
++                        updateWarningWindowBounds();
++                    }
++                    repaint();
++                    if (currentIcon > 0) {
++                        currentIcon--;
++                        XToolkit.schedule(showingTask, showingDelay);
++                    }
++                }}.start();
++        }
++    };
++
++    public void setSecurityWarningVisible(boolean visible) {
++        setSecurityWarningVisible(visible, true);
++    }
++
++    public void setSecurityWarningVisible(boolean visible, boolean doSchedule) {
++        if (visible) {
++            XToolkit.remove(hidingTask);
++            XToolkit.remove(showingTask);
++            if (isVisible()) {
++                currentIcon = 0;
++            } else {
++                currentIcon = 3;
++            }
++            if (doSchedule) {
++                XToolkit.schedule(showingTask, 1);
++            } else {
++                showingTask.run();
++            }
++        } else {
++            XToolkit.remove(showingTask);
++            XToolkit.remove(hidingTask);
++            if (!isVisible()) {
++                return;
++            }
++            if (doSchedule) {
++                XToolkit.schedule(hidingTask, hidingDelay);
++            } else {
++                hidingTask.run();
++            }
++        }
++    }
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindow.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindow.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindow.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindow.java	2011-02-17 15:50:10.728056549 +0000
+@@ -68,6 +68,15 @@
+     int oldWidth = -1;
+     int oldHeight = -1;
+ 
++    protected PropMwmHints mwm_hints;
++    protected static XAtom wm_protocols;
++    protected static XAtom wm_delete_window;
++    protected static XAtom wm_take_focus;
++
++    private boolean stateChanged; // Indicates whether the value on savedState is valid
++    private int savedState; // Holds last known state of the top-level window
++
++    XWindowAttributesData winAttr;
+ 
+     protected X11GraphicsConfig graphicsConfig;
+     protected AwtGraphicsConfigData graphicsConfigData;
+@@ -208,6 +217,20 @@
+         }
+ 
+         params.putIfNull(BACKING_STORE, XToolkit.getBackingStoreType());
++
++        XToolkit.awtLock();
++        try {
++            if (wm_protocols == null) {
++                wm_protocols = XAtom.get("WM_PROTOCOLS");
++                wm_delete_window = XAtom.get("WM_DELETE_WINDOW");
++                wm_take_focus = XAtom.get("WM_TAKE_FOCUS");
++            }
++        }
++        finally {
++            XToolkit.awtUnlock();
++        }
++        winAttr = new XWindowAttributesData();
++        savedState = XUtilConstants.WithdrawnState;
+     }
+ 
+     void postInit(XCreateWindowParams params) {
+@@ -801,12 +824,42 @@
+     public native boolean x11inputMethodLookupString(long event, long [] keysymArray);
+     native boolean haveCurrentX11InputMethodInstance();
+ 
++    private boolean mouseAboveMe;
++
++    public boolean isMouseAbove() {
++        synchronized (getStateLock()) {
++            return mouseAboveMe;
++        }
++    }
++    protected void setMouseAbove(boolean above) {
++        synchronized (getStateLock()) {
++            mouseAboveMe = above;
++        }
++    }
++
++    protected void enterNotify(long window) {
++        if (window == getWindow()) {
++            setMouseAbove(true);
++        }
++    }
++    protected void leaveNotify(long window) {
++        if (window == getWindow()) {
++            setMouseAbove(false);
++        }
++    }
++
+     public void handleXCrossingEvent(XEvent xev) {
+         super.handleXCrossingEvent(xev);
+         XCrossingEvent xce = xev.get_xcrossing();
+ 
+         if (eventLog.isLoggable(Level.FINEST)) eventLog.finest(xce.toString());
+ 
++        if (xce.get_type() == XConstants.EnterNotify) {
++            enterNotify(xce.get_window());
++        } else { // LeaveNotify:
++            leaveNotify(xce.get_window());
++        }
++
+         // Skip event If it was caused by a grab
+         // This is needed because on displays with focus-follows-mouse on MousePress X system generates
+         // two XCrossing events with mode != NormalNotify. First of them notifies that the mouse has left
+@@ -1110,6 +1163,55 @@
+ 
+     }
+ 
++    /*
++     * XmNiconic and Map/UnmapNotify (that XmNiconic relies on) are
++     * unreliable, since mapping changes can happen for a virtual desktop
++     * switch or MacOS style shading that became quite popular under X as
++     * well.  Yes, it probably should not be this way, as it violates
++     * ICCCM, but reality is that quite a lot of window managers abuse
++     * mapping state.
++     */
++    int getWMState() {
++        if (stateChanged) {
++            stateChanged = false;
++            WindowPropertyGetter getter =
++                new WindowPropertyGetter(window, XWM.XA_WM_STATE, 0, 1, false,
++                                         XWM.XA_WM_STATE);
++            try {
++                int status = getter.execute();
++                if (status != XConstants.Success || getter.getData() == 0) {
++                    return savedState = XUtilConstants.WithdrawnState;
++                }
++
++                if (getter.getActualType() != XWM.XA_WM_STATE.getAtom() && getter.getActualFormat() != 32) {
++                    return savedState = XUtilConstants.WithdrawnState;
++                }
++                savedState = (int)Native.getCard32(getter.getData());
++            } finally {
++                getter.dispose();
++            }
++        }
++        return savedState;
++    }
++
++    /**
++     * Override this methods to get notifications when top-level window state changes. The state is
++     * meant in terms of ICCCM: WithdrawnState, IconicState, NormalState
++     */
++    protected void stateChanged(long time, int oldState, int newState) {
++    }
++
++    @Override
++    public void handlePropertyNotify(XEvent xev) {
++        super.handlePropertyNotify(xev);
++        XPropertyEvent ev = xev.get_xproperty();
++        if (ev.get_atom() == XWM.XA_WM_STATE.getAtom()) {
++            // State has changed, invalidate saved value
++            stateChanged = true;
++            stateChanged(ev.get_time(), savedState, getWMState());
++        }
++    }
++
+     public void reshape(Rectangle bounds) {
+         reshape(bounds.x, bounds.y, bounds.width, bounds.height);
+     }
+@@ -1278,4 +1380,40 @@
+ 
+     static native int getAWTKeyCodeForKeySym(int keysym);
+     static native int getKeySymForAWTKeyCode(int keycode);
++
++    /* These two methods are actually applicable to toplevel windows only.
++     * However, the functionality is required by both the XWindowPeer and
++     * XWarningWindow, both of which have the XWindow as a common ancestor.
++     * See XWM.setMotifDecor() for details.
++     */
++    public PropMwmHints getMWMHints() {
++        if (mwm_hints == null) {
++            mwm_hints = new PropMwmHints();
++            if (!XWM.XA_MWM_HINTS.getAtomData(getWindow(), mwm_hints.pData, MWMConstants.PROP_MWM_HINTS_ELEMENTS)) {
++                mwm_hints.zero();
++            }
++        }
++        return mwm_hints;
++    }
++
++    public void setMWMHints(PropMwmHints hints) {
++        mwm_hints = hints;
++        if (hints != null) {
++            XWM.XA_MWM_HINTS.setAtomData(getWindow(), mwm_hints.pData, MWMConstants.PROP_MWM_HINTS_ELEMENTS);
++        }
++    }
++
++    protected final void initWMProtocols() {
++        wm_protocols.setAtomListProperty(this, getWMProtocols());
++    }
++
++    /**
++     * Returns list of protocols which should be installed on this window.
++     * Descendants can override this method to add class-specific protocols
++     */
++    protected XAtomList getWMProtocols() {
++        // No protocols on simple window
++        return new XAtomList();
++    }
++
+ }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java	2011-02-17 15:50:10.728056549 +0000
+@@ -66,17 +66,11 @@
+     // should be synchronized on awtLock
+     private static Set<XWindowPeer> windows = new HashSet<XWindowPeer>();
+ 
+-    static XAtom wm_protocols;
+-    static XAtom wm_delete_window;
+-    static XAtom wm_take_focus;
+-
+     Insets insets = new Insets( 0, 0, 0, 0 );
+-    XWindowAttributesData winAttr;
+     private boolean cachedFocusableWindow;
+     XWarningWindow warningWindow;
+ 
+     private boolean alwaysOnTop;
+-    PropMwmHints mwm_hints;
+     private boolean locationByPlatform;
+ 
+     Dialog modalBlocker;
+@@ -93,8 +87,6 @@
+     private boolean grab = false; // Whether to do a grab during showing
+ 
+     private boolean isMapped = false; // Is this window mapped or not
+-    private boolean stateChanged; // Indicates whether the value on savedState is valid
+-    private int savedState; // Holds last known state of the top-level window
+     private boolean mustControlStackPosition = false; // Am override-redirect not on top
+     private XEventDispatcher rootPropertyEventDispatcher = null;
+ 
+@@ -144,26 +136,19 @@
+         super.preInit(params);
+         params.putIfNull(BIT_GRAVITY, Integer.valueOf(NorthWestGravity));
+ 
+-        savedState = WithdrawnState;
++        long eventMask = 0;
++        if (params.containsKey(EVENT_MASK)) {
++            eventMask = ((Long)params.get(EVENT_MASK));
++        }
++        eventMask |= XConstants.VisibilityChangeMask;
++        params.put(EVENT_MASK, eventMask);
++
+         XA_NET_WM_STATE = XAtom.get("_NET_WM_STATE");
+ 
+-        winAttr = new XWindowAttributesData();
+         insets = new Insets(0,0,0,0);
+ 
+         params.put(OVERRIDE_REDIRECT, Boolean.valueOf(isOverrideRedirect()));
+ 
+-        SunToolkit.awtLock();
+-        try {
+-            windows.add(this);
+-            if (wm_protocols == null) {
+-                wm_protocols = XAtom.get("WM_PROTOCOLS");
+-                wm_delete_window = XAtom.get("WM_DELETE_WINDOW");
+-                wm_take_focus = XAtom.get("WM_TAKE_FOCUS");
+-            }
+-        }
+-        finally {
+-            SunToolkit.awtUnlock();
+-        }
+         cachedFocusableWindow = isFocusableWindow();
+ 
+         Font f = target.getFont();
+@@ -199,20 +184,6 @@
+         params.put(BOUNDS, constrainBounds(bounds.x, bounds.y, bounds.width, bounds.height));
+     }
+ 
+-    private void initWMProtocols() {
+-        wm_protocols.setAtomListProperty(this, getWMProtocols());
+-    }
+-
+-    /**
+-     * Returns list of protocols which should be installed on this window.
+-     * Descendants can override this method to add class-specific protocols
+-     */
+-    protected XAtomList getWMProtocols() {
+-        // No protocols on simple window
+-        return new XAtomList();
+-    }
+-
+-
+     protected String getWMName() {
+         String name = target.getName();
+         if (name == null || name.trim().equals("")) {
+@@ -266,7 +237,7 @@
+             // accessSystemTray permission allows to display TrayIcon, TrayIcon tooltip
+             // and TrayIcon balloon windows without a warning window.
+             if (!WindowAccessor.isTrayIconWindow((Window)target)) {
+-                warningWindow = new XWarningWindow((Window)target, getWindow());
++                warningWindow = new XWarningWindow((Window)target, getWindow(), this);
+             }
+         }
+ 
+@@ -547,10 +518,15 @@
+             }
+ 
+ 
+-            if (!bounds.getSize().equals(oldBounds.getSize())) {
++            boolean isResized = !bounds.getSize().equals(oldBounds.getSize());
++            boolean isMoved = !bounds.getLocation().equals(oldBounds.getLocation());
++            if (isMoved || isResized) {
++                repositionSecurityWarning();
++            }
++            if (isResized) {
+                 postEventToEventQueue(new ComponentEvent(getEventSource(), ComponentEvent.COMPONENT_RESIZED));
+             }
+-            if (!bounds.getLocation().equals(oldBounds.getLocation())) {
++            if (isMoved) {
+                 postEventToEventQueue(new ComponentEvent(getEventSource(), ComponentEvent.COMPONENT_MOVED));
+             }
+         } finally {
+@@ -573,9 +549,7 @@
+     }
+ 
+     public Insets getInsets() {
+-        Insets in = (Insets)(insets.clone());
+-        in.top += getWarningWindowHeight();
+-        return in;
++        return new Insets(0, 0, 0, 0);
+     }
+ 
+     // NOTE: This method may be called by privileged threads.
+@@ -792,6 +766,7 @@
+      * Overridden to check if we need to update our GraphicsDevice/Config
+      * Added for 4934052.
+      */
++    @Override
+     public void handleConfigureNotifyEvent(XEvent xev) {
+         // TODO: We create an XConfigureEvent every time we override
+         // handleConfigureNotify() - too many!
+@@ -805,8 +780,7 @@
+         // there could be a race condition in which a ComponentListener could
+         // see the old screen.
+         super.handleConfigureNotifyEvent(xev);
+-        // for 5085647: no applet warning window visible
+-        updateChildrenSizes();
++        repositionSecurityWarning();
+     }
+ 
+     final void requestXFocus(long time) {
+@@ -1085,6 +1059,9 @@
+         }
+         updateFocusability();
+         promoteDefaultPosition();
++        if (!vis && warningWindow != null) {
++            warningWindow.setSecurityWarningVisible(false, false);
++        }
+         super.setVisible(vis);
+         if (!vis && !isWithdrawn()) {
+             // ICCCM, 4.1.4. Changing Window State:
+@@ -1114,6 +1091,7 @@
+         if (isOverrideRedirect() && vis) {
+             updateChildrenSizes();
+         }
++        repositionSecurityWarning();
+     }
+ 
+     protected void suppressWmTakeFocus(boolean doSuppress) {
+@@ -1131,21 +1109,64 @@
+         return 0;
+     }
+ 
+-    // The height of area used to display Applet's warning about securit
+-    int getWarningWindowHeight() {
+-        if (warningWindow != null) {
+-            return warningWindow.getHeight();
+-        } else {
+-            return 0;
+-        }
+-    }
+-
+     // Called when shell changes its size and requires children windows
+     // to update their sizes appropriately
+     void updateChildrenSizes() {
++    }
++
++    public void repositionSecurityWarning() {
++        // NOTE: On KWin if the window/border snapping option is enabled,
++        // the Java window may be swinging while it's being moved.
++        // This doesn't make the application unusable though looks quite ugly.
++        // Probobly we need to find some hint to assign to our Security
++        // Warning window in order to exclude it from the snapping option.
++        // We are not currently aware of existance of such a property.
+         if (warningWindow != null) {
+-            warningWindow.reshape(0, getMenuBarHeight(), getSize().width, warningWindow.getHeight());
++            // We can't use the coordinates stored in the XBaseWindow since
++            // they are zeros for decorated frames.
++            int x = ComponentAccessor.getX(target);
++            int y = ComponentAccessor.getY(target);
++            int width = ComponentAccessor.getWidth(target);
++            int height = ComponentAccessor.getHeight(target);
++            warningWindow.reposition(x, y, width, height);
++        }
++    }
++
++    @Override
++    protected void setMouseAbove(boolean above) {
++        super.setMouseAbove(above);
++        updateSecurityWarningVisibility();
++    }
++
++    public void updateSecurityWarningVisibility() {
++        if (warningWindow == null) {
++            return;
++        }
++
++        boolean show = false;
++
++        int state = getWMState();
++
++        if (!isVisible()) {
++            return; // The warning window should already be hidden.
+         }
++
++        // getWMState() always returns 0 (Withdrawn) for simple windows. Hence
++        // we ignore the state for such windows.
++        if (isVisible() && (state == XUtilConstants.NormalState || isSimpleWindow())) {
++            if (XKeyboardFocusManagerPeer.getCurrentNativeFocusedWindow() ==
++                    getTarget())
++            {
++                show = true;
++            }
++
++            if (isMouseAbove() || warningWindow.isMouseAbove())
++            {
++                show = true;
++            }
++        }
++
++        warningWindow.setSecurityWarningVisible(show);
+     }
+ 
+     boolean isOverrideRedirect() {
+@@ -1197,20 +1218,7 @@
+ //         if (ve.get_state() == XlibWrapper.VisibilityUnobscured) {
+ //             // raiseInputMethodWindow
+ //         }
+-    }
+-
+-    public void handlePropertyNotify(XEvent xev) {
+-        super.handlePropertyNotify(xev);
+-        XPropertyEvent ev = xev.get_xproperty();
+-        if (ev.get_atom() == XWM.XA_WM_STATE.getAtom()) {
+-            // State has changed, invalidate saved value
+-            stateChanged = true;
+-            stateChanged(ev.get_time(), savedState, getWMState());
+-        } else if (ev.get_atom() == XWM.XA_KDE_NET_WM_FRAME_STRUT.getAtom()
+-                   || ev.get_atom() == XWM.XA_NET_FRAME_EXTENTS.getAtom())
+-        {
+-            getWMSetInsets(XAtom.get(ev.get_atom()));
+-        }
++        repositionSecurityWarning();
+     }
+ 
+     void handleRootPropertyNotify(XEvent xev) {
+@@ -1311,6 +1319,7 @@
+      * Override this methods to get notifications when top-level window state changes. The state is
+      * meant in terms of ICCCM: WithdrawnState, IconicState, NormalState
+      */
++    @Override
+     protected void stateChanged(long time, int oldState, int newState) {
+         // Fix for 6401700, 6412803
+         // If this window is modal blocked, it is put into the transient_for
+@@ -1324,38 +1333,8 @@
+         for (ToplevelStateListener topLevelListenerTmp : toplevelStateListeners) {
+             topLevelListenerTmp.stateChangedICCCM(oldState, newState);
+         }
+-    }
+-
+ 
+-    /*
+-     * XmNiconic and Map/UnmapNotify (that XmNiconic relies on) are
+-     * unreliable, since mapping changes can happen for a virtual desktop
+-     * switch or MacOS style shading that became quite popular under X as
+-     * well.  Yes, it probably should not be this way, as it violates
+-     * ICCCM, but reality is that quite a lot of window managers abuse
+-     * mapping state.
+-     */
+-    int getWMState() {
+-        if (stateChanged) {
+-            stateChanged = false;
+-            WindowPropertyGetter getter =
+-                new WindowPropertyGetter(window, XWM.XA_WM_STATE, 0, 1, false,
+-                                         XWM.XA_WM_STATE);
+-            try {
+-                int status = getter.execute();
+-                if (status != XlibWrapper.Success || getter.getData() == 0) {
+-                    return savedState = XlibWrapper.WithdrawnState;
+-                }
+-
+-                if (getter.getActualType() != XWM.XA_WM_STATE.getAtom() && getter.getActualFormat() != 32) {
+-                    return savedState = XlibWrapper.WithdrawnState;
+-                }
+-                savedState = (int)Native.getCard32(getter.getData());
+-            } finally {
+-                getter.dispose();
+-            }
+-        }
+-        return savedState;
++        updateSecurityWarningVisibility();
+     }
+ 
+     boolean isWithdrawn() {
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java	2011-02-17 15:50:10.724056863 +0000
+@@ -889,7 +889,7 @@
+     /*
+      * Set MWM decorations.  Set MWM functions depending on resizability.
+      */
+-    static void setMotifDecor(XWindowPeer window, boolean resizable, int decorations, int functions) {
++    static void setMotifDecor(XWindow window, boolean resizable, int decorations, int functions) {
+         /* Apparently some WMs don't implement MWM_*_ALL semantic correctly */
+         if ((decorations & MWM_DECOR_ALL) != 0
+             && (decorations != MWM_DECOR_ALL))
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/awt/utility/rect.h openjdk/jdk/src/solaris/native/sun/awt/utility/rect.h
+--- openjdk.orig/jdk/src/solaris/native/sun/awt/utility/rect.h	2011-01-20 23:54:42.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/awt/utility/rect.h	2011-02-17 15:50:10.728056549 +0000
+@@ -43,4 +43,15 @@
+ 
+ #define RECT_INC_HEIGHT(r)      (r).height++
+ 
++#if defined(__cplusplus)
++extern "C" {
++#endif
++
++int BitmapToYXBandedRectangles(int bitsPerPixel, int width, int height,
++        unsigned char * buf, RECT_T * outBuf);
++
++#if defined(__cplusplus)
++}
++#endif
++
+ #endif // _AWT_RECT_H
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c
+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2011-02-17 15:43:30.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2011-02-17 15:50:10.728056549 +0000
+@@ -42,6 +42,7 @@
+ #include <jvm.h>
+ 
+ #include <Region.h>
++#include "utility/rect.h"
+ 
+ #if defined(DEBUG) || defined(INTERNAL_BUILD)
+ static jmethodID lockIsHeldMID = NULL;
+@@ -305,6 +306,20 @@
+ 
+ /*
+  * Class:     XlibWrapper
++ * Method:    XConfigureWindow
++ * Signature: (JJJJ)V
++ */
++JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_XConfigureWindow
++(JNIEnv *env, jclass clazz, jlong display, jlong window, jlong value_mask,
++ jlong values)
++{
++    AWT_CHECK_HAVE_LOCK();
++    XConfigureWindow((Display*)jlong_to_ptr(display), (Window)window,
++            (unsigned int)value_mask, (XWindowChanges*)jlong_to_ptr(values));
++}
++
++/*
++ * Class:     XlibWrapper
+  * Method:    XSetInputFocus
+  * Signature: (JJ)V
+  */
+@@ -1960,3 +1975,49 @@
+                 ShapeBounding, 0, 0, None, ShapeSet);
+     }
+ }
++
++/*
++ * Class:     XlibWrapper
++ * Method:    SetBitmapShape
++ */
++JNIEXPORT void JNICALL
++Java_sun_awt_X11_XlibWrapper_SetBitmapShape
++(JNIEnv *env, jclass clazz, jlong display, jlong window,
++ jint width, jint height, jintArray bitmap)
++{
++    jsize len;
++    jint *values;
++    jboolean isCopy = JNI_FALSE;
++    size_t worstBufferSize = (size_t)((width / 2 + 1) * height);
++    RECT_T * pRect;
++
++    AWT_CHECK_HAVE_LOCK();
++
++    len = (*env)->GetArrayLength(env, bitmap);
++    if (len == 0 || len < width * height) {
++        return;
++    }
++
++    values = (*env)->GetIntArrayElements(env, bitmap, &isCopy);
++    if (JNU_IsNull(env, values)) {
++        return;
++    }
++
++    pRect = (RECT_T *)malloc(worstBufferSize * sizeof(RECT_T));
++
++    /* Note: the values[0] and values[1] are supposed to contain the width
++     * and height (see XIconInfo.getIntData() for details). So, we do +2.
++     */
++    int numrects = BitmapToYXBandedRectangles(32, (int)width, (int)height,
++            (unsigned char *)(values + 2), pRect);
++
++    XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++            ShapeClip, 0, 0, pRect, numrects, ShapeSet, YXBanded);
++    XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++            ShapeBounding, 0, 0, pRect, numrects, ShapeSet, YXBanded);
++
++    free(pRect);
++
++    (*env)->ReleaseIntArrayElements(env, bitmap, values, JNI_ABORT);
++}
++
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	2011-02-17 15:50:10.728056549 +0000
+@@ -499,8 +499,10 @@
+      private volatile int sysH = 0;
+ 
+      Rectangle constrainBounds(int x, int y, int width, int height) {
++         GraphicsConfiguration gc = this.winGraphicsConfig;
++
+          // We don't restrict the setBounds() operation if the code is trusted.
+-         if (!hasWarningWindow()) {
++         if (!hasWarningWindow() || gc == null) {
+              return new Rectangle(x, y, width, height);
+          }
+ 
+@@ -509,24 +511,24 @@
+          int newW = width;
+          int newH = height;
+ 
+-         GraphicsConfiguration gc = ((Window)target).getGraphicsConfiguration();
+          Rectangle sB = gc.getBounds();
+-         Insets sIn = ((Window)target).getToolkit().getScreenInsets(gc);
++         Insets sIn = Toolkit.getDefaultToolkit().getScreenInsets(gc);
+ 
+          int screenW = sB.width - sIn.left - sIn.right;
+          int screenH = sB.height - sIn.top - sIn.bottom;
+ 
+          // If it's undecorated or is not currently visible
+-         if (!((Window)target).isVisible() || isTargetUndecorated()) {
++         if (!AWTAccessor.getComponentAccessor().isVisible_NoClientCode(
++                     (Component)target) || isTargetUndecorated())
++         {
+              // Now check each point is within the visible part of the screen
+              int screenX = sB.x + sIn.left;
+              int screenY = sB.y + sIn.top;
+ 
+-             // First make sure the size is withing the visible part of the screen
++             // First make sure the size is within the visible part of the screen
+              if (newW > screenW) {
+                  newW = screenW;
+              }
+-
+              if (newH > screenH) {
+                  newH = screenH;
+              }
+@@ -537,7 +539,6 @@
+              } else if (newX + newW > screenX + screenW) {
+                  newX = screenX + screenW - newW;
+              }
+-
+              if (newY < screenY) {
+                  newY = screenY;
+              } else if (newY + newH > screenY + screenH) {
+@@ -552,7 +553,6 @@
+              if (newW > maxW) {
+                  newW = maxW;
+              }
+-
+              if (newH > maxH) {
+                  newH = maxH;
+              }
+@@ -561,6 +561,8 @@
+          return new Rectangle(newX, newY, newW, newH);
+      }
+ 
++     public native void repositionSecurityWarning();
++
+      @Override
+      public void setBounds(int x, int y, int width, int height, int op) {
+          Rectangle newBounds = constrainBounds(x, y, width, height);
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-17 15:50:10.728056549 +0000
+@@ -282,8 +282,7 @@
+      * the native one anymore. So we can safely destroy component's
+      * handle.
+      */
+-    AwtToolkit::DestroyComponentHWND(m_hwnd);
+-    m_hwnd = NULL;
++    DestroyHWnd();
+ 
+     if (sm_getComponentCache == this) {
+         sm_getComponentCache = NULL;
+@@ -605,6 +604,17 @@
+ }
+ 
+ /*
++ * Destroy this window's HWND
++ */
++void AwtComponent::DestroyHWnd() {
++    if (m_hwnd != NULL) {
++        AwtToolkit::DestroyComponentHWND(m_hwnd);
++        //AwtToolkit::DestroyComponent(this);
++        m_hwnd = NULL;
++    }
++}
++
++/*
+  * Returns hwnd for target on non Toolkit thread
+  */
+ HWND
+@@ -4784,7 +4794,7 @@
+ AwtComponent::GetNativeFocusedWindow() {
+     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+     AwtComponent *comp =
+-        AwtComponent::GetComponent(AwtComponent::sm_focusedWindow);
++        AwtComponent::GetComponent(AwtComponent::GetFocusedWindow());
+     return (comp != NULL) ? comp->GetTargetAsGlobalRef(env) : NULL;
+ }
+ void
+@@ -4884,7 +4894,7 @@
+      * if focus owner is null, but focused window isn't
+      * we will send key event to focused window
+      */
+-    HWND hwndTarget = ((sm_focusOwner != NULL) ? sm_focusOwner : sm_focusedWindow);
++    HWND hwndTarget = ((sm_focusOwner != NULL) ? sm_focusOwner : AwtComponent::GetFocusedWindow());
+ 
+     if (hwndTarget == GetHWnd()) {
+         SendKeyEvent(id, when, raw, cooked, modifiers, keyLocation, msg);
+@@ -6355,6 +6365,14 @@
+     }
+ }
+ 
++void AwtComponent::SetFocusedWindow(HWND window)
++{
++    HWND old = sm_focusedWindow;
++    sm_focusedWindow = window;
++
++    AwtWindow::FocusedWindowChanged(old, window);
++}
++
+ /************************************************************************
+  * Component native methods
+  */
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h openjdk/jdk/src/windows/native/sun/windows/awt_Component.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.h	2011-02-17 15:50:10.732056235 +0000
+@@ -127,12 +127,13 @@
+     virtual void RegisterClass();
+     virtual void UnregisterClass();
+ 
+-    void CreateHWnd(JNIEnv *env, LPCWSTR title,
++    virtual void CreateHWnd(JNIEnv *env, LPCWSTR title,
+                     DWORD windowStyle, DWORD windowExStyle,
+                     int x, int y, int w, int h,
+                     HWND hWndParent, HMENU hMenu,
+                     COLORREF colorForeground, COLORREF colorBackground,
+                     jobject peer);
++    virtual void DestroyHWnd();
+     void InitPeerGraphicsConfig(JNIEnv *env, jobject peer);
+ 
+     virtual void Dispose();
+@@ -670,8 +671,14 @@
+     static void _SetRectangularShape(void *param);
+ 
+     static HWND sm_focusOwner;
++
++private:
+     static HWND sm_focusedWindow;
+ 
++public:
++    static inline HWND GetFocusedWindow() { return sm_focusedWindow; }
++    static void SetFocusedWindow(HWND window);
++
+     static BOOL m_isWin95;
+     static BOOL m_isWin2000;
+     static BOOL m_isWinNT;
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Dialog.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Dialog.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Dialog.cpp	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Dialog.cpp	2011-02-17 15:50:10.732056235 +0000
+@@ -284,9 +284,7 @@
+                 if ((::WindowFromPoint(mhs->pt) == hWnd) &&
+                     (::GetForegroundWindow() == topMostBlocker))
+                 {
+-                    ::MessageBeep(MB_OK);
+-                    // some heuristics: 3 times x 64 milliseconds
+-                    AwtWindow::FlashWindowEx(topMostBlocker, 3, 64, FLASHW_CAPTION);
++		    AnimateModalBlocker(dialog);
+                 }
+                 if (topMostBlocker != AwtToolkit::GetInstance().GetHWnd()) {
+                     ::BringWindowToTop(topMostBlocker);
+@@ -299,6 +297,13 @@
+     return CallNextHookEx(0, nCode, wParam, lParam);
+ }
+ 
++void AwtDialog::AnimateModalBlocker(HWND window)
++{
++    ::MessageBeep(MB_OK);
++    // some heuristics: 3 times x 64 milliseconds
++    AwtWindow::FlashWindowEx(window, 3, 64, FLASHW_CAPTION);
++}
++
+ LRESULT CALLBACK AwtDialog::MouseHookProc_NonTT(int nCode,
+                                                 WPARAM wParam, LPARAM lParam)
+ {
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Dialog.h openjdk/jdk/src/windows/native/sun/windows/awt_Dialog.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Dialog.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Dialog.h	2011-02-17 15:50:10.732056235 +0000
+@@ -76,7 +76,7 @@
+      * Thus we don't have to perform any transitive (a blocker of a blocker) checks.
+      */
+     INLINE virtual BOOL IsFocusedWindowModalBlocker() {
+-        return (sm_focusedWindow != NULL) && (GetModalBlocker(sm_focusedWindow) == GetHWnd());
++        return (AwtComponent::GetFocusedWindow() != NULL) && (GetModalBlocker(AwtComponent::GetFocusedWindow()) == GetHWnd());
+     }
+ 
+     // finds and activates some window after the modal dialog is hidden
+@@ -129,6 +129,8 @@
+     // example on browser's thread when running in Java Plugin
+     static LRESULT CALLBACK MouseHookProc_NonTT(int code,
+                                                 WPARAM wParam, LPARAM lParam);
++
++    static void AnimateModalBlocker(HWND window);
+ };
+ 
+ #endif /* AWT_DIALOG_H */
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Frame.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Frame.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Frame.cpp	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Frame.cpp	2011-02-17 15:50:10.732056235 +0000
+@@ -551,11 +551,6 @@
+     return AwtWindow::WmNcMouseDown(hitTest, x, y, button);
+ }
+ 
+-MsgRouting AwtFrame::WmWindowPosChanged(LPARAM windowPos) {
+-    return mrDoDefault;
+-}
+-
+-
+ // Override AwtWindow::Reshape() to handle minimized/maximized
+ // frames (see 6525850, 4065534)
+ void AwtFrame::Reshape(int x, int y, int width, int height)
+@@ -792,6 +787,11 @@
+ 
+ MsgRouting AwtFrame::WmSize(UINT type, int w, int h)
+ {
++    currentWmSizeState = type;
++    if (currentWmSizeState == SIZE_MINIMIZED) {
++        UpdateSecurityWarningVisibility();
++    }
++
+     if (m_ignoreWmSize) {
+         return mrDoDefault;
+     }
+@@ -879,7 +879,7 @@
+             ::SetFocus(NULL); // The KeyboardFocusManager will set focus later
+             type = java_awt_event_WindowEvent_WINDOW_GAINED_FOCUS;
+             isAppActive = TRUE;
+-            sm_focusedWindow = GetHWnd();
++	    AwtComponent::SetFocusedWindow(GetHWnd());
+ 
+             /*
+              * Fix for 4823903.
+@@ -922,7 +922,7 @@
+             }
+ 
+             // If actual focused window is not this Frame
+-            if (sm_focusedWindow != GetHWnd()) {
++            if (AwtComponent::GetFocusedWindow() != GetHWnd()) {
+ 
+                 // Check that the Frame is going to be really inactive (i.e. the opposite is not its owned window)
+                 if (opposite != NULL) {
+@@ -931,7 +931,7 @@
+                     if (wOpposite != NULL &&
+                         wOpposite->GetOwningFrameOrDialog() != this)
+                     {
+-                        AwtWindow *window = (AwtWindow *)AwtComponent::GetComponent(sm_focusedWindow);
++		        AwtWindow *window = (AwtWindow *)AwtComponent::GetComponent(AwtComponent::GetFocusedWindow());
+ 
+                         // If actual focused window is one of Frame's owned windows
+                         if (window != NULL && window->GetOwningFrameOrDialog() == this) {
+@@ -943,7 +943,7 @@
+ 
+             type = java_awt_event_WindowEvent_WINDOW_LOST_FOCUS;
+             isAppActive = FALSE;
+-            sm_focusedWindow = NULL;
++            AwtComponent::SetFocusedWindow(NULL);
+         }
+     }
+ 
+@@ -1137,7 +1137,7 @@
+     // - Alt hitting in IE while its menu is active (see 6374321).
+     // In both these cases we get WM_SETFOCUS without WM_ACTIVATE
+     // on the EmbeddedFrame.
+-    if (sm_focusedWindow != GetHWnd()) {
++    if (AwtComponent::GetFocusedWindow() != GetHWnd()) {
+         HWND oppositeToplevelHWnd = AwtComponent::GetTopLevelParentForWindow(hWndLostFocus);
+ 
+         // As we get WM_SETFOCUS from the native system we expect
+@@ -1165,7 +1165,7 @@
+ BOOL AwtFrame::deactivateEmbeddedFrameOnKillFocus(HWND hWndGotFocus) {
+     HWND oppositeToplevelHWnd = AwtComponent::GetTopLevelParentForWindow(hWndGotFocus);
+ 
+-    if (oppositeToplevelHWnd != sm_focusedWindow) {
++    if (oppositeToplevelHWnd != AwtComponent::GetFocusedWindow()) {
+         SynthesizeWmActivate(FALSE, oppositeToplevelHWnd);
+     }
+     return TRUE;
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Frame.h openjdk/jdk/src/windows/native/sun/windows/awt_Frame.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Frame.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Frame.h	2011-02-17 15:50:10.732056235 +0000
+@@ -108,7 +108,6 @@
+     MsgRouting WmNcMouseDown(WPARAM hitTest, int x, int y, int button);
+     MsgRouting WmNcMouseUp(WPARAM hitTest, int x, int y, int button);
+     MsgRouting WmGetIcon(WPARAM iconType, LRESULT& retVal);
+-    MsgRouting WmWindowPosChanged(LPARAM windowPos);
+ 
+     virtual MsgRouting WmSysCommand(UINT uCmdType, int xPos, int yPos);
+ 
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt.rc openjdk/jdk/src/windows/native/sun/windows/awt.rc
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt.rc	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt.rc	2011-02-17 15:50:10.728056549 +0000
+@@ -35,6 +35,13 @@
+ AWT_ICON     ICON    DISCARDABLE "awt.ico"
+ CHECK_BITMAP BITMAP  DISCARDABLE "check.bmp"
+ 
++// Note: the number of icons used is specified in the
++// securityWarningIconCounter constant in awt_Toolkit.cpp.
++SECURITY_WARNING_0  ICON    DISCARDABLE "security_warning_bw.ico"
++SECURITY_WARNING_1  ICON    DISCARDABLE "security_warning_int.ico"
++SECURITY_WARNING_2  ICON    DISCARDABLE "security_warning.ico"
++
++
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Version
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	2011-02-17 15:50:10.732056235 +0000
+@@ -56,6 +56,7 @@
+ #include "debug_mem.h"
+ 
+ #include "ComCtl32Util.h"
++#include "DllUtil.h"
+ 
+ #include "D3DPipelineManager.h"
+ 
+@@ -334,6 +335,8 @@
+     m_mouseDown = FALSE;
+ 
+     m_hGetMessageHook = 0;
++    m_hMouseLLHook = 0;
++    m_lastWindowUnderMouse = NULL;
+     m_timer = 0;
+ 
+     m_cmdIDs = new AwtCmdIDList();
+@@ -482,6 +485,7 @@
+     tk.UnregisterClass();
+ 
+     ::UnhookWindowsHookEx(tk.m_hGetMessageHook);
++    UninstallMouseLowLevelHook();
+ 
+     tk.m_mainThreadId = 0;
+ 
+@@ -955,6 +959,79 @@
+     CATCH_BAD_ALLOC_RET(0);
+ }
+ 
++void AwtToolkit::InstallMouseLowLevelHook()
++{
++    // We need the low-level hook since we need to process mouse move
++    // messages outside of our windows.
++    m_hMouseLLHook = ::SetWindowsHookEx(WH_MOUSE_LL,
++            (HOOKPROC)MouseLowLevelHook,
++            GetModuleHandle(), NULL);
++
++    // Reset the old value
++    m_lastWindowUnderMouse = NULL;
++}
++
++void AwtToolkit::UninstallMouseLowLevelHook()
++{
++    if (m_hMouseLLHook != 0) {
++        ::UnhookWindowsHookEx(m_hMouseLLHook);
++        m_hMouseLLHook = 0;
++    }
++}
++
++LRESULT CALLBACK AwtToolkit::MouseLowLevelHook(int code,
++        WPARAM wParam, LPARAM lParam)
++{
++    TRY;
++
++    if (code >= 0 && wParam == WM_MOUSEMOVE) {
++        POINT pt = ((MSLLHOOKSTRUCT*)lParam)->pt;
++
++        // We can't use GA_ROOTOWNER since in this case we'll go up to
++        // the root Java toplevel, not the actual owned toplevel.
++        HWND hwnd = ::GetAncestor(::WindowFromPoint(pt), GA_ROOT);
++
++        AwtToolkit& tk = AwtToolkit::GetInstance();
++
++        if (tk.m_lastWindowUnderMouse != hwnd) {
++            AwtWindow *fw = NULL, *tw = NULL;
++
++            if (tk.m_lastWindowUnderMouse) {
++                fw = (AwtWindow*)
++                    AwtComponent::GetComponent(tk.m_lastWindowUnderMouse);
++            }
++            if (hwnd) {
++                tw = (AwtWindow*)AwtComponent::GetComponent(hwnd);
++            }
++
++            tk.m_lastWindowUnderMouse = hwnd;
++
++            if (fw) {
++                fw->UpdateSecurityWarningVisibility();
++            }
++            // ... however, because we use GA_ROOT, we may find the warningIcon
++            // which is not a Java windows.
++            if (AwtWindow::IsWarningWindow(hwnd)) {
++                hwnd = ::GetParent(hwnd);
++                if (hwnd) {
++                    tw = (AwtWindow*)AwtComponent::GetComponent(hwnd);
++                }
++                tk.m_lastWindowUnderMouse = hwnd;
++            }
++            if (tw) {
++                tw->UpdateSecurityWarningVisibility();
++            }
++
++
++        }
++    }
++
++    return ::CallNextHookEx(AwtToolkit::GetInstance().m_hMouseLLHook, code,
++            wParam, lParam);
++
++    CATCH_BAD_ALLOC_RET(0);
++}
++
+ /*
+  * The main message loop
+  */
+@@ -1385,6 +1462,47 @@
+     return defaultIconSm;
+ }
+ 
++HICON AwtToolkit::GetSecurityWarningIcon(UINT index, UINT w, UINT h)
++{
++    //Note: should not exceed 10 because of the current implementation.
++    static const int securityWarningIconCounter = 3;
++
++    static HICON securityWarningIcon[securityWarningIconCounter]      = {NULL, NULL, NULL};;
++    static UINT securityWarningIconWidth[securityWarningIconCounter]  = {0, 0, 0};
++    static UINT securityWarningIconHeight[securityWarningIconCounter] = {0, 0, 0};
++
++    index = AwtToolkit::CalculateWave(index, securityWarningIconCounter);
++
++    if (securityWarningIcon[index] == NULL ||
++            w != securityWarningIconWidth[index] ||
++            h != securityWarningIconHeight[index])
++    {
++        if (securityWarningIcon[index] != NULL)
++        {
++            ::DestroyIcon(securityWarningIcon[index]);
++        }
++
++        static const wchar_t securityWarningIconName[] = L"SECURITY_WARNING_";
++        wchar_t iconResourceName[sizeof(securityWarningIconName) + 2];
++        ::ZeroMemory(iconResourceName, sizeof(iconResourceName));
++        wcscpy(iconResourceName, securityWarningIconName);
++
++        wchar_t strIndex[2];
++        ::ZeroMemory(strIndex, sizeof(strIndex));
++        strIndex[0] = L'0' + index;
++
++        wcscat(iconResourceName, strIndex);
++
++        securityWarningIcon[index] = (HICON)::LoadImage(GetModuleHandle(),
++                iconResourceName,
++                IMAGE_ICON, w, h, LR_DEFAULTCOLOR);
++        securityWarningIconWidth[index] = w;
++        securityWarningIconHeight[index] = h;
++    }
++
++    return securityWarningIcon[index];
++}
++
+ void AwtToolkit::SetHeapCheck(long flag) {
+     if (flag) {
+         printf("heap checking not supported with this build\n");
+@@ -1469,6 +1587,49 @@
+         (JNIEnv*)JNU_GetEnv(jvm, JNI_VERSION_1_2) : m_env;
+ }
+ 
++BOOL AwtToolkit::GetScreenInsets(int screenNum, RECT * rect)
++{
++    /* if primary display */
++    if (screenNum == 0) {
++        RECT rRW;
++        if (::SystemParametersInfo(SPI_GETWORKAREA,0,(void *) &rRW,0) == TRUE) {
++            rect->top = rRW.top;
++            rect->left = rRW.left;
++            rect->bottom = ::GetSystemMetrics(SM_CYSCREEN) - rRW.bottom;
++            rect->right = ::GetSystemMetrics(SM_CXSCREEN) - rRW.right;
++            return TRUE;
++        }
++    }
++    /* if additional display */
++    else {
++        MONITORINFO *miInfo;
++        miInfo = AwtWin32GraphicsDevice::GetMonitorInfo(screenNum);
++        if (miInfo) {
++            rect->top = miInfo->rcWork.top    - miInfo->rcMonitor.top;
++            rect->left = miInfo->rcWork.left   - miInfo->rcMonitor.left;
++            rect->bottom = miInfo->rcMonitor.bottom - miInfo->rcWork.bottom;
++            rect->right = miInfo->rcMonitor.right - miInfo->rcWork.right;
++            return TRUE;
++        }
++    }
++    return FALSE;
++}
++
++
++void AwtToolkit::GetWindowRect(HWND hWnd, LPRECT lpRect)
++{
++    try {
++        if (S_OK == DwmAPI::DwmGetWindowAttribute(hWnd,
++                DwmAPI::DWMWA_EXTENDED_FRAME_BOUNDS,
++                lpRect, sizeof(*lpRect)))
++        {
++            return;
++        }
++    } catch (const DllUtil::Exception &) {}
++
++    ::GetWindowRect(hWnd, lpRect);
++}
++
+ /************************************************************************
+  * Toolkit native methods
+  */
+@@ -1797,7 +1958,6 @@
+     CATCH_BAD_ALLOC_RET(0);
+ }
+ 
+-
+ /*
+  * Class:     sun_awt_windows_WToolkit
+  * Method:    getSreenInsets
+@@ -1809,34 +1969,17 @@
+                                               jint screen)
+ {
+     jobject insets = NULL;
+-    RECT rRW;
+-    MONITOR_INFO *miInfo;
++    RECT rect;
+ 
+     TRY;
+ 
+-/* if primary display */
+-   if (screen == 0) {
+-      if (::SystemParametersInfo(SPI_GETWORKAREA,0,(void *) &rRW,0) == TRUE) {
+-          insets = env->NewObject(env->FindClass("java/awt/Insets"),
+-             AwtToolkit::insetsMID,
+-             rRW.top,
+-             rRW.left,
+-             ::GetSystemMetrics(SM_CYSCREEN) - rRW.bottom,
+-             ::GetSystemMetrics(SM_CXSCREEN) - rRW.right);
+-      }
+-    }
+-
+-/* if additional display */
+-    else {
+-        miInfo = AwtWin32GraphicsDevice::GetMonitorInfo(screen);
+-        if (miInfo) {
+-            insets = env->NewObject(env->FindClass("java/awt/Insets"),
++    if (AwtToolkit::GetScreenInsets(screen, &rect)) {
++        insets = env->NewObject(env->FindClass("java/awt/Insets"),
+                 AwtToolkit::insetsMID,
+-                miInfo->rWork.top    - miInfo->rMonitor.top,
+-                miInfo->rWork.left   - miInfo->rMonitor.left,
+-                miInfo->rMonitor.bottom - miInfo->rWork.bottom,
+-                miInfo->rMonitor.right - miInfo->rWork.right);
+-        }
++                rect.top,
++                rect.left,
++                rect.bottom,
++                rect.right);
+     }
+ 
+     if (safe_ExceptionOccurred(env)) {
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.h openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.h	2011-02-17 15:50:10.732056235 +0000
+@@ -244,6 +244,8 @@
+                                              LPARAM lParam);
+     static LRESULT CALLBACK ForegroundIdleFilter(int code, WPARAM wParam,
+                                                  LPARAM lParam);
++    static LRESULT CALLBACK MouseLowLevelHook(int code, WPARAM wParam,
++            LPARAM lParam);
+ 
+     INLINE static AwtToolkit& GetInstance() { return theInstance; }
+     INLINE void SetPeer(JNIEnv *env, jobject wToolkit) {
+@@ -345,6 +347,30 @@
+     HICON GetAwtIcon();
+     HICON GetAwtIconSm();
+ 
++    // Calculate a wave-like value out of the integer 'value' and
++    // the specified period.
++    // The argument 'value' is an integer 0, 1, 2, ... *infinity*.
++    //
++    // Examples:
++    //    Period == 3
++    //    Generated sequence: 0 1 2 1 0 .....
++    //
++    //    Period == 4
++    //    Generated sequence: 0 1 2 3 2 1 0 .....
++    static inline UINT CalculateWave(UINT value, const UINT period) {
++        if (period < 2) {
++            return 0;
++        }
++        // -2 is necessary to avoid repeating extreme values (0 and period-1)
++        value %= period * 2 -2;
++        if (value >= period) {
++            value = period * 2 -2 - value;
++        }
++        return value;
++    }
++
++    HICON GetSecurityWarningIcon(UINT index, UINT w, UINT h);
++
+     /* Turns on/off dialog modality for the system. */
+     INLINE AwtDialog* SetModal(AwtDialog* frame) {
+         AwtDialog* previousDialog = m_pModalDialog;
+@@ -401,6 +427,7 @@
+     BOOL                m_mouseDown;
+ 
+     HHOOK m_hGetMessageHook;
++    HHOOK m_hMouseLLHook;
+     UINT_PTR  m_timer;
+ 
+     class AwtCmdIDList* m_cmdIDs;
+@@ -437,6 +464,24 @@
+  public:
+     static void SetEnv(JNIEnv *env);
+     static JNIEnv* GetEnv();
++
++    static BOOL GetScreenInsets(int screenNum, RECT * rect);
++
++    // If the DWM is active, this function uses
++    // DwmGetWindowAttribute()/DWMWA_EXTENDED_FRAME_BOUNDS.
++    // Otherwise, fall back to regular ::GetWindowRect().
++    // See 6711576 for more details.
++    static void GetWindowRect(HWND hWnd, LPRECT lpRect);
++
++ private:
++    // The window handle of a toplevel window last seen under the mouse cursor.
++    // See MouseLowLevelHook() for details.
++    HWND m_lastWindowUnderMouse;
++ public:
++    HWND GetWindowUnderMouse() { return m_lastWindowUnderMouse; }
++
++    void InstallMouseLowLevelHook();
++    void UninstallMouseLowLevelHook();
+ };
+ 
+ /*
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	2011-02-17 15:50:10.732056235 +0000
+@@ -31,6 +31,7 @@
+ #include "awt_Win32GraphicsDevice.h"
+ #include "Devices.h"
+ #include "WindowsFlags.h"
++#include "DllUtil.h"
+ 
+ BOOL DWMIsCompositionEnabled();
+ 
+@@ -91,13 +92,8 @@
+ /**
+  * Returns true if dwm composition is enabled, false if it is not applicable
+  * (if the OS is not Vista) or dwm composition is disabled.
+- *
+- * Note: since DWM composition state changes are very rare we load/unload the
+- * dll on every change.
+  */
+ BOOL DWMIsCompositionEnabled() {
+-    typedef HRESULT (WINAPI DwmIsCompositionEnabledFunc)(BOOL*);
+-
+     // cheaper to check than whether it's vista or not
+     if (dwmIsCompositionEnabled != DWM_COMP_UNDEFINED) {
+         return (BOOL)dwmIsCompositionEnabled;
+@@ -109,32 +105,22 @@
+     }
+ 
+     BOOL bRes = FALSE;
+-    HMODULE hDwmApiDll = ::LoadLibrary(TEXT("dwmapi.dll"));
+ 
+-    if (hDwmApiDll != NULL) {
+-        DwmIsCompositionEnabledFunc *lpDwmIsCompEnabled =
+-            (DwmIsCompositionEnabledFunc*)
+-                GetProcAddress(hDwmApiDll, "DwmIsCompositionEnabled");
+-        if (lpDwmIsCompEnabled != NULL) {
+-            BOOL bEnabled;
+-            HRESULT res = lpDwmIsCompEnabled(&bEnabled);
+-            if (SUCCEEDED(res)) {
+-                bRes = bEnabled;
+-                J2dTraceLn1(J2D_TRACE_VERBOSE, " composition enabled: %d",bRes);
+-            } else {
+-                J2dTraceLn1(J2D_TRACE_ERROR,
+-                            "IsDWMCompositionEnabled: error %x when detecting"\
+-                            "if composition is enabled", res);
+-            }
++    try {
++        BOOL bEnabled;
++        HRESULT res = DwmAPI::DwmIsCompositionEnabled(&bEnabled);
++        if (SUCCEEDED(res)) {
++            bRes = bEnabled;
++            J2dTraceLn1(J2D_TRACE_VERBOSE, " composition enabled: %d",bRes);
+         } else {
+-            J2dTraceLn(J2D_TRACE_ERROR,
+-                       "IsDWMCompositionEnabled: no DwmIsCompositionEnabled() "\
+-                       "in dwmapi.dll");
++            J2dTraceLn1(J2D_TRACE_ERROR,
++                    "IsDWMCompositionEnabled: error %x when detecting"\
++                    "if composition is enabled", res);
+         }
+-        ::FreeLibrary(hDwmApiDll);
+-    } else {
++    } catch (const DllUtil::Exception &) {
+         J2dTraceLn(J2D_TRACE_ERROR,
+-                   "IsDWMCompositionEnabled: error opening dwmapi.dll");
++                "IsDWMCompositionEnabled: no DwmIsCompositionEnabled() "\
++                "in dwmapi.dll or dwmapi.dll cannot be loaded");
+     }
+ 
+     dwmIsCompositionEnabled = bRes;
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-02-17 15:50:10.732056235 +0000
+@@ -30,6 +30,7 @@
+ #include "awt_Component.h"
+ #include "awt_Container.h"
+ #include "awt_Frame.h"
++#include "awt_Dialog.h"
+ #include "awt_Insets.h"
+ #include "awt_Panel.h"
+ #include "awt_Toolkit.h"
+@@ -38,6 +39,7 @@
+ #include "awt_Win32GraphicsDevice.h"
+ #include "awt_BitmapUtil.h"
+ #include "awt_IconCursor.h"
++#include "ComCtl32Util.h"
+ 
+ #include "java_awt_Insets.h"
+ #include <java_awt_Container.h>
+@@ -130,6 +132,11 @@
+     HBITMAP hBitmap;
+     jint width, height;
+ };
++// struct for _RepositionSecurityWarning() method
++struct RepositionSecurityWarningStruct {
++    jobject window;
++};
++
+ 
+ /************************************************************************
+  * AwtWindow fields
+@@ -138,6 +145,8 @@
+ jfieldID AwtWindow::warningStringID;
+ jfieldID AwtWindow::locationByPlatformID;
+ jfieldID AwtWindow::autoRequestFocusID;
++jfieldID AwtWindow::securityWarningWidthID;
++jfieldID AwtWindow::securityWarningHeightID;
+ 
+ jclass AwtWindow::wwindowPeerCls;
+ jmethodID AwtWindow::getActiveWindowsMID;
+@@ -147,11 +156,15 @@
+ jfieldID AwtWindow::sysWID;
+ jfieldID AwtWindow::sysHID;
+ 
++jmethodID AwtWindow::getWarningStringMID;
++jmethodID AwtWindow::calculateSecurityWarningPositionMID;
++
+ int AwtWindow::ms_instanceCounter = 0;
+ HHOOK AwtWindow::ms_hCBTFilter;
+ AwtWindow * AwtWindow::m_grabbedWindow = NULL;
+ HWND AwtWindow::sm_retainingHierarchyZOrderInShow = NULL;
+ BOOL AwtWindow::sm_resizing = FALSE;
++UINT AwtWindow::untrustedWindowsCounter = 0;
+ 
+ /************************************************************************
+  * AwtWindow class methods
+@@ -186,11 +199,30 @@
+     m_opaque = TRUE;
+     m_opacity = 0xff;
+ 
++
++    warningString = NULL;
++    warningWindow = NULL;
++    securityTooltipWindow = NULL;
++    securityWarningAnimationStage = 0;
++    currentWmSizeState = SIZE_RESTORED;
++
++    hContentBitmap = NULL;
++
+     ::InitializeCriticalSection(&contentBitmapCS);
+ }
+ 
+ AwtWindow::~AwtWindow()
+ {
++    if (warningString != NULL) {
++        delete [] warningString;
++    }
++    ::EnterCriticalSection(&contentBitmapCS);
++    if (hContentBitmap != NULL) {
++        ::DeleteObject(hContentBitmap);
++        hContentBitmap = NULL;
++    }
++    ::LeaveCriticalSection(&contentBitmapCS);
++    ::DeleteCriticalSection(&contentBitmapCS);
+ }
+ 
+ void AwtWindow::Dispose()
+@@ -230,10 +262,10 @@
+     }
+     m_grabbed = TRUE;
+     m_grabbedWindow = this;
+-    if (sm_focusedWindow == NULL) {
++    if (AwtComponent::GetFocusedWindow() == NULL) {
+         // we shouldn't perform grab in this case (see 4841881)
+         Ungrab();
+-    } else if (GetHWnd() != sm_focusedWindow) {
++    } else if (GetHWnd() != AwtComponent::GetFocusedWindow()) {
+         _ToFront(env->NewGlobalRef(GetPeer(env)));
+         // Global ref was deleted in _ToFront
+     }
+@@ -327,12 +359,40 @@
+     return mrDoDefault;
+ }
+ 
++void AwtWindow::RepositionSecurityWarning(JNIEnv *env)
++{
++    RECT rect;
++    CalculateWarningWindowBounds(env, &rect);
++
++    ::SetWindowPos(warningWindow, HWND_NOTOPMOST,
++            rect.left, rect.top,
++            rect.right - rect.left, rect.bottom - rect.top,
++            SWP_ASYNCWINDOWPOS | SWP_NOACTIVATE | SWP_NOZORDER
++            );
++}
++
+ MsgRouting AwtWindow::WmWindowPosChanged(LPARAM windowPos) {
+-    if (IsRetainingHierarchyZOrder() && ((WINDOWPOS *)windowPos)->flags & SWP_SHOWWINDOW) {
++    WINDOWPOS * wp = (WINDOWPOS *)windowPos;
++
++    if (IsRetainingHierarchyZOrder() && wp->flags & SWP_SHOWWINDOW) {
+         // By this time all the windows from the hierarchy are already notified about z-order change.
+         // Thus we may and we should reset the trigger in order not to affect other changes.
+         sm_retainingHierarchyZOrderInShow = NULL;
+     }
++
++    // Reposition the warning window
++    if (IsUntrusted() && warningWindow != NULL) {
++        if (wp->flags & SWP_HIDEWINDOW) {
++            UpdateSecurityWarningVisibility();
++        }
++
++        RepositionSecurityWarning((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2));
++
++        if (wp->flags & SWP_SHOWWINDOW) {
++            UpdateSecurityWarningVisibility();
++        }
++    }
++
+     return mrDoDefault;
+ }
+ 
+@@ -352,18 +412,591 @@
+     lpwc->cbWndExtra = DLGWINDOWEXTRA;
+ }
+ 
++bool AwtWindow::IsWarningWindow(HWND hWnd)
++{
++    const UINT len = 128;
++    TCHAR windowClassName[len];
++
++    ::RealGetWindowClass(hWnd, windowClassName, len);
++    return 0 == _tcsncmp(windowClassName,
++            AwtWindow::GetWarningWindowClassName(), len);
++}
+++
+ LRESULT CALLBACK AwtWindow::CBTFilter(int nCode, WPARAM wParam, LPARAM lParam)
+ {
+     if (nCode == HCBT_ACTIVATE || nCode == HCBT_SETFOCUS) {
+-        AwtComponent *comp = AwtComponent::GetComponent((HWND)wParam);
++        HWND hWnd = (HWND)wParam;
++        AwtComponent *comp = AwtComponent::GetComponent(hWnd);
+ 
+-        if (comp != NULL && comp->IsTopLevel() && !((AwtWindow*)comp)->IsFocusableWindow()) {
+-            return 1; // Don't change focus/activation.
++        if (comp == NULL) {
++            // Check if it's a security warning icon
++            // See: 5091224, 6181725, 6732583
++            if (AwtWindow::IsWarningWindow(hWnd)) {
++                return 1;
++            }
++        } else {
++	    if (comp->IsTopLevel() && !((AwtWindow*)comp)->IsFocusableWindow()) {
++	        return 1; // Don't change focus/activation.
++	    }
+         }
+     }
+     return ::CallNextHookEx(AwtWindow::ms_hCBTFilter, nCode, wParam, lParam);
+ }
+ 
++void AwtWindow::InitSecurityWarningSize(JNIEnv *env)
++{
++    warningWindowWidth = ::GetSystemMetrics(SM_CXSMICON);
++    warningWindowHeight = ::GetSystemMetrics(SM_CYSMICON);
++
++    jobject target = GetTarget(env);
++
++    env->SetIntField(target, AwtWindow::securityWarningWidthID,
++            warningWindowWidth);
++    env->SetIntField(target, AwtWindow::securityWarningHeightID,
++            warningWindowHeight);
++
++    env->DeleteLocalRef(target);
++}
++
++void AwtWindow::CreateHWnd(JNIEnv *env, LPCWSTR title,
++        DWORD windowStyle,
++        DWORD windowExStyle,
++        int x, int y, int w, int h,
++        HWND hWndParent, HMENU hMenu,
++        COLORREF colorForeground,
++        COLORREF colorBackground,
++        jobject peer)
++{
++    // Retrieve the warning string
++    // Note: we need to get it before CreateHWnd() happens because
++    // the isUntrusted() method may be invoked while the HWND
++    // is being created in response to some window messages.
++    jobject target = env->GetObjectField(peer, AwtObject::targetID);
++    jstring javaWarningString =
++        (jstring)env->CallObjectMethod(target, AwtWindow::getWarningStringMID);
++
++    if (javaWarningString != NULL) {
++        size_t length = env->GetStringLength(javaWarningString) + 1;
++        warningString = new WCHAR[length];
++        env->GetStringRegion(javaWarningString, 0,
++                static_cast<jsize>(length - 1), warningString);
++        warningString[length-1] = L'\0';
++
++        env->DeleteLocalRef(javaWarningString);
++    }
++    env->DeleteLocalRef(target);
++
++    AwtCanvas::CreateHWnd(env, title,
++            windowStyle,
++            windowExStyle,
++            x, y, w, h,
++            hWndParent, hMenu,
++            colorForeground,
++            colorBackground,
++            peer);
++
++    // Now we need to create the warning window.
++    CreateWarningWindow(env);
++}
++
++void AwtWindow::CreateWarningWindow(JNIEnv *env)
++{
++    if (!IsUntrusted()) {
++        return;
++    }
++
++    if (++AwtWindow::untrustedWindowsCounter == 1) {
++        AwtToolkit::GetInstance().InstallMouseLowLevelHook();
++    }
++
++    InitSecurityWarningSize(env);
++
++    RECT rect;
++    CalculateWarningWindowBounds(env, &rect);
++
++    RegisterWarningWindowClass();
++    warningWindow = ::CreateWindowEx(
++            WS_EX_NOACTIVATE | WS_EX_LAYERED,
++            GetWarningWindowClassName(),
++            warningString,
++            WS_POPUP,
++            rect.left, rect.top,
++            rect.right - rect.left, rect.bottom - rect.top,
++            GetHWnd(), // owner
++            NULL, // menu
++            AwtToolkit::GetInstance().GetModuleHandle(),
++            NULL // lParam
++            );
++    if (warningWindow == NULL) {
++        //XXX: actually this is bad... We didn't manage to create the widow.
++        return;
++    }
++
++    HICON hIcon = GetSecurityWarningIcon();
++
++    ICONINFO ii;
++    ::GetIconInfo(hIcon, &ii);
++
++    //Note: we assume that every security icon has exactly the same shape.
++    HRGN rgn = BitmapUtil::BitmapToRgn(ii.hbmColor);
++    if (rgn) {
++        ::SetWindowRgn(warningWindow, rgn, TRUE);
++    }
++
++    // Now we need to create the tooltip control for this window.
++    if (!ComCtl32Util::GetInstance().IsToolTipControlInitialized()) {
++        return;
++    }
++
++    securityTooltipWindow = ::CreateWindowEx(
++            WS_EX_TOPMOST,
++            TOOLTIPS_CLASS,
++            NULL,
++            WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
++            CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
++            warningWindow,
++            NULL,
++            AwtToolkit::GetInstance().GetModuleHandle(),
++            NULL
++            );
++
++    ::SetWindowPos(securityTooltipWindow,
++            HWND_TOPMOST, 0, 0, 0, 0,
++            SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
++
++
++    // We currently don't expect changing the size of the window,
++    // hence we may not care of updating the TOOL position/size.
++    ::GetClientRect(warningWindow, &rect);
++
++    TOOLINFO ti;
++
++    ti.cbSize = sizeof(ti);
++    ti.uFlags = TTF_SUBCLASS;
++    ti.hwnd = warningWindow;
++    ti.hinst = AwtToolkit::GetInstance().GetModuleHandle();
++    ti.uId = 0;
++    ti.lpszText = warningString;
++    ti.rect.left = rect.left;
++    ti.rect.top = rect.top;
++    ti.rect.right = rect.right;
++    ti.rect.bottom = rect.bottom;
++
++    ::SendMessage(securityTooltipWindow, TTM_ADDTOOL,
++            0, (LPARAM) (LPTOOLINFO) &ti);
++}
++
++void AwtWindow::DestroyWarningWindow()
++{
++    if (!IsUntrusted()) {
++        return;
++    }
++    if (--AwtWindow::untrustedWindowsCounter == 0) {
++        AwtToolkit::GetInstance().UninstallMouseLowLevelHook();
++    }
++    if (warningWindow != NULL) {
++        // Note that the warningWindow is an owned window, and hence
++        // it would be destroyed automatically. However, the window
++        // class may only be unregistered if there's no any single
++        // window left using this class. Thus, we're destroying the
++        // warning window manually. Note that the tooltip window
++        // will be destroyed automatically because it's an owned
++        // window as well.
++        ::DestroyWindow(warningWindow);
++        warningWindow = NULL;
++        securityTooltipWindow = NULL;
++        UnregisterWarningWindowClass();
++    }
++}
++
++void AwtWindow::DestroyHWnd()
++{
++    DestroyWarningWindow();
++    AwtCanvas::DestroyHWnd();
++}
++
++LPCTSTR AwtWindow::GetWarningWindowClassName()
++{
++    return TEXT("SunAwtWarningWindow");
++}
++
++void AwtWindow::FillWarningWindowClassInfo(WNDCLASS *lpwc)
++{
++    lpwc->style         = 0L;
++    lpwc->lpfnWndProc   = (WNDPROC)WarningWindowProc;
++    lpwc->cbClsExtra    = 0;
++    lpwc->cbWndExtra    = 0;
++    lpwc->hInstance     = AwtToolkit::GetInstance().GetModuleHandle(),
++    lpwc->hIcon         = AwtToolkit::GetInstance().GetAwtIcon();
++    lpwc->hCursor       = ::LoadCursor(NULL, IDC_ARROW);
++    lpwc->hbrBackground = NULL;
++    lpwc->lpszMenuName  = NULL;
++    lpwc->lpszClassName = AwtWindow::GetWarningWindowClassName();
++}
++
++void AwtWindow::RegisterWarningWindowClass()
++{
++    WNDCLASS  wc;
++
++    ::ZeroMemory(&wc, sizeof(wc));
++
++    if (!::GetClassInfo(AwtToolkit::GetInstance().GetModuleHandle(),
++                        AwtWindow::GetWarningWindowClassName(), &wc))
++    {
++        AwtWindow::FillWarningWindowClassInfo(&wc);
++        ATOM atom = ::RegisterClass(&wc);
++        DASSERT(atom != 0);
++    }
++}
++
++void AwtWindow::UnregisterWarningWindowClass()
++{
++    ::UnregisterClass(AwtWindow::GetWarningWindowClassName(), AwtToolkit::GetInstance().GetModuleHandle());
++}
++
++HICON AwtWindow::GetSecurityWarningIcon()
++{
++    HICON ico = AwtToolkit::GetInstance().GetSecurityWarningIcon(securityWarningAnimationStage,
++            warningWindowWidth, warningWindowHeight);
++    return ico;
++}
++
++// This function calculates the bounds of the warning window and stores them
++// into the RECT structure pointed by the argument rect.
++void AwtWindow::CalculateWarningWindowBounds(JNIEnv *env, LPRECT rect)
++{
++    RECT windowBounds;
++    AwtToolkit::GetWindowRect(GetHWnd(), &windowBounds);
++
++    jobject target = GetTarget(env);
++    jobject point2D = env->CallObjectMethod(target,
++            calculateSecurityWarningPositionMID,
++            (jdouble)windowBounds.left, (jdouble)windowBounds.top,
++            (jdouble)(windowBounds.right - windowBounds.left),
++            (jdouble)(windowBounds.bottom - windowBounds.top));
++    env->DeleteLocalRef(target);
++
++    static jclass point2DClassID = NULL;
++    static jmethodID point2DGetXMID = NULL;
++    static jmethodID point2DGetYMID = NULL;
++
++    if (point2DClassID == NULL) {
++        jclass point2DClassIDLocal = env->FindClass("java/awt/geom/Point2D");
++        point2DClassID = (jclass)env->NewGlobalRef(point2DClassIDLocal);
++        env->DeleteLocalRef(point2DClassIDLocal);
++    }
++
++    if (point2DGetXMID == NULL) {
++        point2DGetXMID = env->GetMethodID(point2DClassID, "getX", "()D");
++    }
++    if (point2DGetYMID == NULL) {
++        point2DGetYMID = env->GetMethodID(point2DClassID, "getY", "()D");
++    }
++
++
++    int x = (int)env->CallDoubleMethod(point2D, point2DGetXMID);
++    int y = (int)env->CallDoubleMethod(point2D, point2DGetYMID);
++
++    env->DeleteLocalRef(point2D);
++
++    //Make sure the warning is not far from the window bounds
++    x = max(x, windowBounds.left - (int)warningWindowWidth - 2);
++    x = min(x, windowBounds.right + (int)warningWindowWidth + 2);
++
++    y = max(y, windowBounds.top - (int)warningWindowHeight - 2);
++    y = min(y, windowBounds.bottom + (int)warningWindowHeight + 2);
++
++    // Now make sure the warning window is visible on the screen
++    HMONITOR hmon = MonitorFromWindow(GetHWnd(), MONITOR_DEFAULTTOPRIMARY);
++    DASSERT(hmon != NULL);
++
++    RECT monitorBounds;
++    RECT monitorInsets;
++
++    MonitorBounds(hmon, &monitorBounds);
++    if (!AwtToolkit::GetScreenInsets(m_screenNum, &monitorInsets)) {
++        ::ZeroMemory(&monitorInsets, sizeof(monitorInsets));
++    }
++
++    x = max(x, monitorBounds.left + monitorInsets.left);
++    x = min(x, monitorBounds.right - monitorInsets.right - (int)warningWindowWidth);
++
++    y = max(y, monitorBounds.top + monitorInsets.top);
++    y = min(y, monitorBounds.bottom - monitorInsets.bottom - (int)warningWindowHeight);
++
++    rect->left = x;
++    rect->top = y;
++    rect->right = rect->left + warningWindowWidth;
++    rect->bottom = rect->top + warningWindowHeight;
++}
++
++LRESULT CALLBACK AwtWindow::WarningWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
++{
++    switch (uMsg) {
++        case WM_PAINT:
++            PaintWarningWindow(hwnd);
++            return 0;
++
++        case WM_MOUSEACTIVATE:
++            {
++                // Retrive the owner of the warning window.
++                HWND javaWindow = ::GetParent(hwnd);
++                if (javaWindow) {
++                    // If the window is blocked by a modal dialog, substitute
++                    // its handle with the topmost blocker.
++                    HWND topmostBlocker = GetTopmostModalBlocker(javaWindow);
++                    if (::IsWindow(topmostBlocker)) {
++                        javaWindow = topmostBlocker;
++                    }
++
++                    ::BringWindowToTop(javaWindow);
++
++                    AwtWindow * window =
++                        (AwtWindow*)AwtComponent::GetComponent(javaWindow);
++                    if (window == NULL) {
++                        // Quite unlikely to go into here, but it's way better
++                        // than getting a crash.
++                        ::SetForegroundWindow(javaWindow);
++                    } else {
++                        // Activate the window if it is focusable and inactive
++                        if (window->IsFocusableWindow() &&
++                                javaWindow != ::GetActiveWindow()) {
++                            ::SetForegroundWindow(javaWindow);
++                        } else {
++                            // ...otherwise just start the animation.
++                            window->StartSecurityAnimation(akShow);
++                        }
++                    }
++
++                    // In every case if there's a top-most blocker, we need to
++                    // enable modal animation.
++                    if (::IsWindow(topmostBlocker)) {
++                        AwtDialog::AnimateModalBlocker(topmostBlocker);
++                    }
++                }
++                return MA_NOACTIVATEANDEAT;
++            }
++    }
++    return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
++}
++
++void AwtWindow::PaintWarningWindow(HWND warningWindow)
++{
++    RECT updateRect;
++
++    if (!::GetUpdateRect(warningWindow, &updateRect, FALSE)) {
++        // got nothing to update
++        return;
++    }
++
++    PAINTSTRUCT ps;
++    HDC hdc = ::BeginPaint(warningWindow, &ps);
++    if (hdc == NULL) {
++        // indicates an error
++        return;
++    }
++
++    PaintWarningWindow(warningWindow, hdc);
++
++    ::EndPaint(warningWindow, &ps);
++}
++
++void AwtWindow::PaintWarningWindow(HWND warningWindow, HDC hdc)
++{
++    HWND javaWindow = ::GetParent(warningWindow);
++
++    AwtWindow * window = (AwtWindow*)AwtComponent::GetComponent(javaWindow);
++    if (window == NULL) {
++        return;
++    }
++
++    ::DrawIconEx(hdc, 0, 0, window->GetSecurityWarningIcon(),
++            window->warningWindowWidth, window->warningWindowHeight,
++            0, NULL, DI_NORMAL);
++}
++
++static const UINT_PTR IDT_AWT_SECURITYANIMATION = 0x102;
++
++// Approximately 6 times a second. 0.75 seconds total.
++static const UINT securityAnimationTimerElapse = 150;
++static const UINT securityAnimationMaxIterations = 5;
++
++void AwtWindow::RepaintWarningWindow()
++{
++    HDC hdc = ::GetDC(warningWindow);
++    PaintWarningWindow(warningWindow, hdc);
++    ::ReleaseDC(warningWindow, hdc);
++}
++
++void AwtWindow::StartSecurityAnimation(AnimationKind kind)
++{
++    if (!IsUntrusted()) {
++        return;
++    }
++    if (warningWindow == NULL) {
++        return;
++    }
++
++    securityAnimationKind = kind;
++
++    securityWarningAnimationStage = 1;
++    ::SetTimer(GetHWnd(), IDT_AWT_SECURITYANIMATION,
++            securityAnimationTimerElapse, NULL);
++
++    if (securityAnimationKind == akShow) {
++        ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
++                SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
++                SWP_SHOWWINDOW);
++
++        ::SetLayeredWindowAttributes(warningWindow, RGB(0, 0, 0),
++                0xFF, LWA_ALPHA);
++        ::RedrawWindow(warningWindow, NULL, NULL,
++                RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
++    }
++}
++
++void AwtWindow::StopSecurityAnimation()
++{
++    if (!IsUntrusted()) {
++        return;
++    }
++    if (warningWindow == NULL) {
++        return;
++    }
++
++    securityWarningAnimationStage = 0;
++    ::KillTimer(GetHWnd(), IDT_AWT_SECURITYANIMATION);
++
++    switch (securityAnimationKind) {
++        case akHide:
++        case akPreHide:
++            ::SetWindowPos(warningWindow, HWND_NOTOPMOST, 0, 0, 0, 0,
++                    SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE |
++                    SWP_HIDEWINDOW);
++            break;
++        case akShow:
++            RepaintWarningWindow();
++            break;
++    }
++
++    securityAnimationKind = akNone;
++}
++
++MsgRouting AwtWindow::WmTimer(UINT_PTR timerID)
++{
++    if (timerID != IDT_AWT_SECURITYANIMATION) {
++        return mrPassAlong;
++    }
++
++    if (securityWarningAnimationStage == 0) {
++        return mrConsume;
++    }
++
++    securityWarningAnimationStage++;
++    if (securityWarningAnimationStage >= securityAnimationMaxIterations) {
++        if (securityAnimationKind == akPreHide) {
++            // chain real hiding
++            StartSecurityAnimation(akHide);
++        } else {
++            StopSecurityAnimation();
++        }
++    } else {
++        switch (securityAnimationKind) {
++            case akHide:
++                {
++                    BYTE opacity = ((int)0xFF *
++                            (securityAnimationMaxIterations -
++                             securityWarningAnimationStage)) /
++                        securityAnimationMaxIterations;
++                    ::SetLayeredWindowAttributes(warningWindow,
++                            RGB(0, 0, 0), opacity, LWA_ALPHA);
++                }
++                break;
++            case akShow:
++            case akNone: // quite unlikely, but quite safe
++                RepaintWarningWindow();
++                break;
++        }
++    }
++
++    return mrConsume;
++}
++
++// The security warning is visible if:
++//    1. The window has the keyboard window focus, OR
++//    2. The mouse pointer is located within the window bounds,
++//       or within the security warning icon.
++void AwtWindow::UpdateSecurityWarningVisibility()
++{
++    if (!IsUntrusted()) {
++        return;
++    }
++    if (warningWindow == NULL) {
++        return;
++    }
++
++    bool show = false;
++
++    if (IsVisible() && currentWmSizeState != SIZE_MINIMIZED) {
++        if (AwtComponent::GetFocusedWindow() == GetHWnd()) {
++            show = true;
++        }
++
++        HWND hwnd = AwtToolkit::GetInstance().GetWindowUnderMouse();
++        if (hwnd == GetHWnd()) {
++            show = true;
++        }
++        if (hwnd == warningWindow) {
++            show = true;
++        }
++    }
++
++    if (show && (!::IsWindowVisible(warningWindow) ||
++                securityAnimationKind == akHide ||
++                securityAnimationKind == akPreHide)) {
++        StartSecurityAnimation(akShow);
++    }
++    if (!show && ::IsWindowVisible(warningWindow)) {
++        StartSecurityAnimation(akPreHide);
++    }
++}
++
++void AwtWindow::FocusedWindowChanged(HWND from, HWND to)
++{
++    AwtWindow * fw = (AwtWindow *)AwtComponent::GetComponent(from);
++    AwtWindow * tw = (AwtWindow *)AwtComponent::GetComponent(to);
++
++    if (fw != NULL) {
++        fw->UpdateSecurityWarningVisibility();
++    }
++    if (tw != NULL) {
++        tw->UpdateSecurityWarningVisibility();
++
++        // Flash on receiving the keyboard focus even if the warning
++        // has already been shown (e.g. by hovering with the mouse)
++        tw->StartSecurityAnimation(akShow);
++    }
++}
++
++void AwtWindow::_RepositionSecurityWarning(void* param)
++{
++    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
++
++    RepositionSecurityWarningStruct *rsws =
++        (RepositionSecurityWarningStruct *)param;
++    jobject self = rsws->window;
++
++    PDATA pData;
++    JNI_CHECK_PEER_GOTO(self, ret);
++    AwtWindow *window = (AwtWindow *)pData;
++
++    window->RepositionSecurityWarning(env);
++
++  ret:
++    env->DeleteGlobalRef(self);
++    delete rsws;
++}
++
+ /* Create a new AwtWindow object and window.   */
+ AwtWindow* AwtWindow::Create(jobject self, jobject parent)
+ {
+@@ -672,23 +1305,6 @@
+     ::GetClientRect(GetHWnd(), &inside);
+     ::GetWindowRect(GetHWnd(), &outside);
+ 
+-    jobject target = GetTarget(env);
+-    jstring warningString =
+-      (jstring)(env)->GetObjectField(target, AwtWindow::warningStringID);
+-    if (warningString != NULL) {
+-        ::CopyRect(&inside, &outside);
+-        DefWindowProc(WM_NCCALCSIZE, FALSE, (LPARAM)&inside);
+-        /*
+-         * Fix for BugTraq ID 4304024.
+-         * Calculate client rectangle in client coordinates.
+-         */
+-        VERIFY(::OffsetRect(&inside, -inside.left, -inside.top));
+-        extraBottomInsets = ::GetSystemMetrics(SM_CYCAPTION) +
+-            ((GetStyle() & WS_THICKFRAME) ? 2 : -2);
+-    }
+-    env->DeleteLocalRef(target);
+-    env->DeleteLocalRef(warningString);
+-
+     /* Update our inset member */
+     if (outside.right - outside.left > 0 && outside.bottom - outside.top > 0) {
+         ::MapWindowPoints(GetHWnd(), 0, (LPPOINT)&inside, 2);
+@@ -926,13 +1542,13 @@
+         type = java_awt_event_WindowEvent_WINDOW_GAINED_FOCUS;
+         AwtToolkit::GetInstance().
+             InvokeFunctionLater(BounceActivation, this);
+-        sm_focusedWindow = GetHWnd();
++        AwtComponent::SetFocusedWindow(GetHWnd());
+     } else {
+         if (m_grabbedWindow != NULL && !m_grabbedWindow->IsOneOfOwnersOf(this)) {
+             m_grabbedWindow->Ungrab();
+         }
+         type = java_awt_event_WindowEvent_WINDOW_LOST_FOCUS;
+-        sm_focusedWindow = NULL;
++        AwtComponent::SetFocusedWindow(NULL);
+     }
+ 
+     SendWindowEvent(type, opposite);
+@@ -984,7 +1600,7 @@
+     HWND hwndSelf = GetHWnd();
+     HWND hwndParent = ::GetParent(hwndSelf);
+ 
+-    if (!show && IsSimpleWindow() && hwndSelf == sm_focusedWindow &&
++    if (!show && IsSimpleWindow() && hwndSelf == AwtComponent::GetFocusedWindow() &&
+         hwndParent != NULL && ::IsWindowVisible(hwndParent))
+     {
+         ::PostMessage(hwndParent, WM_ACTIVATE, (WPARAM)WA_ACTIVE, (LPARAM)hwndSelf);
+@@ -1086,7 +1702,10 @@
+  */
+ MsgRouting AwtWindow::WmSize(UINT type, int w, int h)
+ {
++    currentWmSizeState = type;
++
+     if (type == SIZE_MINIMIZED) {
++        UpdateSecurityWarningVisibility();
+         return mrDoDefault;
+     }
+ 
+@@ -1150,102 +1769,18 @@
+     if (env->EnsureLocalCapacity(2) < 0) {
+         return mrConsume;
+     }
+-    jobject target = GetTarget(env);
+-    jstring warningString =
+-      (jstring)(env)->GetObjectField(target, AwtWindow::warningStringID);
+-    if (warningString != NULL) {
+-        RECT r;
+-        ::CopyRect(&r, &lpncsp->rgrc[0]);
+-        retVal = static_cast<UINT>(DefWindowProc(WM_NCCALCSIZE, fCalcValidRects,
+-        reinterpret_cast<LPARAM>(lpncsp)));
+-
+-        /* Adjust non-client area for warning banner space. */
+-        m_warningRect.left = lpncsp->rgrc[0].left;
+-        m_warningRect.right = lpncsp->rgrc[0].right;
+-        m_warningRect.bottom = lpncsp->rgrc[0].bottom;
+-        m_warningRect.top =
+-            m_warningRect.bottom - ::GetSystemMetrics(SM_CYCAPTION);
+-        if (GetStyle() & WS_THICKFRAME) {
+-            m_warningRect.top -= 2;
+-        } else {
+-            m_warningRect.top += 2;
+-        }
+-
+-        lpncsp->rgrc[0].bottom = (m_warningRect.top >= lpncsp->rgrc[0].top)
+-            ? m_warningRect.top
+-            : lpncsp->rgrc[0].top;
+-
+-        /* Convert to window-relative coordinates. */
+-        ::OffsetRect(&m_warningRect, -r.left, -r.top);
+-
+-        /* Notify target of Insets change. */
+-        if (HasValidRect()) {
+-            UpdateInsets(NULL);
+-        }
+-
+-        mrRetVal = mrConsume;
+-    } else {
+-        // WM_NCCALCSIZE is usually in response to a resize, but
+-        // also can be triggered by SetWindowPos(SWP_FRAMECHANGED),
+-        // which means the insets will have changed - rnk 4/7/1998
+-        retVal = static_cast<UINT>(DefWindowProc(
+-        WM_NCCALCSIZE, fCalcValidRects, reinterpret_cast<LPARAM>(lpncsp)));
+-        if (HasValidRect()) {
+-            UpdateInsets(NULL);
+-        }
+-        mrRetVal = mrConsume;
++    // WM_NCCALCSIZE is usually in response to a resize, but
++    // also can be triggered by SetWindowPos(SWP_FRAMECHANGED),
++    // which means the insets will have changed - rnk 4/7/1998
++    retVal = static_cast<UINT>(DefWindowProc(
++                WM_NCCALCSIZE, fCalcValidRects, reinterpret_cast<LPARAM>(lpncsp)));
++    if (HasValidRect()) {
++        UpdateInsets(NULL);
+     }
+-    env->DeleteLocalRef(target);
+-    env->DeleteLocalRef(warningString);
++    mrRetVal = mrConsume;
+     return mrRetVal;
+ }
+ 
+-MsgRouting AwtWindow::WmNcPaint(HRGN hrgn)
+-{
+-    DefWindowProc(WM_NCPAINT, (WPARAM)hrgn, 0);
+-
+-    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+-    if (env->EnsureLocalCapacity(2) < 0) {
+-        return mrConsume;
+-    }
+-    jobject target = GetTarget(env);
+-    jstring warningString =
+-      (jstring)(env)->GetObjectField(target, AwtWindow::warningStringID);
+-    if (warningString != NULL) {
+-        RECT r;
+-        ::CopyRect(&r, &m_warningRect);
+-        HDC hDC = ::GetWindowDC(GetHWnd());
+-        DASSERT(hDC);
+-        int iSaveDC = ::SaveDC(hDC);
+-        VERIFY(::SelectClipRgn(hDC, NULL) != NULL);
+-        VERIFY(::FillRect(hDC, &m_warningRect, (HBRUSH)::GetStockObject(BLACK_BRUSH)));
+-
+-        if (GetStyle() & WS_THICKFRAME) {
+-            /* draw edge */
+-            VERIFY(::DrawEdge(hDC, &r, EDGE_RAISED, BF_TOP));
+-            r.top += 2;
+-            VERIFY(::DrawEdge(hDC, &r, EDGE_SUNKEN, BF_RECT));
+-            ::InflateRect(&r, -2, -2);
+-        }
+-
+-        /* draw warning text */
+-        LPWSTR text = TO_WSTRING(warningString);
+-        VERIFY(::SetBkColor(hDC, ::GetSysColor(COLOR_BTNFACE)) != CLR_INVALID);
+-        VERIFY(::SetTextColor(hDC, ::GetSysColor(COLOR_BTNTEXT)) != CLR_INVALID);
+-        VERIFY(::SelectObject(hDC, ::GetStockObject(DEFAULT_GUI_FONT)) != NULL);
+-        VERIFY(::SetTextAlign(hDC, TA_LEFT | TA_BOTTOM) != GDI_ERROR);
+-        VERIFY(::ExtTextOutW(hDC, r.left+2, r.bottom-1,
+-                             ETO_CLIPPED | ETO_OPAQUE,
+-                             &r, text, static_cast<UINT>(wcslen(text)), NULL));
+-        VERIFY(::RestoreDC(hDC, iSaveDC));
+-        ::ReleaseDC(GetHWnd(), hDC);
+-    }
+-
+-    env->DeleteLocalRef(target);
+-    env->DeleteLocalRef(warningString);
+-    return mrConsume;
+-}
+-
+ MsgRouting AwtWindow::WmNcHitTest(UINT x, UINT y, LRESULT& retVal)
+ {
+     // If this window is blocked by modal dialog, return HTCLIENT for any point of it.
+@@ -1474,6 +2009,19 @@
+     }
+ }
+ 
++HWND AwtWindow::GetTopmostModalBlocker(HWND window)
++{
++    HWND ret, blocker = NULL;
++
++    do {
++        ret = blocker;
++        blocker = AwtWindow::GetModalBlocker(window);
++        window = blocker;
++    } while (::IsWindow(blocker));
++
++    return ret;
++}
++
+ void AwtWindow::FlashWindowEx(HWND hWnd, UINT count, DWORD timeout, DWORD flags) {
+     FLASHWINFO fi;
+     fi.cbSize = sizeof(fi);
+@@ -2353,8 +2901,16 @@
+         env->GetFieldID(cls, "warningString", "Ljava/lang/String;");
+     AwtWindow::locationByPlatformID =
+         env->GetFieldID(cls, "locationByPlatform", "Z");
++    AwtWindow::securityWarningWidthID =
++        env->GetFieldID(cls, "securityWarningWidth", "I");
++    AwtWindow::securityWarningHeightID =
++        env->GetFieldID(cls, "securityWarningHeight", "I");
++    AwtWindow::getWarningStringMID =
++        env->GetMethodID(cls, "getWarningString", "()Ljava/lang/String;");
+     AwtWindow::autoRequestFocusID =
+         env->GetFieldID(cls, "autoRequestFocus", "Z");
++    AwtWindow::calculateSecurityWarningPositionMID =
++        env->GetMethodID(cls, "calculateSecurityWarningPosition", "(DDDD)Ljava/awt/geom/Point2D;");
+ 
+     CATCH_BAD_ALLOC;
+ }
+@@ -2880,5 +3436,27 @@
+ 
+     CATCH_BAD_ALLOC;
+ }
++
++/*
++ * Class:     sun_awt_windows_WWindowPeer
++ * Method:    repositionSecurityWarning
++ * Signature: ()V
++ */
++JNIEXPORT void JNICALL
++Java_sun_awt_windows_WWindowPeer_repositionSecurityWarning(JNIEnv *env,
++        jobject self)
++{
++    TRY;
++
++    RepositionSecurityWarningStruct *rsws =
++        new RepositionSecurityWarningStruct;
++    rsws->window = env->NewGlobalRef(self);
++
++    AwtToolkit::GetInstance().InvokeFunction(
++            AwtWindow::_RepositionSecurityWarning, rsws);
++    // global refs and mds are deleted in _RepositionSecurityWarning
++
++    CATCH_BAD_ALLOC;
++}
+ 
+ } /* extern "C" */
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h openjdk/jdk/src/windows/native/sun/windows/awt_Window.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h	2011-02-17 15:43:31.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.h	2011-02-17 15:50:10.732056235 +0000
+@@ -57,6 +57,8 @@
+     static jfieldID locationByPlatformID;
+     static jfieldID screenID; /* screen number passed over from WindowPeer */
+     static jfieldID autoRequestFocusID;
++    static jfieldID securityWarningWidthID;
++    static jfieldID securityWarningHeightID;
+ 
+     /* WWindowPeer class */
+     static jclass wwindowPeerCls;
+@@ -69,6 +71,9 @@
+     static jfieldID sysWID;
+     static jfieldID sysHID;
+ 
++    static jmethodID getWarningStringMID;
++    static jmethodID calculateSecurityWarningPositionMID;
++
+     AwtWindow();
+     virtual ~AwtWindow();
+ 
+@@ -158,6 +163,8 @@
+     static void SetModalBlocker(HWND window, HWND blocker);
+     static void SetAndActivateModalBlocker(HWND window, HWND blocker);
+ 
++    static HWND GetTopmostModalBlocker(HWND window);
++
+     /*
+      * Windows message handler functions
+      */
+@@ -175,13 +182,13 @@
+     virtual MsgRouting WmSettingChange(UINT wFlag, LPCTSTR pszSection);
+     virtual MsgRouting WmNcCalcSize(BOOL fCalcValidRects,
+                                     LPNCCALCSIZE_PARAMS lpncsp, LRESULT& retVal);
+-    virtual MsgRouting WmNcPaint(HRGN hrgn);
+     virtual MsgRouting WmNcHitTest(UINT x, UINT y, LRESULT& retVal);
+     virtual MsgRouting WmNcMouseDown(WPARAM hitTest, int x, int y, int button);
+     virtual MsgRouting WmGetIcon(WPARAM iconType, LRESULT& retVal);
+     virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
+     virtual MsgRouting WmWindowPosChanging(LPARAM windowPos);
+     virtual MsgRouting WmWindowPosChanged(LPARAM windowPos);
++    virtual MsgRouting WmTimer(UINT_PTR timerID);
+ 
+     virtual MsgRouting HandleEvent(MSG *msg, BOOL synthetic);
+     virtual void WindowResized();
+@@ -216,11 +223,22 @@
+     static void _SetOpacity(void* param);
+     static void _SetOpaque(void* param);
+     static void _UpdateWindow(void* param);
++    static void _RepositionSecurityWarning(void* param);
+ 
+     inline static BOOL IsResizing() {
+         return sm_resizing;
+     }
+ 
++    virtual void CreateHWnd(JNIEnv *env, LPCWSTR title,
++            DWORD windowStyle, DWORD windowExStyle,
++            int x, int y, int w, int h,
++            HWND hWndParent, HMENU hMenu,
++            COLORREF colorForeground, COLORREF colorBackground,
++            jobject peer);
++    virtual void DestroyHWnd();
++
++    static void FocusedWindowChanged(HWND from, HWND to);
++
+ private:
+     static int ms_instanceCounter;
+     static HHOOK ms_hCBTFilter;
+@@ -262,9 +280,56 @@
+     UINT contentWidth;
+     UINT contentHeight;
+ 
+-    void RedrawWindow();
+     void SetTranslucency(BYTE opacity, BOOL opaque);
++    void UpdateWindow(int width, int height, HBITMAP hBitmap);
+     void UpdateWindowImpl(int width, int height, HBITMAP hBitmap);
++    void RedrawWindow();
++
++    static UINT untrustedWindowsCounter;
++
++    WCHAR * warningString;
++
++    // The warning icon
++    HWND warningWindow;
++    // The tooltip that appears when hovering the icon
++    HWND securityTooltipWindow;
++
++    UINT warningWindowWidth;
++    UINT warningWindowHeight;
++    void InitSecurityWarningSize(JNIEnv *env);
++    HICON GetSecurityWarningIcon();
++
++    void CreateWarningWindow(JNIEnv *env);
++    void DestroyWarningWindow();
++    static LPCTSTR GetWarningWindowClassName();
++    void FillWarningWindowClassInfo(WNDCLASS *lpwc);
++    void RegisterWarningWindowClass();
++    void UnregisterWarningWindowClass();
++    static LRESULT CALLBACK WarningWindowProc(
++            HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
++
++    static void PaintWarningWindow(HWND warningWindow);
++    static void PaintWarningWindow(HWND warningWindow, HDC hdc);
++    void RepaintWarningWindow();
++    void CalculateWarningWindowBounds(JNIEnv *env, LPRECT rect);
++
++    void AnimateSecurityWarning(bool enable);
++    UINT securityWarningAnimationStage;
++
++    enum AnimationKind {
++        akNone, akShow, akPreHide, akHide
++    };
++
++    AnimationKind securityAnimationKind;
++
++    void StartSecurityAnimation(AnimationKind kind);
++    void StopSecurityAnimation();
++
++    void RepositionSecurityWarning(JNIEnv *env);
++
++public:
++    void UpdateSecurityWarningVisibility();
++    static bool IsWarningWindow(HWND hWnd);
+ 
+ protected:
+     BOOL m_isResizable;
+@@ -279,6 +344,12 @@
+     virtual void FillBackground(HDC hMemoryDC, SIZE &size);
+     virtual void FillAlpha(void *bitmapBits, SIZE &size, BYTE alpha);
+ 
++    inline BOOL IsUntrusted() {
++        return warningString != NULL;
++    }
++
++    UINT currentWmSizeState;
++
+ private:
+     int m_screenNum;
+ 
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp openjdk/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/ComCtl32Util.cpp	2011-02-17 15:50:10.728056549 +0000
+@@ -32,6 +32,7 @@
+     m_lpfnSetWindowSubclass = NULL;
+     m_lpfnRemoveWindowSubclass = NULL;
+     m_lpfnDefSubclassProc = NULL;
++    m_bToolTipControlInitialized = FALSE;
+ }
+ 
+ ComCtl32Util::~ComCtl32Util() {
+@@ -51,6 +52,7 @@
+                                 (m_lpfnDefSubclassProc != NULL);
+         }
+     }
++    m_bToolTipControlInitialized = TRUE;
+ }
+ 
+ void ComCtl32Util::FreeLibraries() {
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/ComCtl32Util.h openjdk/jdk/src/windows/native/sun/windows/ComCtl32Util.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/ComCtl32Util.h	2011-01-20 23:54:44.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/ComCtl32Util.h	2011-02-17 15:50:10.728056549 +0000
+@@ -63,6 +63,10 @@
+             return m_bNewSubclassing;
+         }
+ 
++        INLINE BOOL IsToolTipControlInitialized() {
++            return m_bToolTipControlInitialized;
++        }
++
+         // if comctl32.dll version 6 is used returns NULL, otherwise
+         // returns default window proc
+         WNDPROC SubclassHWND(HWND hwnd, WNDPROC _WindowProc);
+@@ -83,6 +87,8 @@
+ 
+         BOOL m_bNewSubclassing;
+ 
++        BOOL m_bToolTipControlInitialized;
++
+         // comctl32.dll version 6 window proc
+         static LRESULT CALLBACK SharedWindowProc(HWND hwnd, UINT message,
+                                                  WPARAM wParam, LPARAM lParam,
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/DllUtil.cpp openjdk/jdk/src/windows/native/sun/windows/DllUtil.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/DllUtil.cpp	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/windows/native/sun/windows/DllUtil.cpp	2011-02-17 15:50:10.728056549 +0000
+@@ -0,0 +1,87 @@
++/*
++ * Copyright (c) 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++
++#include "DllUtil.h"
++
++// Disable warning about using this in the initializer list.
++#pragma warning( disable : 4355)
++
++DllUtil::~DllUtil()
++{
++    if (module != NULL) {
++        ::FreeLibrary(module);
++        module = NULL;
++    }
++}
++
++HMODULE DllUtil::GetModule()
++{
++    if (!module) {
++        module = ::LoadLibrary(name);
++    }
++    return module;
++}
++
++FARPROC DllUtil::GetProcAddress(LPCSTR name)
++{
++    if (GetModule()) {
++        return ::GetProcAddress(GetModule(), name);
++    }
++    throw LibraryUnavailableException();
++}
++
++DwmAPI & DwmAPI::GetInstance()
++{
++    static DwmAPI dll;
++    return dll;
++}
++
++DwmAPI::DwmAPI() :
++    DllUtil(_T("DWMAPI.DLL")),
++    DwmIsCompositionEnabledFunction((DllUtil*)this, "DwmIsCompositionEnabled"),
++    DwmGetWindowAttributeFunction((DllUtil*)this, "DwmGetWindowAttribute")
++{
++}
++
++HRESULT DwmAPI::DwmIsCompositionEnabled(BOOL * pfEnabled)
++{
++    if (GetInstance().DwmIsCompositionEnabledFunction()) {
++        return GetInstance().DwmIsCompositionEnabledFunction()(pfEnabled);
++    }
++    throw FunctionUnavailableException();
++}
++
++HRESULT DwmAPI::DwmGetWindowAttribute(HWND hwnd, DWORD dwAttribute,
++        PVOID pvAttribute, DWORD cbAttribute)
++{
++    if (GetInstance().DwmGetWindowAttributeFunction()) {
++        return GetInstance().DwmGetWindowAttributeFunction()(hwnd, dwAttribute,
++                pvAttribute, cbAttribute);
++    }
++    throw FunctionUnavailableException();
++}
++
++
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/DllUtil.h openjdk/jdk/src/windows/native/sun/windows/DllUtil.h
+--- openjdk.orig/jdk/src/windows/native/sun/windows/DllUtil.h	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/windows/native/sun/windows/DllUtil.h	2011-02-17 15:50:10.728056549 +0000
+@@ -0,0 +1,97 @@
++/*
++ * Copyright (c) 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++#ifndef DLLUTIL_H
++#define DLLUTIL_H
++
++#include <tchar.h>
++#include <windows.h>
++
++/**
++ * Utility class to handle dynamically loadable libraries.
++ *
++ * NOTE: THIS CLASS IS NOT THREAD-SAFE!
++ */
++class DllUtil {
++    public:
++        class Exception {};
++        class LibraryUnavailableException : public Exception {};
++        class FunctionUnavailableException : public Exception {};
++
++        FARPROC GetProcAddress(LPCSTR name);
++
++    protected:
++        DllUtil(const TCHAR * name) : name(name), module(NULL) {}
++        virtual ~DllUtil();
++
++        HMODULE GetModule();
++
++        template <class FunctionType> class Function {
++            public:
++                Function(DllUtil * dll, LPCSTR name) :
++                    dll(dll), name(name), function(NULL) {}
++
++                inline FunctionType operator () () {
++                    if (!function) {
++                        function = (FunctionType)dll->GetProcAddress(name);
++                    }
++                    return function;
++                }
++
++            private:
++                DllUtil * const dll;
++                LPCSTR name;
++
++                FunctionType function;
++        };
++
++    private:
++        const TCHAR * const name;
++        HMODULE module;
++};
++
++class DwmAPI : public DllUtil {
++    public:
++        // See DWMWINDOWATTRIBUTE enum in dwmapi.h
++        static const DWORD DWMWA_EXTENDED_FRAME_BOUNDS = 9;
++
++        static HRESULT DwmIsCompositionEnabled(BOOL * pfEnabled);
++        static HRESULT DwmGetWindowAttribute(HWND hwnd, DWORD dwAttribute,
++                PVOID pvAttribute, DWORD cbAttribute);
++
++    private:
++        static DwmAPI & GetInstance();
++        DwmAPI();
++
++        typedef HRESULT (WINAPI *DwmIsCompositionEnabledType)(BOOL*);
++        Function<DwmIsCompositionEnabledType> DwmIsCompositionEnabledFunction;
++
++        typedef HRESULT (WINAPI *DwmGetWindowAttributeType)(HWND hwnd, DWORD dwAttribute,
++                PVOID pvAttribute, DWORD cbAttribute);
++        Function<DwmGetWindowAttributeType> DwmGetWindowAttributeFunction;
++};
++
++#endif // DLLUTIL_H
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java openjdk/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java
+--- openjdk.orig/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/CloseDialogActivateOwnerTest.java	2011-02-17 15:50:10.732056235 +0000
+@@ -0,0 +1,114 @@
++/*
++ * Copyright (c) 2008, 2009, 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       6785058
++  @summary   Tests that an owner is activated on closing its owned dialog with the warning icon.
++  @author    Anton Tarasov: area=awt.focus
++  @library   ../../regtesthelpers
++  @build     Util
++  @run       main/othervm/policy=java.policy -Djava.security.manager CloseDialogActivateOwnerTest
++*/
++
++import java.awt.*;
++import java.awt.event.*;
++import java.applet.Applet;
++import java.util.concurrent.atomic.AtomicBoolean;
++import java.lang.reflect.InvocationTargetException;
++import test.java.awt.regtesthelpers.Util;
++
++public class CloseDialogActivateOwnerTest extends Applet {
++    Robot robot;
++
++    public static void main(String[] args) {
++        CloseDialogActivateOwnerTest app = new CloseDialogActivateOwnerTest();
++        app.init();
++        app.start();
++    }
++
++    public void init() {
++        robot = Util.createRobot();
++    }
++
++    public void start() {
++        final Frame frame = new Frame("Owner Frame");
++        final Dialog dialog = new Dialog(frame, "Owned Dialog");
++
++        frame.setSize(100, 100);
++        dialog.setSize(100, 100);
++
++        // Show the owner. Check that it's focused.
++        if (!Util.trackWindowGainedFocus(frame, new Runnable() {
++                public void run() {
++                    frame.setVisible(true);
++                }
++            }, 2000, false))
++        {
++            throw new TestErrorException("the owner frame hasn't been activated on show");
++        }
++
++        // Show the owned dialog. Check that it's focused.
++        if (!Util.trackWindowGainedFocus(dialog, new Runnable() {
++                public void run() {
++                    dialog.setVisible(true);
++                }
++            }, 2000, true))
++        {
++            throw new TestErrorException("the owned dialog hasn't been activated on show");
++        }
++
++        robot.delay(2000); // wait for the warning icon is shown
++
++        // Close the dialog. Check that the owner is activated.
++        if (!Util.trackWindowGainedFocus(frame, new Runnable() {
++                public void run() {
++                    dialog.dispose();
++                }
++            }, 2000, false))
++        {
++            throw new TestFailedException("the owner hasn't been activated on closing the owned dialog");
++        }
++
++        System.out.println("Test passed.");
++    }
++}
++
++/**
++ * Thrown when the behavior being verified is found wrong.
++ */
++class TestFailedException extends RuntimeException {
++    TestFailedException(String msg) {
++        super("Test failed: " + msg);
++    }
++}
++
++/**
++ * Thrown when an error not related to the behavior being verified is encountered.
++ */
++class TestErrorException extends Error {
++    TestErrorException(String msg) {
++        super("Unexpected error: " + msg);
++    }
++}
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/java.policy openjdk/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/java.policy
+--- openjdk.orig/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/java.policy	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Focus/CloseDialogActivateOwnerTest/java.policy	2011-02-17 15:50:10.732056235 +0000
+@@ -0,0 +1,3 @@
++grant {
++	permission java.awt.AWTPermission "createRobot";
++};
+diff -Nru openjdk.orig/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java openjdk/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java
+--- openjdk.orig/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Focus/OwnedWindowFocusIMECrashTest/OwnedWindowFocusIMECrashTest.java	2011-02-17 15:50:10.736055921 +0000
+@@ -0,0 +1,88 @@
++/*
++ * Copyright (c) 2008, 2009, 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       6542975
++  @summary   Tests that switching focus from an owned window doesn't crash.
++  @author    anton.tarasov@sun.com: area=awt-focus
++  @library    ../../regtesthelpers
++  @build     Util
++  @run       main OwnedWindowFocusIMECrashTest
++*/
++
++import java.awt.*;
++import javax.swing.*;
++import test.java.awt.regtesthelpers.Util;
++
++public class OwnedWindowFocusIMECrashTest {
++    Robot robot;
++    JFrame owner = new JFrame("Owner Frame");
++    JFrame frame = new JFrame("Other Frame");
++    JWindow window = new JWindow(owner);
++    JButton button = new JButton("Button");
++
++    public static void main(String[] args) {
++        OwnedWindowFocusIMECrashTest app = new OwnedWindowFocusIMECrashTest();
++        app.init();
++        app.start();
++    }
++
++    public void init() {
++        robot = Util.createRobot();
++    }
++
++    public void start() {
++        owner.setBounds(100, 100, 200, 100);
++        window.setBounds(100, 250, 200, 100);
++        frame.setBounds(350, 100, 200, 100);
++        window.add(button);
++
++        owner.setVisible(true);
++        frame.setVisible(true);
++        window.setVisible(true);
++
++        Util.waitForIdle(robot);
++
++        test();
++
++        System.out.println("Test passed");
++    }
++
++    void test() {
++        Util.clickOnComp(button, robot);
++        if (!button.hasFocus()) {
++            throw new TestErrorException("the button couldn't be focused by click");
++        }
++        Util.clickOnTitle(frame, robot); // here there was a crash
++    }
++}
++
++/**
++ * Thrown when an error not related to the behavior being verified is encountered.
++ */
++class TestErrorException extends RuntimeException {
++    TestErrorException(String msg) {
++        super("Unexpected error: " + msg);
++    }
++}
--- a/patches/openjdk/6725214-direct3d-01.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/openjdk/6725214-direct3d-01.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -1,7 +1,16 @@
-diff -Nru openjdk.orig/jdk/make/common/shared/Platform.gmk openjdk/jdk/make/common/shared/Platform.gmk
---- openjdk.orig/jdk/make/common/shared/Platform.gmk	2011-01-08 01:00:26.000000000 +0000
-+++ openjdk/jdk/make/common/shared/Platform.gmk	2011-01-08 01:26:50.431201774 +0000
-@@ -421,7 +421,7 @@
+# HG changeset patch
+# User tdv
+# Date 1296837169 0
+# Node ID 6cf33f955d7dec149ada9a7f2358c38a9d6a3330
+# Parent  f683aef5858502b989c2bc0714003ca49d83c242
+6725214: D3D: forward-port the new pipeline from 6u10
+Summary: Forward port of the new Direct3D 9 rendering pipeline from 6u10. Also includes fixes for 6690659 6689025 6658398 6596234.
+Reviewed-by: campbell, prr
+
+diff -r f683aef58585 -r 6cf33f955d7d make/common/shared/Platform.gmk
+--- openjdk/jdk/make/common/shared/Platform.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/common/shared/Platform.gmk	Fri Feb 04 16:32:49 2011 +0000
+@@ -377,7 +377,7 @@
    # ISHIELD_TEMP_MIN is the difference of an empty C:\TEMP vs. one after a
    #     bundles build on windows.
    ISHIELD_TEMP_MIN=250000
@@ -10,10 +19,10 @@
    # How much RAM does this machine have:
    MB_OF_MEMORY := $(shell \
      if [ -f "C:/cygwin/bin/free.exe" ] ; then \
-diff -Nru openjdk.orig/jdk/make/common/shared/Sanity.gmk openjdk/jdk/make/common/shared/Sanity.gmk
---- openjdk.orig/jdk/make/common/shared/Sanity.gmk	2011-01-08 01:00:26.000000000 +0000
-+++ openjdk/jdk/make/common/shared/Sanity.gmk	2011-01-08 01:26:50.431201774 +0000
-@@ -97,7 +97,7 @@
+diff -r f683aef58585 -r 6cf33f955d7d make/common/shared/Sanity.gmk
+--- openjdk/jdk/make/common/shared/Sanity.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/common/shared/Sanity.gmk	Fri Feb 04 16:32:49 2011 +0000
+@@ -92,7 +92,7 @@
      _WINDOWS_VERSION := Windows 2000 or Unknown (no systeminfo utility)
    endif
    WINDOWS_VERSION := $(strip $(_WINDOWS_VERSION))
@@ -22,7 +31,7 @@
      $(EGREP) "\#define" | $(NAWK) '{print $$3}')
  endif
  
-@@ -1236,7 +1236,7 @@
+@@ -1256,7 +1256,7 @@
  ######################################################
  sane-dxsdk:
  ifeq ($(PLATFORM), windows)
@@ -31,7 +40,7 @@
  	$(ECHO) "ERROR: You do not have access to a valid DirectX SDK Include dir.\n" \
  	  "      The value of DXSDK_INCLUDE_PATH must point a valid DX SDK dir.\n" \
  	  "      Please check your access to \n" \
-@@ -1265,7 +1265,7 @@
+@@ -1285,7 +1285,7 @@
  		"      This may result in a build failure.\n" \
  		"      The DirectX SDK Include dir was obtained from the following location:\n" \
  		" 	  $(DXSDK_INCLUDE_PATH) \n" \
@@ -40,9 +49,9 @@
  	        "      Microsoft DirectX 9 SDK can be downloaded from the following location:\n" \
  	        "          http://msdn.microsoft.com/library/default.asp?url=/downloads/list/directx.asp\n" \
  		"      Or  http://www.microsoft.com/directx\n" \
-diff -Nru openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk openjdk/jdk/make/sun/awt/FILES_c_windows.gmk
---- openjdk.orig/jdk/make/sun/awt/FILES_c_windows.gmk	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/FILES_c_windows.gmk	2011-01-08 01:26:50.431201774 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/FILES_c_windows.gmk
+--- openjdk/jdk/make/sun/awt/FILES_c_windows.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/FILES_c_windows.gmk	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -105,9 +114,9 @@
  	ShellFolder2.cpp \
  	ThemeReader.cpp \
  	ComCtl32Util.cpp \
-diff -Nru openjdk.orig/jdk/make/sun/awt/FILES_export_unix.gmk openjdk/jdk/make/sun/awt/FILES_export_unix.gmk
---- openjdk.orig/jdk/make/sun/awt/FILES_export_unix.gmk	2011-01-08 01:00:22.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/FILES_export_unix.gmk	2011-01-08 01:26:50.439201862 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/FILES_export_unix.gmk
+--- openjdk/jdk/make/sun/awt/FILES_export_unix.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/FILES_export_unix.gmk	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -125,7 +134,7 @@
          sun/awt/image/ImagingLib.java \
  	sun/java2d/SurfaceData.java \
  	sun/java2d/SunGraphics2D.java \
-@@ -74,6 +77,7 @@
+@@ -107,6 +110,7 @@
  	sun/java2d/pipe/BufferedContext.java \
  	sun/java2d/pipe/BufferedMaskBlit.java \
  	sun/java2d/pipe/BufferedOpCodes.java \
@@ -133,9 +142,9 @@
  	sun/java2d/pipe/BufferedPaints.java \
  	sun/java2d/pipe/BufferedRenderPipe.java \
  	sun/java2d/pipe/BufferedTextPipe.java \
-diff -Nru openjdk.orig/jdk/make/sun/awt/FILES_export_windows.gmk openjdk/jdk/make/sun/awt/FILES_export_windows.gmk
---- openjdk.orig/jdk/make/sun/awt/FILES_export_windows.gmk	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/FILES_export_windows.gmk	2011-01-08 01:26:50.439201862 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/FILES_export_windows.gmk
+--- openjdk/jdk/make/sun/awt/FILES_export_windows.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/FILES_export_windows.gmk	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -198,9 +207,36 @@
 +	sun/java2d/d3d/D3DRenderer.java \
 +	sun/java2d/d3d/D3DTextRenderer.java \
 +	sun/java2d/d3d/D3DContext.java
-diff -Nru openjdk.orig/jdk/make/sun/awt/make.depend openjdk/jdk/make/sun/awt/make.depend
---- openjdk.orig/jdk/make/sun/awt/make.depend	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/make.depend	2011-01-08 01:26:50.443201905 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/Makefile
+--- openjdk/jdk/make/sun/awt/Makefile	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/Makefile	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ #
+-# Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++# Copyright (c) 1995, 2008, 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
+@@ -69,7 +69,6 @@
+ #
+ AUTO_JAVA_PRUNE += RemoteOffScreenImage.java
+ 
+-OTHER_CXXFLAGS += -DD3D_OVERLOADS
+ OTHER_CFLAGS += $(GX_OPTION) -DMLIB_NO_LIBSUNMATH -DUNICODE -D_UNICODE
+ OTHER_CXXFLAGS += $(GX_OPTION) -DUNICODE -D_UNICODE
+ 
+@@ -480,7 +479,7 @@
+ 	-I$(SHARE_SRC)/native/sun/dc/path \
+ 	-I$(SHARE_SRC)/native/sun/dc/doe \
+ 	-I$(SHARE_SRC)/native/sun/awt/debug \
+-	-I$(PLATFORM_SRC)/native/sun/awt \
++	-I$(PLATFORM_SRC)/native/sun/awt
+ #	-I$(WINAWT_COMMON_native)
+ 
+ # this is only required for compiling )/native/sun/awt/medialib/*.c files
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/make.depend
+--- openjdk/jdk/make/sun/awt/make.depend	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/make.depend	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,4 +1,4 @@
 -$(OBJDIR)/AccelGlyphCache.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
 +$(OBJDIR)/AccelGlyphCache.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
@@ -432,70 +468,70 @@
  
 -$(OBJDIR)/CmdIDList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
 +$(OBJDIR)/CmdIDList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/CmdIDList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+
-+$(OBJDIR)/ComCtl32Util.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+
-+$(OBJDIR)/D3DBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
-+
-+$(OBJDIR)/D3DBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
-+
-+$(OBJDIR)/D3DContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DShaders.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/ComCtl32Util.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DGlyphCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/ComCtl32Util.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/ComCtl32Util.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/D3DBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DGraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DGraphicsDevice.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntBgr.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/Ushort555Rgb.h ../../../src/share/native/sun/java2d/loops/Ushort565Rgb.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DMaskFill.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DMaskCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DShaders.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DRenderer.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_windows_DDRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DGlyphCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DRuntimeTest.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTestRaster.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DGraphicsDevice.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DGraphicsDevice.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/D3DSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBackBufferSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DPipelineManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBadHardware.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DTextRenderer_md.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DMaskCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/D3DUtils.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DUtils.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DMaskFill.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/DataBufferNative.obj::	$(CLASSHDRDIR)/sun_awt_image_DataBufferNative.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
-+$(OBJDIR)/D3DResourceManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/DDBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_DDBlitLoops.h $(CLASSHDRDIR)/sun_java2d_windows_DDScaleLoops.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/D3DPipelineManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBadHardware.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/ddrawObject.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_DisplayMode.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DRenderer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/ddrawUtils.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/D3DVertexCacher.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
++$(OBJDIR)/D3DRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DBlitLoops.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DBlitLoops.h ../../../src/windows/native/sun/java2d/d3d/D3DBufImgOps.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskBlit.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskFill.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/DDRenderer.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_DDRenderer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/DataBufferNative.obj::	$(CLASSHDRDIR)/sun_awt_image_DataBufferNative.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/D3DResourceManager.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/debug_assert.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
-+$(OBJDIR)/debug_assert.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/D3DSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_BitmapUtil.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
 -$(OBJDIR)/debug_mem.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
-+$(OBJDIR)/debug_mem.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/D3DTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DGlyphCache.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DRenderQueue.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DTextRenderer.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/debug_trace.obj::     ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
-+$(OBJDIR)/debug_trace.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/D3DVertexCacher.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPaints.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/debug_util.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h
-+$(OBJDIR)/debug_util.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++$(OBJDIR)/DataBufferNative.obj::	$(CLASSHDRDIR)/sun_awt_image_DataBufferNative.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
  
 -$(OBJDIR)/Devices.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
++$(OBJDIR)/debug_assert.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++
++$(OBJDIR)/debug_mem.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++
++$(OBJDIR)/debug_trace.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++
++$(OBJDIR)/debug_util.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h
++
 +$(OBJDIR)/Devices.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelDeviceEventNotifier.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/ShaderList.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/d3d/D3DMaskCache.h ../../../src/windows/native/sun/java2d/d3d/D3DPipeline.h ../../../src/windows/native/sun/java2d/d3d/D3DPipelineManager.h ../../../src/windows/native/sun/java2d/d3d/D3DResourceManager.h ../../../src/windows/native/sun/java2d/d3d/D3DSurfaceData.h ../../../src/windows/native/sun/java2d/d3d/D3DVertexCacher.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
  
  $(OBJDIR)/Disposer.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/jlong_md.h
@@ -566,35 +602,50 @@
  $(OBJDIR)/MaskFill.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/mlib_c_ImageAffineIndex_BC.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/MouseInfo.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffineIndex_BL.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/ObjectList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BC.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BC_S16.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BC_U16.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BL.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLFuncs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BL_S16.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_BL_U16.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLMaskFill.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageAffine_NN.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedPaints.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageConvClearEdge.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLRenderer.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageConvCopyEdge.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageConvVersion.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageConv_f.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageCopy.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/OGLVertexCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageLookUp.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
--
++$(OBJDIR)/ProcessPath.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
+ 
 -$(OBJDIR)/mlib_c_ImageLookUp_f.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCopy.h ../../../src/share/native/sun/awt/medialib/mlib_ImageLookUp.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
 -
 -$(OBJDIR)/mlib_c_ImageThresh1_U8.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageThresh1.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
@@ -618,50 +669,35 @@
 -$(OBJDIR)/mlib_ImageAffine_NN.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
 -
 -$(OBJDIR)/mlib_ImageAffine_NN_Bit.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageAffine.h ../../../src/share/native/sun/awt/medialib/mlib_ImageDivTables.h ../../../src/share/native/sun/awt/medialib/mlib_ImageFilters.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/MouseInfo.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
- 
+-
 -$(OBJDIR)/mlib_ImageClipping.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageClipping.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCreate.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/ObjectList.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
- 
+-
 -$(OBJDIR)/mlib_ImageColorTrue2Index.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageColormap.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLBlitLoops.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv2x2_f.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLBufImgOps.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvClearEdge_Bit.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLContext.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvClearEdge_Fp.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLFuncs.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvCopyEdge_Bit.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLMaskBlit.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvKernelConvert.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLMaskFill.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLMaskFill.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvMxN.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageClipping.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCreate.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLPaints.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedPaints.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvMxN_ext.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLRenderer.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConvMxN_Fp.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageCheck.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_SysMath.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLRenderQueue.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLBlitLoops.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedOpCodes.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedRenderPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLBlitLoops.h ../../../src/share/native/sun/java2d/opengl/OGLBufImgOps.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLMaskBlit.h ../../../src/share/native/sun/java2d/opengl/OGLMaskFill.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv_16ext.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv_16nw.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLTextRenderer.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLTextRenderer.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedTextPipe.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLTextRenderer.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv_32nw.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/OGLVertexCache.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h $(CLASSHDRDIR)/sun_java2d_SunGraphics2D.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLPaints.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/opengl/OGLVertexCache.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv_8ext.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
-+$(OBJDIR)/ProcessPath.obj::	$(CLASSHDRDIR)/java_awt_geom_PathIterator.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
- 
+-
 -$(OBJDIR)/mlib_ImageConv_8nw.obj::	../../../src/share/native/sun/awt/medialib/mlib_c_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
 -
 -$(OBJDIR)/mlib_ImageConv_D64nw.obj::	../../../src/share/native/sun/awt/medialib/mlib_image.h ../../../src/share/native/sun/awt/medialib/mlib_ImageConv.h ../../../src/share/native/sun/awt/medialib/mlib_image_blend_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_get.h ../../../src/share/native/sun/awt/medialib/mlib_image_proto.h ../../../src/share/native/sun/awt/medialib/mlib_image_types.h ../../../src/share/native/sun/awt/medialib/mlib_status.h ../../../src/share/native/sun/awt/medialib/mlib_sys.h ../../../src/share/native/sun/awt/medialib/mlib_sys_proto.h ../../../src/share/native/sun/awt/medialib/mlib_types.h
@@ -760,54 +796,27 @@
  $(OBJDIR)/UshortIndexed.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMacros.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/AnyByte.h ../../../src/share/native/sun/java2d/loops/ByteGray.h ../../../src/share/native/sun/java2d/loops/ByteIndexed.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/Index12Gray.h ../../../src/share/native/sun/java2d/loops/IntArgb.h ../../../src/share/native/sun/java2d/loops/IntArgbBm.h ../../../src/share/native/sun/java2d/loops/IntArgbPre.h ../../../src/share/native/sun/java2d/loops/IntDcm.h ../../../src/share/native/sun/java2d/loops/IntRgb.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacros.h ../../../src/share/native/sun/java2d/loops/ThreeByteBgr.h ../../../src/share/native/sun/java2d/loops/UshortGray.h ../../../src/share/native/sun/java2d/loops/UshortIndexed.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
  
 -$(OBJDIR)/WBufferStrategy.obj::	$(CLASSHDRDIR)/sun_awt_windows_WBufferStrategy.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/jni_util.h ../../../src/windows/javavm/export/jni_md.h
--
++$(OBJDIR)/WGLGraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+ 
 -$(OBJDIR)/WGLGraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
--
++$(OBJDIR)/WGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+ 
 -$(OBJDIR)/WGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
--
++$(OBJDIR)/WindowsFlags.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
+ 
 -$(OBJDIR)/Win32OffScreenSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_windows_Win32OffScreenSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
 -
 -$(OBJDIR)/Win32SurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_Transparency.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_d3d_D3DContext.h $(CLASSHDRDIR)/sun_java2d_windows_Win32SurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/font/AccelGlyphCache.h ../../../src/share/native/sun/font/fontscalerdefs.h ../../../src/share/native/sun/font/glyphblitting.h ../../../src/share/native/sun/font/sunfontids.h ../../../src/share/native/sun/java2d/Disposer.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/d3d/D3DContext.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/WGLGraphicsConfig.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLGraphicsConfig.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
- 
+-
 -$(OBJDIR)/WinBackBufferSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_java2d_windows_WinBackBufferSurfaceData.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/ddrawUtils.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/WGLSurfaceData.obj::	$(CLASSHDRDIR)/java_awt_image_AffineTransformOp.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLContext.h $(CLASSHDRDIR)/sun_java2d_opengl_OGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_opengl_WGLSurfaceData.h $(CLASSHDRDIR)/sun_java2d_pipe_BufferedContext.h $(CLASSHDRDIR)/sun_java2d_pipe_hw_AccelSurface.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/gl.h ../../../src/share/native/sun/java2d/opengl/J2D_GL/glext.h ../../../src/share/native/sun/java2d/opengl/OGLContext.h ../../../src/share/native/sun/java2d/opengl/OGLFuncMacros.h ../../../src/share/native/sun/java2d/opengl/OGLFuncs.h ../../../src/share/native/sun/java2d/opengl/OGLRenderQueue.h ../../../src/share/native/sun/java2d/opengl/OGLSurfaceData.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/opengl/J2D_GL/wglext.h ../../../src/windows/native/sun/java2d/opengl/OGLFuncs_md.h ../../../src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.h ../../../src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
- 
+-
 -$(OBJDIR)/WindowsFlags.obj::	$(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/dxInit.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-+$(OBJDIR)/WindowsFlags.obj::	../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/WindowsFlags.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
- 
+-
 -$(OBJDIR)/WPrinterJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
 +$(OBJDIR)/WPrinterJob.obj::	$(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dialog.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_FileDialog.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/java_awt_FontMetrics.h $(CLASSHDRDIR)/java_awt_Frame.h $(CLASSHDRDIR)/java_awt_Menu.h $(CLASSHDRDIR)/java_awt_MenuBar.h $(CLASSHDRDIR)/java_awt_MenuComponent.h $(CLASSHDRDIR)/java_awt_MenuItem.h $(CLASSHDRDIR)/java_awt_peer_MenuComponentPeer.h $(CLASSHDRDIR)/java_awt_Window.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WCanvasPeer.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFileDialogPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WFramePeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuBarPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuItemPeer.h $(CLASSHDRDIR)/sun_awt_windows_WMenuPeer.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h $(CLASSHDRDIR)/sun_awt_windows_WWindowPeer.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Canvas.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Dialog.h ../../../src/windows/native/sun/windows/awt_dlls.h ../../../src/windows/native/sun/windows/awt_FileDialog.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_Frame.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Menu.h ../../../src/windows/native/sun/windows/awt_MenuBar.h ../../../src/windows/native/sun/windows/awt_MenuItem.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_PrintControl.h ../../../src/windows/native/sun/windows/awt_PrintDialog.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awt_Window.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
-diff -Nru openjdk.orig/jdk/make/sun/awt/Makefile openjdk/jdk/make/sun/awt/Makefile
---- openjdk.orig/jdk/make/sun/awt/Makefile	2011-01-08 01:00:26.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/Makefile	2011-01-08 01:26:50.443201905 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 1995, 2008, 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
-@@ -69,7 +69,6 @@
- #
- AUTO_JAVA_PRUNE += RemoteOffScreenImage.java
- 
--OTHER_CXXFLAGS += -DD3D_OVERLOADS
- OTHER_CFLAGS += $(GX_OPTION) -DMLIB_NO_LIBSUNMATH -DUNICODE -D_UNICODE
- OTHER_CXXFLAGS += $(GX_OPTION) -DUNICODE -D_UNICODE
- 
-@@ -486,7 +485,7 @@
- 	-I$(SHARE_SRC)/native/sun/dc/path \
- 	-I$(SHARE_SRC)/native/sun/dc/doe \
- 	-I$(SHARE_SRC)/native/sun/awt/debug \
--	-I$(PLATFORM_SRC)/native/sun/awt \
-+	-I$(PLATFORM_SRC)/native/sun/awt
- #	-I$(WINAWT_COMMON_native)
- 
- # this is only required for compiling )/native/sun/awt/medialib/*.c files
-diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers openjdk/jdk/make/sun/awt/mapfile-mawt-vers
---- openjdk.orig/jdk/make/sun/awt/mapfile-mawt-vers	2011-01-08 01:00:22.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/mapfile-mawt-vers
+--- openjdk/jdk/make/sun/awt/mapfile-mawt-vers	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-mawt-vers	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -838,9 +847,9 @@
  
  	local:
  		*;
-diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-vers openjdk/jdk/make/sun/awt/mapfile-vers
---- openjdk.orig/jdk/make/sun/awt/mapfile-vers	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/mapfile-vers	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/mapfile-vers
+--- openjdk/jdk/make/sun/awt/mapfile-vers	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-vers	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -856,9 +865,9 @@
                  J2dTraceImpl;
                  J2dTraceInit;
  		img_makePalette;
-diff -Nru openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux openjdk/jdk/make/sun/awt/mapfile-vers-linux
---- openjdk.orig/jdk/make/sun/awt/mapfile-vers-linux	2011-01-08 01:00:22.000000000 +0000
-+++ openjdk/jdk/make/sun/awt/mapfile-vers-linux	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/awt/mapfile-vers-linux
+--- openjdk/jdk/make/sun/awt/mapfile-vers-linux	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/awt/mapfile-vers-linux	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -874,9 +883,9 @@
  
  	local:
  		*;
-diff -Nru openjdk.orig/jdk/make/sun/font/FILES_c.gmk openjdk/jdk/make/sun/font/FILES_c.gmk
---- openjdk.orig/jdk/make/sun/font/FILES_c.gmk	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/font/FILES_c.gmk	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/font/FILES_c.gmk
+--- openjdk/jdk/make/sun/font/FILES_c.gmk	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/font/FILES_c.gmk	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -893,9 +902,9 @@
  else
  FILES_c_platform = X11FontScaler.c \
                     X11TextRenderer.c
-diff -Nru openjdk.orig/jdk/make/sun/font/Makefile openjdk/jdk/make/sun/font/Makefile
---- openjdk.orig/jdk/make/sun/font/Makefile	2011-01-08 01:00:22.000000000 +0000
-+++ openjdk/jdk/make/sun/font/Makefile	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/font/Makefile
+--- openjdk/jdk/make/sun/font/Makefile	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/font/Makefile	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -912,7 +921,7 @@
  else # PLATFORM unix
  
    FILES_export += \
-@@ -173,7 +171,6 @@
+@@ -170,7 +168,6 @@
  
  ifeq ($(PLATFORM), windows)
  vpath %.cpp   $(PLATFORM_SRC)/native/sun/windows
@@ -920,7 +929,7 @@
  else # PLATFORM
  
  #
-@@ -208,7 +205,6 @@
+@@ -205,7 +202,6 @@
  	    -I$(TEMPDIR)/../../sun.awt/awt/CClassHeaders
  
  ifeq ($(PLATFORM), windows)
@@ -929,9 +938,9 @@
 +CPPFLAGS += -I$(PLATFORM_SRC)/native/sun/windows
  endif
  
-diff -Nru openjdk.orig/jdk/make/sun/headless/mapfile-vers openjdk/jdk/make/sun/headless/mapfile-vers
---- openjdk.orig/jdk/make/sun/headless/mapfile-vers	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/headless/mapfile-vers	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/headless/mapfile-vers
+--- openjdk/jdk/make/sun/headless/mapfile-vers	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/headless/mapfile-vers	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  #
 -# Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -947,15 +956,15 @@
  
  
  	local:
-diff -Nru openjdk.orig/jdk/make/sun/jawt/make.depend openjdk/jdk/make/sun/jawt/make.depend
---- openjdk.orig/jdk/make/sun/jawt/make.depend	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/jawt/make.depend	2011-01-08 01:26:50.447201948 +0000
-@@ -1 +1 @@
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/jawt/make.depend
+--- openjdk/jdk/make/sun/jawt/make.depend	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/jawt/make.depend	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,1 +1,1 @@
 -$(OBJDIR)/jawt.obj::	$(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_AlphaComposite.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_AWTEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Component.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Dimension.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Event.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Font.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_PlatformFont.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h ../../../src/windows/native/sun/java2d/windows/ddrawObject.h ../../../src/windows/native/sun/java2d/windows/dxCapabilities.h ../../../src/windows/native/sun/java2d/windows/RegistryKey.h ../../../src/windows/native/sun/java2d/windows/Win32SurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h ../../../src/windows/native/sun/windows/UnicowsLoader.h
 +$(OBJDIR)/jawt.obj::	$(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_AWTEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Component.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Dimension.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Event.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_Font.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_PlatformFont.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/../../awt/CClassHeaders/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/jawt.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jawt_md.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/UnicowsLoader.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_DrawingSurface.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_MMStub.h ../../../src/windows/native/sun/windows/awt_Multimon.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Unicode.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/stdhdrs.h
-diff -Nru openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
---- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2011-01-07 21:32:51.000000000 +0000
-+++ openjdk/jdk/make/sun/xawt/mapfile-vers	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d make/sun/xawt/mapfile-vers
+--- openjdk/jdk/make/sun/xawt/mapfile-vers	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/make/sun/xawt/mapfile-vers	Fri Feb 04 16:32:49 2011 +0000
 @@ -242,6 +242,7 @@
          AWTCharAscent;
          AWTCharDescent;
@@ -964,10 +973,10 @@
  
          Java_sun_awt_X11_XToolkit_waitForEvents;
          Java_java_awt_Event_initIDs;
-diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Component.java openjdk/jdk/src/share/classes/java/awt/Component.java
---- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	2011-01-07 21:32:53.000000000 +0000
-+++ openjdk/jdk/src/share/classes/java/awt/Component.java	2011-01-08 01:26:50.447201948 +0000
-@@ -73,7 +73,11 @@
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/java/awt/Component.java
+--- openjdk/jdk/src/share/classes/java/awt/Component.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -75,7 +75,11 @@
  import sun.awt.im.CompositionArea;
  import sun.java2d.SunGraphics2D;
  import sun.java2d.pipe.Region;
@@ -979,7 +988,7 @@
  
  /**
   * A <em>component</em> is an object having a graphical representation
-@@ -3500,6 +3504,11 @@
+@@ -3552,6 +3556,11 @@
          if (numBuffers == 1) {
              bufferStrategy = new SingleBufferStrategy(caps);
          } else {
@@ -991,7 +1000,7 @@
              // assert numBuffers > 1;
              if (caps.isPageFlipping()) {
                  bufferStrategy = new FlipSubRegionBufferStrategy(numBuffers, caps);
-@@ -3510,6 +3519,25 @@
+@@ -3562,6 +3571,25 @@
      }
  
      /**
@@ -1017,7 +1026,7 @@
       * @return the buffer strategy used by this component
       * @see Window#createBufferStrategy
       * @see Canvas#createBufferStrategy
-@@ -3638,16 +3666,30 @@
+@@ -3690,16 +3718,30 @@
              width = getWidth();
              height = getHeight();
  
@@ -1031,7 +1040,8 @@
                  destroyBuffers();
                  // ... then recreate the backbuffers
 -                peer.createBuffers(numBuffers, caps);
-             }
+-            }
++            }
 +
 +            if (caps instanceof ExtendedBufferCapabilities) {
 +                ExtendedBufferCapabilities ebc =
@@ -1052,7 +1062,7 @@
              updateInternalBuffers();
          }
  
-@@ -3692,7 +3734,23 @@
+@@ -3744,7 +3786,23 @@
           */
          protected void flip(BufferCapabilities.FlipContents flipAction) {
              if (peer != null) {
@@ -1077,7 +1087,7 @@
              } else {
                  throw new IllegalStateException(
                      "Component must have a valid peer");
-@@ -3703,6 +3761,7 @@
+@@ -3755,6 +3813,7 @@
           * Destroys the buffers created through this object
           */
          protected void destroyBuffers() {
@@ -1085,7 +1095,7 @@
              if (peer != null) {
                  peer.destroyBuffers();
              } else {
-@@ -3715,7 +3774,11 @@
+@@ -3767,7 +3826,11 @@
           * @return the buffering capabilities of this strategy
           */
          public BufferCapabilities getCapabilities() {
@@ -1098,7 +1108,7 @@
          }
  
          /**
-@@ -3803,6 +3866,14 @@
+@@ -3855,6 +3918,14 @@
          }
  
          /**
@@ -1113,7 +1123,7 @@
           * {@inheritDoc}
           * @since 1.6
           */
-@@ -4072,8 +4143,6 @@
+@@ -4124,8 +4195,6 @@
  
      /**
       * Private class to perform sub-region flipping.
@@ -1122,7 +1132,7 @@
       */
      private class FlipSubRegionBufferStrategy extends FlipBufferStrategy
          implements SubRegionShowable
-@@ -4087,14 +4156,13 @@
+@@ -4139,14 +4208,13 @@
          }
  
          public void show(int x1, int y1, int x2, int y2) {
@@ -1141,7 +1151,7 @@
                  return !contentsLost();
              }
              return false;
-@@ -4122,9 +4190,8 @@
+@@ -4174,9 +4242,8 @@
          }
  
          // This method is called by Swing on the toolkit thread.
@@ -1153,9 +1163,9 @@
                  showSubRegion(x1, y1, x2, y2);
                  return !contentsLost();
              }
-diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/GraphicsDevice.java openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java
---- openjdk.orig/jdk/src/share/classes/java/awt/GraphicsDevice.java	2011-01-07 21:32:53.000000000 +0000
-+++ openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/java/awt/GraphicsDevice.java
+--- openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/GraphicsDevice.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -1174,51 +1184,9 @@
              fullScreenWindow.setBounds(windowedModeBounds);
          }
          // Set the full screen window
-diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/image/DataBuffer.java openjdk/jdk/src/share/classes/java/awt/image/DataBuffer.java
---- openjdk.orig/jdk/src/share/classes/java/awt/image/DataBuffer.java	2011-01-07 21:32:53.000000000 +0000
-+++ openjdk/jdk/src/share/classes/java/awt/image/DataBuffer.java	2011-01-08 01:26:50.447201948 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2008, 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
-@@ -530,6 +530,12 @@
-             public StateTrackableDelegate getTrackable(DataBuffer db) {
-                 return db.theTrackable;
-             }
-+
-+            public void setTrackable(DataBuffer db,
-+                                     StateTrackableDelegate trackable)
-+            {
-+                db.theTrackable = trackable;
-+            }
-         });
-     }
- }
-diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/peer/ComponentPeer.java openjdk/jdk/src/share/classes/java/awt/peer/ComponentPeer.java
---- openjdk.orig/jdk/src/share/classes/java/awt/peer/ComponentPeer.java	2011-01-07 21:32:53.000000000 +0000
-+++ openjdk/jdk/src/share/classes/java/awt/peer/ComponentPeer.java	2011-01-08 01:26:50.447201948 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1995, 2008, 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
-@@ -88,7 +88,7 @@
-     boolean     handlesWheelScrolling();
-     void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException;
-     Image getBackBuffer();
--    void flip(BufferCapabilities.FlipContents flipAction);
-+    void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction);
-     void destroyBuffers();
- 
-     /**
-diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Robot.java openjdk/jdk/src/share/classes/java/awt/Robot.java
---- openjdk.orig/jdk/src/share/classes/java/awt/Robot.java	2011-01-07 21:32:53.000000000 +0000
-+++ openjdk/jdk/src/share/classes/java/awt/Robot.java	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/java/awt/Robot.java
+--- openjdk/jdk/src/share/classes/java/awt/Robot.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Robot.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -1267,9 +1235,51 @@
  
          image = new BufferedImage(screenCapCM, raster, false, null);
  
-diff -Nru openjdk.orig/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java openjdk/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java
---- openjdk.orig/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	2011-01-07 21:32:57.000000000 +0000
-+++ openjdk/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/java/awt/image/DataBuffer.java
+--- openjdk/jdk/src/share/classes/java/awt/image/DataBuffer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/image/DataBuffer.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1997, 2008, 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
+@@ -530,6 +530,12 @@
+             public StateTrackableDelegate getTrackable(DataBuffer db) {
+                 return db.theTrackable;
+             }
++
++            public void setTrackable(DataBuffer db,
++                                     StateTrackableDelegate trackable)
++            {
++                db.theTrackable = trackable;
++            }
+         });
+     }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/java/awt/peer/ComponentPeer.java
+--- openjdk/jdk/src/share/classes/java/awt/peer/ComponentPeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/java/awt/peer/ComponentPeer.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1995, 2008, 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
+@@ -88,7 +88,7 @@
+     boolean     handlesWheelScrolling();
+     void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException;
+     Image getBackBuffer();
+-    void flip(BufferCapabilities.FlipContents flipAction);
++    void flip(int x1, int y1, int x2, int y2, BufferCapabilities.FlipContents flipAction);
+     void destroyBuffers();
+ 
+     /**
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/javax/swing/BufferStrategyPaintManager.java
+--- openjdk/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -1286,9 +1296,54 @@
                      return !paintAllOnExpose;
                  }
                  // Mark the buffer as needing to be repainted.  We don't
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java openjdk/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	2011-01-08 01:26:50.447201948 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/NullComponentPeer.java
+--- openjdk/jdk/src/share/classes/sun/awt/NullComponentPeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/NullComponentPeer.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2000, 2008, 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
+@@ -255,7 +255,9 @@
+         throw new IllegalStateException(
+             "Page-flipping is not allowed on a lightweight component");
+     }
+-    public void flip(BufferCapabilities.FlipContents flipAction) {
++    public void flip(int x1, int y1, int x2, int y2,
++                     BufferCapabilities.FlipContents flipAction)
++    {
+         throw new IllegalStateException(
+             "Page-flipping is not allowed on a lightweight component");
+     }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/SubRegionShowable.java
+--- openjdk/jdk/src/share/classes/sun/awt/SubRegionShowable.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/SubRegionShowable.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2008, 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
+@@ -39,10 +39,11 @@
+     public void show(int x1, int y1, int x2, int y2);
+ 
+     /**
+-     * Validates the buffer and if successful shows the specified region.
++     * Shows the specified region if the buffer is not lost and the dimensions
++     * of the back-buffer match those of the component.
+      *
+      * @return true if successful
+      */
+     // NOTE: this is invoked by swing on the toolkit thread!
+-    public boolean validateAndShow(int x1, int y1, int x2, int y2);
++    public boolean showIfNotLost(int x1, int y1, int x2, int y2);
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/image/SunVolatileImage.java
+--- openjdk/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -1398,9 +1453,9 @@
 +        return volSurfaceManager.getPrimarySurfaceData();
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java openjdk/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/image/SunWritableRaster.java
+--- openjdk/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/image/SunWritableRaster.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -1439,81 +1494,33 @@
      public static void markDirty(DataBuffer db) {
          stealer.getTrackable(db).markDirty();
      }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java openjdk/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java	2011-01-08 01:26:50.451201991 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2008, 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
-@@ -37,6 +37,7 @@
- import sun.java2d.SunGraphicsEnvironment;
- import sun.java2d.SurfaceData;
- import sun.java2d.loops.CompositeType;
-+import static sun.java2d.pipe.hw.AccelSurface.*;
- 
- /**
-  * This SurfaceManager variant manages an accelerated volatile surface, if it
-@@ -117,7 +118,11 @@
-                 sdCurrent = sdAccel;
-             }
-         }
--        if (sdCurrent == null) {
-+        // only initialize the backup surface for images with unforced
-+        // acceleration type
-+        if (sdCurrent == null &&
-+            vImg.getForcedAccelSurfaceType() == UNDEFINED)
-+        {
-             sdCurrent = getBackupSurface();
-         }
-     }
-@@ -270,9 +275,13 @@
-      * the background).
-      */
-     public void initContents() {
--        Graphics g = vImg.createGraphics();
--        g.clearRect(0, 0, vImg.getWidth(), vImg.getHeight());
--        g.dispose();
-+        // images with forced acceleration type may have a null sdCurrent
-+        // because we do not create a backup surface for them
-+        if (sdCurrent != null) {
-+            Graphics g = vImg.createGraphics();
-+            g.clearRect(0, 0, vImg.getWidth(), vImg.getHeight());
-+            g.dispose();
-+        }
-     }
- 
-     /**
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java openjdk/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/image/VSyncedBSManager.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/image/VSyncedBSManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,121 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.awt.image;
@@ -1612,54 +1619,57 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/NullComponentPeer.java openjdk/jdk/src/share/classes/sun/awt/NullComponentPeer.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/NullComponentPeer.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/awt/NullComponentPeer.java	2011-01-08 01:26:50.451201991 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2000, 2008, 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
-@@ -255,7 +255,9 @@
-         throw new IllegalStateException(
-             "Page-flipping is not allowed on a lightweight component");
-     }
--    public void flip(BufferCapabilities.FlipContents flipAction) {
-+    public void flip(int x1, int y1, int x2, int y2,
-+                     BufferCapabilities.FlipContents flipAction)
-+    {
-         throw new IllegalStateException(
-             "Page-flipping is not allowed on a lightweight component");
-     }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/SubRegionShowable.java openjdk/jdk/src/share/classes/sun/awt/SubRegionShowable.java
---- openjdk.orig/jdk/src/share/classes/sun/awt/SubRegionShowable.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/awt/SubRegionShowable.java	2011-01-08 01:26:50.451201991 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2005, 2008, 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
-@@ -39,10 +39,11 @@
-     public void show(int x1, int y1, int x2, int y2);
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/awt/image/VolatileSurfaceManager.java
+--- openjdk/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/image/VolatileSurfaceManager.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2008, 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
+@@ -37,6 +37,7 @@
+ import sun.java2d.SunGraphicsEnvironment;
+ import sun.java2d.SurfaceData;
+ import sun.java2d.loops.CompositeType;
++import static sun.java2d.pipe.hw.AccelSurface.*;
+ 
+ /**
+  * This SurfaceManager variant manages an accelerated volatile surface, if it
+@@ -117,7 +118,11 @@
+                 sdCurrent = sdAccel;
+             }
+         }
+-        if (sdCurrent == null) {
++        // only initialize the backup surface for images with unforced
++        // acceleration type
++        if (sdCurrent == null &&
++            vImg.getForcedAccelSurfaceType() == UNDEFINED)
++        {
+             sdCurrent = getBackupSurface();
+         }
+     }
+@@ -270,9 +275,13 @@
+      * the background).
+      */
+     public void initContents() {
+-        Graphics g = vImg.createGraphics();
+-        g.clearRect(0, 0, vImg.getWidth(), vImg.getHeight());
+-        g.dispose();
++        // images with forced acceleration type may have a null sdCurrent
++        // because we do not create a backup surface for them
++        if (sdCurrent != null) {
++            Graphics g = vImg.createGraphics();
++            g.clearRect(0, 0, vImg.getWidth(), vImg.getHeight());
++            g.dispose();
++        }
+     }
  
      /**
--     * Validates the buffer and if successful shows the specified region.
-+     * Shows the specified region if the buffer is not lost and the dimensions
-+     * of the back-buffer match those of the component.
-      *
-      * @return true if successful
-      */
-     // NOTE: this is invoked by swing on the toolkit thread!
--    public boolean validateAndShow(int x1, int y1, int x2, int y2);
-+    public boolean showIfNotLost(int x1, int y1, int x2, int y2);
- }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/font/StrikeCache.java openjdk/jdk/src/share/classes/sun/font/StrikeCache.java
---- openjdk.orig/jdk/src/share/classes/sun/font/StrikeCache.java	2011-01-07 21:32:58.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/font/StrikeCache.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/font/StrikeCache.java
+--- openjdk/jdk/src/share/classes/sun/font/StrikeCache.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/font/StrikeCache.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -1769,33 +1779,33 @@
      static native void freeIntPointer(int ptr);
      static native void freeLongPointer(long ptr);
      private static native void freeIntMemory(int[] glyphPtrs, long pContext);
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/DestSurfaceProvider.java openjdk/jdk/src/share/classes/sun/java2d/DestSurfaceProvider.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/DestSurfaceProvider.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/DestSurfaceProvider.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/DestSurfaceProvider.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/DestSurfaceProvider.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,41 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d;
@@ -1814,9 +1824,211 @@
 +     */
 +    public Surface getDestSurface();
 +}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/loops/BlitBg.java openjdk/jdk/src/share/classes/sun/java2d/loops/BlitBg.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/loops/BlitBg.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/loops/BlitBg.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/SunGraphics2D.java
+--- openjdk/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2008, 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
+@@ -41,24 +41,17 @@
+ import java.awt.image.renderable.RenderContext;
+ import java.awt.image.AffineTransformOp;
+ import java.awt.image.Raster;
+-import java.awt.image.SampleModel;
+-import java.awt.image.VolatileImage;
+ import java.awt.image.WritableRaster;
+ import java.awt.Image;
+ import java.awt.Composite;
+ import java.awt.Color;
+-import java.awt.color.ColorSpace;
+-import java.awt.image.DataBuffer;
+ import java.awt.image.ColorModel;
+-import java.awt.image.IndexColorModel;
+-import java.awt.image.DirectColorModel;
+ import java.awt.GraphicsConfiguration;
+ import java.awt.Paint;
+ import java.awt.GradientPaint;
+ import java.awt.LinearGradientPaint;
+ import java.awt.RadialGradientPaint;
+ import java.awt.TexturePaint;
+-import java.awt.geom.Point2D;
+ import java.awt.geom.Rectangle2D;
+ import java.awt.geom.PathIterator;
+ import java.awt.geom.GeneralPath;
+@@ -69,19 +62,16 @@
+ import java.text.AttributedCharacterIterator;
+ import java.awt.Font;
+ import java.awt.image.ImageObserver;
+-import java.awt.image.ColorConvertOp;
+ import java.awt.Transparency;
+ import java.awt.font.GlyphVector;
+ import java.awt.font.TextLayout;
+ import sun.font.FontDesignMetrics;
+-import sun.font.StandardGlyphVector;
+ import sun.java2d.pipe.PixelDrawPipe;
+ import sun.java2d.pipe.PixelFillPipe;
+ import sun.java2d.pipe.ShapeDrawPipe;
+ import sun.java2d.pipe.ValidatePipe;
+ import sun.java2d.pipe.ShapeSpanIterator;
+ import sun.java2d.pipe.Region;
+-import sun.java2d.pipe.RegionIterator;
+ import sun.java2d.pipe.TextPipe;
+ import sun.java2d.pipe.DrawImagePipe;
+ import sun.java2d.pipe.LoopPipe;
+@@ -90,7 +80,6 @@
+ import sun.java2d.loops.CompositeType;
+ import sun.java2d.loops.SurfaceType;
+ import sun.java2d.loops.Blit;
+-import sun.java2d.loops.BlitBg;
+ import sun.java2d.loops.MaskFill;
+ import sun.font.FontManager;
+ import java.awt.font.FontRenderContext;
+@@ -99,7 +88,7 @@
+ import sun.awt.SunHints;
+ import java.util.Map;
+ import java.util.Iterator;
+-import sun.awt.image.OffScreenImage;
++import sun.java2d.DestSurfaceProvider;
+ import sun.misc.PerformanceLogger;
+ 
+ /**
+@@ -113,7 +102,7 @@
+  */
+ public final class SunGraphics2D
+     extends Graphics2D
+-    implements ConstrainableGraphics, Cloneable
++    implements ConstrainableGraphics, Cloneable, DestSurfaceProvider
+ {
+     /*
+      * Attribute States
+@@ -3288,4 +3277,14 @@
+     public Object getDestination() {
+         return surfaceData.getDestination();
+     }
++
++    /**
++     * {@inheritDoc}
++     *
++     * @see sun.java2d.DestSurfaceProvider#getDestSurface
++     */
++    @Override
++    public Surface getDestSurface() {
++        return surfaceData;
++    }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/SunGraphicsEnvironment.java
+--- openjdk/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -36,6 +36,7 @@
+ import java.awt.Toolkit;
+ import java.awt.font.TextAttribute;
+ import java.awt.image.BufferedImage;
++import java.awt.peer.ComponentPeer;
+ import java.io.BufferedReader;
+ import java.io.File;
+ import java.io.FileInputStream;
+@@ -1276,4 +1277,18 @@
+     /*
+      * ----END DISPLAY CHANGE SUPPORT----
+      */
++
++    /**
++     * Returns true if FlipBufferStrategy with COPIED buffer contents
++     * is preferred for this peer's GraphicsConfiguration over
++     * BlitBufferStrategy, false otherwise.
++     *
++     * The reason FlipBS could be preferred is that in some configurations
++     * an accelerated copy to the screen is supported (like Direct3D 9)
++     *
++     * @return true if flip strategy should be used, false otherwise
++     */
++    public boolean isFlipStrategyPreferred(ComponentPeer peer) {
++        return false;
++    }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/Surface.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/Surface.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,34 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d;
++
++/**
++ * This is a tag interface for a surface.
++ * @see sun.java2d.SurfaceData
++ * @see sun.java2d.pipe.hw.AccelSurface
++ */
++public interface Surface {
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/SurfaceData.java
+--- openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1999, 2008, 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
+@@ -93,7 +93,7 @@
+  * retrieved the tracker.
+  */
+ public abstract class SurfaceData
+-    implements Transparency, DisposerTarget, StateTrackable
++    implements Transparency, DisposerTarget, StateTrackable, Surface
+ {
+     private long pData;
+     private boolean valid;
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/SurfaceDataProxy.java
+--- openjdk/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2008, 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
+@@ -521,7 +521,7 @@
+                                             CompositeType.SrcNoEa,
+                                             dstType);
+         blitbg.BlitBg(srcData, dstData,
+-                      AlphaComposite.Src, null, bgColor,
++                      AlphaComposite.Src, null, bgColor.getRGB(),
+                       0, 0, 0, 0, w, h);
+         dstData.markDirty();
+     }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/loops/BlitBg.java
+--- openjdk/jdk/src/share/classes/sun/java2d/loops/BlitBg.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/loops/BlitBg.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1999, 2004, Oracle and/or its affiliates. All rights reserved.
@@ -1877,9 +2089,9 @@
                             int srcx, int srcy, int dstx, int dsty,
                             int width, int height)
          {
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java openjdk/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/loops/GeneralRenderer.java
+--- openjdk/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/loops/GeneralRenderer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -1898,9 +2110,9 @@
          mx = x1 = xPoints[off] + transx;
          my = y1 = yPoints[off] + transy;
          while (--nPoints > 0) {
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLBufImgOps.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLBufImgOps.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
@@ -1925,9 +2137,9 @@
          {
              return false;
          }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLContext.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLContext.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2168,9 +2380,9 @@
          }
      }
  }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLGraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2196,9 +2408,9 @@
      OGLContext getContext();
      long getNativeConfigInfo();
      boolean isCapPresent(int cap);
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLPaints.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLPaints.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2223,9 +2435,9 @@
                  return false;
              }
  
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLRenderer.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLRenderer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2313,9 +2525,9 @@
          public void copyArea(SunGraphics2D sg2d,
                               int x, int y, int w, int h, int dx, int dy)
          {
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/opengl/OGLSurfaceData.java
+--- openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2594,9 +2806,9 @@
 +        }
      }
  }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/BufferedContext.java
+--- openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -2890,9 +3102,9 @@
 +     */
 +    public abstract void restoreState();
  }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/BufferedOpCodes.java
+--- openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedOpCodes.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -2925,9 +3137,9 @@
  
      // multibuffering ops
      public static final int SWAP_BUFFERS         = 80;
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java
+--- openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/BufferedRenderPipe.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -3080,9 +3292,9 @@
      public void draw(SunGraphics2D sg2d, Shape s) {
          if (sg2d.strokeState == sg2d.STROKE_THIN) {
              if (s instanceof Polygon) {
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java openjdk/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java	2011-01-08 01:26:50.451201991 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/DrawImage.java
+--- openjdk/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -3099,923 +3311,33 @@
          }
      }
  
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java	2011-01-08 01:26:50.451201991 +0000
-@@ -0,0 +1,59 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+/**
-+ * An interface for receiving notifications about imminent accelerated device's
-+ * events. Upon receiving such event appropriate actions can be taken (for
-+ * example, resources associated with the device can be freed).
-+ */
-+public interface AccelDeviceEventListener {
-+    /**
-+     * Called when the device is about to be reset.
-+     *
-+     * One must release all native resources associated with the device which
-+     * prevent the device from being reset (such as Default Pool resources for
-+     * the D3D pipeline).
-+     *
-+     * It is safe to remove the listener while in the call back.
-+     *
-+     * Note: this method is called on the rendering thread,
-+     * do not call into user code, do not take RQ lock!
-+     */
-+    public void onDeviceReset();
-+
-+    /**
-+     * Called when the device is about to be disposed of.
-+     *
-+     * One must release all native resources associated with the device.
-+     *
-+     * It is safe to remove the listener while in the call back.
-+     *
-+     * Note: this method is called on the rendering thread,
-+     * do not call into user code, do not take RQ lock!
-+     */
-+    public void onDeviceDispose();
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java	2011-01-08 01:26:50.451201991 +0000
-@@ -0,0 +1,167 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import java.util.Collections;
-+import java.util.HashMap;
-+import java.util.Iterator;
-+import java.util.Map;
-+import java.util.Set;
-+
-+/**
-+ * This class is used to notify listeners about accelerated device's
-+ * events such as device reset or dispose that are about to occur.
-+ */
-+public class AccelDeviceEventNotifier {
-+
-+    private static AccelDeviceEventNotifier theInstance;
-+
-+    /**
-+     * A device is about to be reset. The listeners have to release all
-+     * resources associated with the device which are required for the device
-+     * to be reset.
-+     */
-+    public static final int DEVICE_RESET = 0;
-+
-+    /**
-+     * A device is about to be disposed. The listeners have to release all
-+     * resources associated with the device.
-+     */
-+    public static final int DEVICE_DISPOSED = 1;
-+
-+    private final Map<AccelDeviceEventListener, Integer> listeners;
-+
-+    private AccelDeviceEventNotifier() {
-+        listeners = Collections.synchronizedMap(
-+            new HashMap<AccelDeviceEventListener, Integer>(1));
-+    }
-+
-+    /**
-+     * Returns a singleton of AccelDeviceEventNotifier if it exists. If the
-+     * passed boolean is false and singleton doesn't exist yet, null is
-+     * returned. If the passed boolean is {@code true} and singleton doesn't
-+     * exist it will be created and returned.
-+     *
-+     * @param create whether to create a singleton instance if doesn't yet
-+     * exist
-+     * @return a singleton instance or null
-+     */
-+    private static synchronized
-+        AccelDeviceEventNotifier getInstance(boolean create)
-+    {
-+        if (theInstance == null && create) {
-+            theInstance = new AccelDeviceEventNotifier();
-+        }
-+        return theInstance;
-+    }
-+
-+    /**
-+     * Called to indicate that a device event had occured.
-+     * If a singleton exists, the listeners (those associated with
-+     * the device) will be notified.
-+     *
-+     * @param screen a screen number of the device which is a source of
-+     * the event
-+     * @param eventType a type of the event
-+     * @see #DEVICE_DISPOSED
-+     * @see #DEVICE_RESET
-+     */
-+    public static final void eventOccured(int screen, int eventType) {
-+        AccelDeviceEventNotifier notifier = getInstance(false);
-+        if (notifier != null) {
-+            notifier.notifyListeners(eventType, screen);
-+        }
-+    }
-+
-+    /**
-+     * Adds the listener associated with a device on particular screen.
-+     *
-+     * Note: the listener must be removed as otherwise it will forever
-+     * be referenced by the notifier.
-+     *
-+     * @param l the listener
-+     * @param screen the screen number indicating which device the listener is
-+     * interested in.
-+     */
-+    public static final void addListener(AccelDeviceEventListener l,int screen){
-+        getInstance(true).add(l, screen);
-+    }
-+
-+    /**
-+     * Removes the listener.
-+     *
-+     * @param l the listener
-+     */
-+    public static final void removeListener(AccelDeviceEventListener l) {
-+        getInstance(true).remove(l);
-+    }
-+
-+    private final void add(AccelDeviceEventListener theListener, int screen) {
-+        listeners.put(theListener, screen);
-+    }
-+    private final void remove(AccelDeviceEventListener theListener) {
-+        listeners.remove(theListener);
-+    }
-+
-+    /**
-+     * Notifies the listeners associated with the screen's device about the
-+     * event.
-+     *
-+     * Implementation note: the current list of listeners is first duplicated
-+     * which allows the listeners to remove themselves during the iteration.
-+     *
-+     * @param screen a screen number with which the device which is a source of
-+     * the event is associated with
-+     * @param eventType a type of the event
-+     * @see #DEVICE_DISPOSED
-+     * @see #DEVICE_RESET
-+     */
-+    private final void notifyListeners(int deviceEventType, int screen) {
-+        HashMap<AccelDeviceEventListener, Integer> listClone;
-+        Set<AccelDeviceEventListener> cloneSet;
-+
-+        synchronized(listeners) {
-+            listClone =
-+                new HashMap<AccelDeviceEventListener, Integer>(listeners);
-+        }
-+
-+        cloneSet = listClone.keySet();
-+        Iterator<AccelDeviceEventListener> itr = cloneSet.iterator();
-+        while (itr.hasNext()) {
-+            AccelDeviceEventListener current = itr.next();
-+            Integer i = listClone.get(current);
-+            // only notify listeners which are interested in this device
-+            if (i != null && i.intValue() != screen) {
-+                continue;
-+            }
-+            if (deviceEventType == DEVICE_RESET) {
-+                current.onDeviceReset();
-+            } else if (deviceEventType == DEVICE_DISPOSED) {
-+                current.onDeviceDispose();
-+            }
-+        }
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java	2011-01-08 01:26:50.451201991 +0000
-@@ -0,0 +1,95 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import java.awt.image.VolatileImage;
-+
-+/**
-+ * Implementors of this interface provida a way to create a
-+ * {@code VolatileImage} whose destination surface is an
-+ * {@link AccelSurface} of specified type.
-+ *
-+ * @see AccelSurface
-+ */
-+public interface AccelGraphicsConfig extends BufferedContextProvider {
-+    /**
-+     * Returns a VolatileImage with specified width, height, transparency
-+     * and guaranteed accelerated surface type. If such image can not be created
-+     * (out of vram error, specific surface type is not supported) null
-+     * is returned.
-+     *
-+     * Note: if {@link AccelSurface#TEXTURE} type is requested, rendering
-+     * to the image will be denied by throwing
-+     * {@code UnsupportedOperationException }
-+     * from {@link java.awt.image.VolatileImage#getGraphics} and
-+     * {@link java.awt.image.VolatileImage#createGraphics}
-+     *
-+     * @param width the width of the returned {@code VolatileImage}
-+     * @param height the height of the returned {@code VolatileImage}
-+     * @param transparency the specified transparency mode
-+     * @param type requested accelerated surface type as specified by constants
-+     * in AccelSurface interface
-+     * @return a {@code VolatileImage} backed up by requested accelerated
-+     * surface type or null
-+     * @throws IllegalArgumentException if the transparency is not a valid value
-+     * @see AccelSurface#TEXTURE
-+     * @see AccelSurface#RT_PLAIN
-+     * @see AccelSurface#RT_TEXTURE
-+     */
-+    public VolatileImage createCompatibleVolatileImage(int width, int height,
-+                                                       int transparency,
-+                                                       int type);
-+    /**
-+     * Returns object representing capabilities of the context associated
-+     * with this {@code AccelGraphicsConfig}.
-+     *
-+     * @return ContextCapabilities object representing caps
-+     * @see ContextCapabilities
-+     */
-+    public ContextCapabilities getContextCapabilities();
-+
-+    /**
-+     * Adds an {@code AccelDeviceEventListener} to listen to accelerated
-+     * device's (which is associated with this {@code AccelGraphicsConfig})
-+     * events.
-+     *
-+     * Note: a hard link to the listener may be kept so it must be explicitly
-+     * removed via {@link #removeDeviceEventListener()}.
-+     *
-+     * @param l the listener
-+     * @see AccelDeviceEventListener
-+     */
-+    public void addDeviceEventListener(AccelDeviceEventListener l);
-+
-+    /**
-+     * Removes an {@code AccelDeviceEventListener} from the list of listeners
-+     * for this device's events.
-+     *
-+     * @param l the listener
-+     * @see AccelDeviceEventListener
-+     */
-+    public void removeDeviceEventListener(AccelDeviceEventListener l);
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelSurface.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelSurface.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelSurface.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelSurface.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,136 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/ParallelogramPipe.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,66 @@
++/*
++ * Copyright (c) 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import java.awt.Rectangle;
-+import sun.java2d.Surface;
-+
-+/**
-+ * Abstraction for a hardware accelerated surface.
-+ */
-+public interface AccelSurface extends BufferedContextProvider, Surface {
-+    /**
-+     * Undefined
-+     */
-+    public static final int UNDEFINED       = 0;
-+    /**
-+     * Window (or window substitute) surface
-+     */
-+    public static final int WINDOW          = 1;
-+    /**
-+     * Render-To Plain surface (pbuffer for OpenGL, Render Target surface
-+     * for Direct3D)
-+     */
-+    public static final int RT_PLAIN        = 2;
-+    /**
-+     * Texture surface
-+     */
-+    public static final int TEXTURE         = 3;
-+    /**
-+     * A back-buffer surface (SwapChain surface for Direct3D, backbuffer for
-+     * OpenGL)
-+     */
-+    public static final int FLIP_BACKBUFFER = 4;
-+    /**
-+     * Render-To Texture surface (fbobject for OpenGL, texture with render-to
-+     * attribute for Direct3D)
-+     */
-+    public static final int RT_TEXTURE      = 5;
-+
-+    /**
-+     * Returns {@code int} representing surface's type as defined by constants
-+     * in this interface.
-+     *
-+     * @return an integer representing this surface's type
-+     * @see AccelSurface#UNDEFINED
-+     * @see AccelSurface#WINDOW
-+     * @see AccelSurface#RT_PLAIN
-+     * @see AccelSurface#TEXTURE
-+     * @see AccelSurface#FLIP_BACKBUFFER
-+     * @see AccelSurface#RT_TEXTURE
-+     */
-+    public int getType();
-+
-+    /**
-+     * Returns a pointer to the native surface data associated with this
-+     * surface.
-+     * Note: this pointer is only valid on the rendering thread.
-+     *
-+     * @return pointer to the native surface's data
-+     */
-+    public long getNativeOps();
-+
-+    /**
-+     * Returns a pointer to the real native resource
-+     * of the specified type associated with this AccelSurface.
-+     * Note: this pointer is only valid on the rendering thread.
-+     *
-+     * @param resType the type of the requested resource
-+     * @return a long containing a pointer to the native resource of the
-+     * specified type or 0L if such resource doesn't exist for this surface
-+     */
-+    public long getNativeResource(int resType);
-+
-+    /**
-+     * Marks this surface dirty.
-+     */
-+    public void markDirty();
-+
-+    /**
-+     * Returns whether the pipeline considers this surface valid. A surface
-+     * may become invalid if it is disposed of, or resized.
-+     *
-+     * @return true if valid, false otherwise
-+     */
-+    public boolean isValid();
-+
-+    /**
-+     * Returns whether this surface is lost. The return value is only valid
-+     * on the render thread, meaning that even if this method returns
-+     * {@code true} it could be lost in the next moment unless it is called
-+     * on the rendering thread.
-+     *
-+     * @return true if the surface is known to be lost, false otherwise
-+     */
-+    public boolean isSurfaceLost();
-+
-+    /**
-+     * Returns the requested bounds of the destination surface. The real bounds
-+     * of the native accelerated surface may differ. Use
-+     * {@link #getNativeBounds} to get the bounds of the native surface.
-+     *
-+     * @return Rectangle representing java surface's bounds
-+     */
-+    public Rectangle getBounds();
-+
-+    /**
-+     * Returns real bounds of the native surface, which may differ from those
-+     * returned by {@link #getBounds}.
-+     *
-+     * @return Rectangle representing native surface's bounds
-+     */
-+    public Rectangle getNativeBounds();
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,74 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import java.awt.Graphics;
-+import java.awt.Graphics2D;
-+import java.awt.GraphicsConfiguration;
-+import sun.awt.image.SunVolatileImage;
-+import static sun.java2d.pipe.hw.AccelSurface.*;
-+
-+/**
-+ * This is an image with forced type of the accelerated surface.
-+ */
-+public class AccelTypedVolatileImage extends SunVolatileImage {
-+
-+    /**
-+     * Creates a volatile image with specified type of accelerated surface.
-+     *
-+     * @param graphicsConfig a GraphicsConfiguration for which this image should
-+     *        be created.
-+     * @param width width
-+     * @param height width
-+     * @param transparency type of {@link java.awt.Transparency transparency}
-+     *        requested for the image
-+     * @param accType type of the desired accelerated surface as defined in
-+     *        AccelSurface interface
-+     * @see sun.java2d.pipe.hw.AccelSurface
-+     */
-+    public AccelTypedVolatileImage(GraphicsConfiguration graphicsConfig,
-+                                   int width, int height, int transparency,
-+                                   int accType)
-+    {
-+        super(null, graphicsConfig, width, height, null, transparency,
-+              null, accType);
-+    }
-+
-+    /**
-+     * {@inheritDoc}
-+     *
-+     * This method will throw {@code UnsupportedOperationException} if it this
-+     * image's destination surface can not be rendered to.
-+     */
-+    @Override
-+    public Graphics2D createGraphics() {
-+        if (getForcedAccelSurfaceType() == TEXTURE) {
-+            throw new UnsupportedOperationException("Can't render " +
-+                                                    "to a non-RT Texture");
-+        }
-+        return super.createGraphics();
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,45 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import sun.java2d.pipe.BufferedContext;
-+
-+/**
-+ * Classes implementing this interface can provide the {@code BufferedContext}
-+ * associated with or used by them.
-+ *
-+ * @see sun.java2d.pipe.BufferedContext
-+ */
-+public interface BufferedContextProvider {
-+    /**
-+     * Retrieves a context associated with object implementing this
-+     * interface.
-+     *
-+     * @return associated context
-+     * @see sun.java2d.pipe.BufferedContext
-+     */
-+    public BufferedContext getContext();
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,128 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+/**
-+ * Represents a set of capabilities of a BufferedContext and associated
-+ * AccelGraphicsConfig.
-+ *
-+ * @see AccelGraphicsConfig
-+ */
-+public class ContextCapabilities {
-+    /** Indicates that the context has no capabilities. */
-+    public static final int CAPS_EMPTY             = (0 << 0);
-+    /** Indicates that the context supports RT surfaces with alpha channel. */
-+    public static final int CAPS_RT_PLAIN_ALPHA    = (1 << 1);
-+    /** Indicates that the context supports RT textures with alpha channel. */
-+    public static final int CAPS_RT_TEXTURE_ALPHA  = (1 << 2);
-+    /** Indicates that the context supports opaque RT textures. */
-+    public static final int CAPS_RT_TEXTURE_OPAQUE = (1 << 3);
-+    /** Indicates that the context supports multitexturing. */
-+    public static final int CAPS_MULTITEXTURE      = (1 << 4);
-+    /** Indicates that the context supports non-pow2 texture dimensions. */
-+    public static final int CAPS_TEXNONPOW2        = (1 << 5);
-+    /** Indicates that the context supports non-square textures. */
-+    public static final int CAPS_TEXNONSQUARE      = (1 << 6);
-+    /** Indicates that the context supports pixel shader 2.0 or better. */
-+    public static final int CAPS_PS20              = (1 << 7);
-+    /** Indicates that the context supports pixel shader 3.0 or better. */
-+    public static final int CAPS_PS30              = (1 << 8);
-+    /*
-+     *  Pipeline contexts should use this for defining pipeline-specific
-+     *  capabilities, for example:
-+     *    int CAPS_D3D_1 = (FIRST_PRIVATE_CAP << 0);
-+     *    int CAPS_D3D_2 = (FIRST_PRIVATE_CAP << 1);
-+     */
-+    protected static final int FIRST_PRIVATE_CAP   = (1 << 16);
-+
-+    protected final int caps;
-+    protected final String adapterId;
-+
-+    /**
-+     * Constructs a {@code ContextCapabilities} object.
-+     * @param caps an {@code int} representing the capabilities
-+     * @param a {@code String} representing the name of the adapter, or null,
-+     * in which case the adapterId will be set to "unknown adapter".
-+     */
-+    protected ContextCapabilities(int caps, String adapterId) {
-+        this.caps = caps;
-+        this.adapterId = adapterId != null ? adapterId : "unknown adapter";
-+    }
-+
-+    /**
-+     * Returns a string representing the name of the graphics adapter if such
-+     * could be determined. It is guaranteed to never return {@code null}.
-+     * @return string representing adapter id
-+     */
-+    public String getAdapterId() {
-+        return adapterId;
-+    }
-+
-+    /**
-+     * Returns an {@code int} with capabilities (OR-ed constants defined in
-+     * this class and its pipeline-specific subclasses).
-+     * @return capabilities as {@code int}
-+     */
-+    public int getCaps() {
-+        return caps;
-+    }
-+
-+    @Override
-+    public String toString() {
-+        StringBuffer buf =
-+            new StringBuffer("ContextCapabilities: adapter=" +
-+                             adapterId+", caps=");
-+        if (caps == CAPS_EMPTY) {
-+            buf.append("CAPS_EMPTY");
-+        } else {
-+            if ((caps & CAPS_RT_PLAIN_ALPHA) != 0) {
-+                buf.append("CAPS_RT_PLAIN_ALPHA|");
-+            }
-+            if ((caps & CAPS_RT_TEXTURE_ALPHA) != 0) {
-+                buf.append("CAPS_RT_TEXTURE_ALPHA|");
-+            }
-+            if ((caps & CAPS_RT_TEXTURE_OPAQUE) != 0) {
-+                buf.append("CAPS_RT_TEXTURE_OPAQUE|");
-+            }
-+            if ((caps & CAPS_MULTITEXTURE) != 0) {
-+                buf.append("CAPS_MULTITEXTURE|");
-+            }
-+            if ((caps & CAPS_TEXNONPOW2) != 0) {
-+                buf.append("CAPS_TEXNONPOW2|");
-+            }
-+            if ((caps & CAPS_TEXNONSQUARE) != 0) {
-+                buf.append("CAPS_TEXNONSQUARE|");
-+            }
-+            if ((caps & CAPS_PS20) != 0) {
-+                buf.append("CAPS_PS20|");
-+            }
-+            if ((caps & CAPS_PS30) != 0) {
-+                buf.append("CAPS_PS30|");
-+            }
-+        }
-+        return buf.toString();
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,154 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d.pipe.hw;
-+
-+import java.awt.BufferCapabilities;
-+import java.awt.ImageCapabilities;
-+
-+/**
-+ * Provides extended BufferStrategy capabilities, allowing to specify
-+ * the type of vertical refresh synchronization for a buffer strategy.
-+ *
-+ * This BS capability is always page flipping because v-sync is only relevant
-+ * to flipping buffer strategies.
-+ *
-+ * Note that asking for a v-synced BS doesn't necessarily guarantee that it will
-+ * be v-synced since the vsync capability may be disabled in the driver, or
-+ * there may be other restriction (like a number of v-synced buffer strategies
-+ * allowed per vm). Because of this {@code createBufferStrategy} doesn't
-+ * throw {@code AWTException} when a v-synced BS could not be created when
-+ * requested.
-+ *
-+ * @see java.awt.Canvas#createBufferStrategy(int, BufferCapabilities)
-+ * @see java.awt.Window#createBufferStrategy(int, BufferCapabilities)
-+ */
-+public class ExtendedBufferCapabilities extends BufferCapabilities {
-+
-+    /**
-+     * Type of synchronization on vertical retrace.
-+     */
-+    public static enum VSyncType {
-+        /**
-+         * Use the default v-sync mode appropriate for given BufferStrategy
-+         * and situation.
-+         */
-+        VSYNC_DEFAULT(0),
-+
-+        /**
-+         * Synchronize flip on vertical retrace.
-+         */
-+        VSYNC_ON(1),
-+
-+        /**
-+         * Do not synchronize flip on vertical retrace.
-+         */
-+        VSYNC_OFF(2);
-+
-+        /**
-+         * Used to identify the v-sync type (independent of the constants
-+         * order as opposed to {@code ordinal()}).
-+         */
-+        public int id() {
-+            return id;
-+        }
-+
-+        private VSyncType(int id) {
-+            this.id = id;
-+        }
-+        private int id;
-+    }
-+
-+    private VSyncType vsync;
-+
-+    /**
-+     * Creates an ExtendedBufferCapabilities object with front/back/flip caps
-+     * from the passed cap, and VSYNC_DEFAULT v-sync mode.
-+     */
-+    public ExtendedBufferCapabilities(BufferCapabilities caps) {
-+        super(caps.getFrontBufferCapabilities(),
-+              caps.getBackBufferCapabilities(),
-+              caps.getFlipContents());
-+
-+        this.vsync = VSyncType.VSYNC_DEFAULT;
-+    }
-+
-+    /**
-+     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
-+     * from the passed caps, and VSYNC_DEFAULT v-sync mode.
-+     */
-+    public ExtendedBufferCapabilities(ImageCapabilities front,
-+                                      ImageCapabilities back, FlipContents flip)
-+    {
-+        super(front, back, flip);
-+
-+        this.vsync = VSyncType.VSYNC_DEFAULT;
-+    }
-+
-+    /**
-+     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
-+     * from the passed image/flip caps, and the v-sync type.
-+     */
-+    public ExtendedBufferCapabilities(ImageCapabilities front,
-+                                      ImageCapabilities back, FlipContents flip,
-+                                      VSyncType t)
-+    {
-+        super(front, back, flip);
-+
-+        this.vsync = t;
-+    }
-+
-+    /**
-+     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
-+     * from the passed cap, and the passed v-sync mode.
-+     */
-+    public ExtendedBufferCapabilities(BufferCapabilities caps, VSyncType t) {
-+        super(caps.getFrontBufferCapabilities(),
-+              caps.getBackBufferCapabilities(),
-+              caps.getFlipContents());
-+
-+        this.vsync = t;
-+    }
-+
-+    /**
-+     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
-+     * from the object, and passed v-sync mode.
-+     */
-+    public ExtendedBufferCapabilities derive(VSyncType t) {
-+        return new ExtendedBufferCapabilities(this, t);
-+    }
-+
-+    /**
-+     * Returns the type of v-sync requested by this capabilities instance.
-+     */
-+    public VSyncType getVSync() {
-+        return vsync;
-+    }
-+
-+    @Override
-+    public final boolean isPageFlipping() {
-+        return true;
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java openjdk/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/ParallelogramPipe.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,66 @@
-+/*
-+ * Copyright 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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.pipe;
@@ -4059,33 +3381,33 @@
 +                                  double dx2, double dy2,
 +                                  double lw1, double lw2);
 +}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java openjdk/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/PixelToParallelogramConverter.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,417 @@
 +/*
-+ * Copyright 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.  Sun designates this
++ * Copyright (c) 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.pipe;
@@ -4480,211 +3802,899 @@
 +        outrenderer.fillParallelogram(sg2d, px, py, dx1, dy1, dx2, dy2);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphics2D.java openjdk/jdk/src/share/classes/sun/java2d/SunGraphics2D.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	2011-01-08 01:26:50.455202035 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2008, 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
-@@ -41,24 +41,17 @@
- import java.awt.image.renderable.RenderContext;
- import java.awt.image.AffineTransformOp;
- import java.awt.image.Raster;
--import java.awt.image.SampleModel;
--import java.awt.image.VolatileImage;
- import java.awt.image.WritableRaster;
- import java.awt.Image;
- import java.awt.Composite;
- import java.awt.Color;
--import java.awt.color.ColorSpace;
--import java.awt.image.DataBuffer;
- import java.awt.image.ColorModel;
--import java.awt.image.IndexColorModel;
--import java.awt.image.DirectColorModel;
- import java.awt.GraphicsConfiguration;
- import java.awt.Paint;
- import java.awt.GradientPaint;
- import java.awt.LinearGradientPaint;
- import java.awt.RadialGradientPaint;
- import java.awt.TexturePaint;
--import java.awt.geom.Point2D;
- import java.awt.geom.Rectangle2D;
- import java.awt.geom.PathIterator;
- import java.awt.geom.GeneralPath;
-@@ -69,19 +62,16 @@
- import java.text.AttributedCharacterIterator;
- import java.awt.Font;
- import java.awt.image.ImageObserver;
--import java.awt.image.ColorConvertOp;
- import java.awt.Transparency;
- import java.awt.font.GlyphVector;
- import java.awt.font.TextLayout;
- import sun.font.FontDesignMetrics;
--import sun.font.StandardGlyphVector;
- import sun.java2d.pipe.PixelDrawPipe;
- import sun.java2d.pipe.PixelFillPipe;
- import sun.java2d.pipe.ShapeDrawPipe;
- import sun.java2d.pipe.ValidatePipe;
- import sun.java2d.pipe.ShapeSpanIterator;
- import sun.java2d.pipe.Region;
--import sun.java2d.pipe.RegionIterator;
- import sun.java2d.pipe.TextPipe;
- import sun.java2d.pipe.DrawImagePipe;
- import sun.java2d.pipe.LoopPipe;
-@@ -90,7 +80,6 @@
- import sun.java2d.loops.CompositeType;
- import sun.java2d.loops.SurfaceType;
- import sun.java2d.loops.Blit;
--import sun.java2d.loops.BlitBg;
- import sun.java2d.loops.MaskFill;
- import sun.font.FontManager;
- import java.awt.font.FontRenderContext;
-@@ -99,7 +88,7 @@
- import sun.awt.SunHints;
- import java.util.Map;
- import java.util.Iterator;
--import sun.awt.image.OffScreenImage;
-+import sun.java2d.DestSurfaceProvider;
- import sun.misc.PerformanceLogger;
- 
- /**
-@@ -113,7 +102,7 @@
-  */
- public final class SunGraphics2D
-     extends Graphics2D
--    implements ConstrainableGraphics, Cloneable
-+    implements ConstrainableGraphics, Cloneable, DestSurfaceProvider
- {
-     /*
-      * Attribute States
-@@ -3288,4 +3277,14 @@
-     public Object getDestination() {
-         return surfaceData.getDestination();
-     }
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventListener.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,59 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++/**
++ * An interface for receiving notifications about imminent accelerated device's
++ * events. Upon receiving such event appropriate actions can be taken (for
++ * example, resources associated with the device can be freed).
++ */
++public interface AccelDeviceEventListener {
++    /**
++     * Called when the device is about to be reset.
++     *
++     * One must release all native resources associated with the device which
++     * prevent the device from being reset (such as Default Pool resources for
++     * the D3D pipeline).
++     *
++     * It is safe to remove the listener while in the call back.
++     *
++     * Note: this method is called on the rendering thread,
++     * do not call into user code, do not take RQ lock!
++     */
++    public void onDeviceReset();
++
++    /**
++     * Called when the device is about to be disposed of.
++     *
++     * One must release all native resources associated with the device.
++     *
++     * It is safe to remove the listener while in the call back.
++     *
++     * Note: this method is called on the rendering thread,
++     * do not call into user code, do not take RQ lock!
++     */
++    public void onDeviceDispose();
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelDeviceEventNotifier.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,167 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import java.util.Collections;
++import java.util.HashMap;
++import java.util.Iterator;
++import java.util.Map;
++import java.util.Set;
++
++/**
++ * This class is used to notify listeners about accelerated device's
++ * events such as device reset or dispose that are about to occur.
++ */
++public class AccelDeviceEventNotifier {
++
++    private static AccelDeviceEventNotifier theInstance;
++
++    /**
++     * A device is about to be reset. The listeners have to release all
++     * resources associated with the device which are required for the device
++     * to be reset.
++     */
++    public static final int DEVICE_RESET = 0;
++
++    /**
++     * A device is about to be disposed. The listeners have to release all
++     * resources associated with the device.
++     */
++    public static final int DEVICE_DISPOSED = 1;
++
++    private final Map<AccelDeviceEventListener, Integer> listeners;
++
++    private AccelDeviceEventNotifier() {
++        listeners = Collections.synchronizedMap(
++            new HashMap<AccelDeviceEventListener, Integer>(1));
++    }
++
++    /**
++     * Returns a singleton of AccelDeviceEventNotifier if it exists. If the
++     * passed boolean is false and singleton doesn't exist yet, null is
++     * returned. If the passed boolean is {@code true} and singleton doesn't
++     * exist it will be created and returned.
++     *
++     * @param create whether to create a singleton instance if doesn't yet
++     * exist
++     * @return a singleton instance or null
++     */
++    private static synchronized
++        AccelDeviceEventNotifier getInstance(boolean create)
++    {
++        if (theInstance == null && create) {
++            theInstance = new AccelDeviceEventNotifier();
++        }
++        return theInstance;
++    }
++
++    /**
++     * Called to indicate that a device event had occured.
++     * If a singleton exists, the listeners (those associated with
++     * the device) will be notified.
++     *
++     * @param screen a screen number of the device which is a source of
++     * the event
++     * @param eventType a type of the event
++     * @see #DEVICE_DISPOSED
++     * @see #DEVICE_RESET
++     */
++    public static final void eventOccured(int screen, int eventType) {
++        AccelDeviceEventNotifier notifier = getInstance(false);
++        if (notifier != null) {
++            notifier.notifyListeners(eventType, screen);
++        }
++    }
++
++    /**
++     * Adds the listener associated with a device on particular screen.
++     *
++     * Note: the listener must be removed as otherwise it will forever
++     * be referenced by the notifier.
++     *
++     * @param l the listener
++     * @param screen the screen number indicating which device the listener is
++     * interested in.
++     */
++    public static final void addListener(AccelDeviceEventListener l,int screen){
++        getInstance(true).add(l, screen);
++    }
++
++    /**
++     * Removes the listener.
++     *
++     * @param l the listener
++     */
++    public static final void removeListener(AccelDeviceEventListener l) {
++        getInstance(true).remove(l);
++    }
++
++    private final void add(AccelDeviceEventListener theListener, int screen) {
++        listeners.put(theListener, screen);
++    }
++    private final void remove(AccelDeviceEventListener theListener) {
++        listeners.remove(theListener);
++    }
++
++    /**
++     * Notifies the listeners associated with the screen's device about the
++     * event.
++     *
++     * Implementation note: the current list of listeners is first duplicated
++     * which allows the listeners to remove themselves during the iteration.
++     *
++     * @param screen a screen number with which the device which is a source of
++     * the event is associated with
++     * @param eventType a type of the event
++     * @see #DEVICE_DISPOSED
++     * @see #DEVICE_RESET
++     */
++    private final void notifyListeners(int deviceEventType, int screen) {
++        HashMap<AccelDeviceEventListener, Integer> listClone;
++        Set<AccelDeviceEventListener> cloneSet;
++
++        synchronized(listeners) {
++            listClone =
++                new HashMap<AccelDeviceEventListener, Integer>(listeners);
++        }
++
++        cloneSet = listClone.keySet();
++        Iterator<AccelDeviceEventListener> itr = cloneSet.iterator();
++        while (itr.hasNext()) {
++            AccelDeviceEventListener current = itr.next();
++            Integer i = listClone.get(current);
++            // only notify listeners which are interested in this device
++            if (i != null && i.intValue() != screen) {
++                continue;
++            }
++            if (deviceEventType == DEVICE_RESET) {
++                current.onDeviceReset();
++            } else if (deviceEventType == DEVICE_DISPOSED) {
++                current.onDeviceDispose();
++            }
++        }
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelGraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,95 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import java.awt.image.VolatileImage;
++
++/**
++ * Implementors of this interface provida a way to create a
++ * {@code VolatileImage} whose destination surface is an
++ * {@link AccelSurface} of specified type.
++ *
++ * @see AccelSurface
++ */
++public interface AccelGraphicsConfig extends BufferedContextProvider {
++    /**
++     * Returns a VolatileImage with specified width, height, transparency
++     * and guaranteed accelerated surface type. If such image can not be created
++     * (out of vram error, specific surface type is not supported) null
++     * is returned.
++     *
++     * Note: if {@link AccelSurface#TEXTURE} type is requested, rendering
++     * to the image will be denied by throwing
++     * {@code UnsupportedOperationException }
++     * from {@link java.awt.image.VolatileImage#getGraphics} and
++     * {@link java.awt.image.VolatileImage#createGraphics}
++     *
++     * @param width the width of the returned {@code VolatileImage}
++     * @param height the height of the returned {@code VolatileImage}
++     * @param transparency the specified transparency mode
++     * @param type requested accelerated surface type as specified by constants
++     * in AccelSurface interface
++     * @return a {@code VolatileImage} backed up by requested accelerated
++     * surface type or null
++     * @throws IllegalArgumentException if the transparency is not a valid value
++     * @see AccelSurface#TEXTURE
++     * @see AccelSurface#RT_PLAIN
++     * @see AccelSurface#RT_TEXTURE
++     */
++    public VolatileImage createCompatibleVolatileImage(int width, int height,
++                                                       int transparency,
++                                                       int type);
++    /**
++     * Returns object representing capabilities of the context associated
++     * with this {@code AccelGraphicsConfig}.
++     *
++     * @return ContextCapabilities object representing caps
++     * @see ContextCapabilities
++     */
++    public ContextCapabilities getContextCapabilities();
++
++    /**
++     * Adds an {@code AccelDeviceEventListener} to listen to accelerated
++     * device's (which is associated with this {@code AccelGraphicsConfig})
++     * events.
++     *
++     * Note: a hard link to the listener may be kept so it must be explicitly
++     * removed via {@link #removeDeviceEventListener()}.
++     *
++     * @param l the listener
++     * @see AccelDeviceEventListener
++     */
++    public void addDeviceEventListener(AccelDeviceEventListener l);
++
++    /**
++     * Removes an {@code AccelDeviceEventListener} from the list of listeners
++     * for this device's events.
++     *
++     * @param l the listener
++     * @see AccelDeviceEventListener
++     */
++    public void removeDeviceEventListener(AccelDeviceEventListener l);
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/AccelSurface.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelSurface.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,136 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import java.awt.Rectangle;
++import sun.java2d.Surface;
++
++/**
++ * Abstraction for a hardware accelerated surface.
++ */
++public interface AccelSurface extends BufferedContextProvider, Surface {
++    /**
++     * Undefined
++     */
++    public static final int UNDEFINED       = 0;
++    /**
++     * Window (or window substitute) surface
++     */
++    public static final int WINDOW          = 1;
++    /**
++     * Render-To Plain surface (pbuffer for OpenGL, Render Target surface
++     * for Direct3D)
++     */
++    public static final int RT_PLAIN        = 2;
++    /**
++     * Texture surface
++     */
++    public static final int TEXTURE         = 3;
++    /**
++     * A back-buffer surface (SwapChain surface for Direct3D, backbuffer for
++     * OpenGL)
++     */
++    public static final int FLIP_BACKBUFFER = 4;
++    /**
++     * Render-To Texture surface (fbobject for OpenGL, texture with render-to
++     * attribute for Direct3D)
++     */
++    public static final int RT_TEXTURE      = 5;
++
++    /**
++     * Returns {@code int} representing surface's type as defined by constants
++     * in this interface.
++     *
++     * @return an integer representing this surface's type
++     * @see AccelSurface#UNDEFINED
++     * @see AccelSurface#WINDOW
++     * @see AccelSurface#RT_PLAIN
++     * @see AccelSurface#TEXTURE
++     * @see AccelSurface#FLIP_BACKBUFFER
++     * @see AccelSurface#RT_TEXTURE
++     */
++    public int getType();
++
++    /**
++     * Returns a pointer to the native surface data associated with this
++     * surface.
++     * Note: this pointer is only valid on the rendering thread.
++     *
++     * @return pointer to the native surface's data
++     */
++    public long getNativeOps();
++
++    /**
++     * Returns a pointer to the real native resource
++     * of the specified type associated with this AccelSurface.
++     * Note: this pointer is only valid on the rendering thread.
++     *
++     * @param resType the type of the requested resource
++     * @return a long containing a pointer to the native resource of the
++     * specified type or 0L if such resource doesn't exist for this surface
++     */
++    public long getNativeResource(int resType);
++
++    /**
++     * Marks this surface dirty.
++     */
++    public void markDirty();
++
++    /**
++     * Returns whether the pipeline considers this surface valid. A surface
++     * may become invalid if it is disposed of, or resized.
++     *
++     * @return true if valid, false otherwise
++     */
++    public boolean isValid();
++
++    /**
++     * Returns whether this surface is lost. The return value is only valid
++     * on the render thread, meaning that even if this method returns
++     * {@code true} it could be lost in the next moment unless it is called
++     * on the rendering thread.
++     *
++     * @return true if the surface is known to be lost, false otherwise
++     */
++    public boolean isSurfaceLost();
++
++    /**
++     * Returns the requested bounds of the destination surface. The real bounds
++     * of the native accelerated surface may differ. Use
++     * {@link #getNativeBounds} to get the bounds of the native surface.
++     *
++     * @return Rectangle representing java surface's bounds
++     */
++    public Rectangle getBounds();
++
++    /**
++     * Returns real bounds of the native surface, which may differ from those
++     * returned by {@link #getBounds}.
++     *
++     * @return Rectangle representing native surface's bounds
++     */
++    public Rectangle getNativeBounds();
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/AccelTypedVolatileImage.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,74 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import java.awt.Graphics;
++import java.awt.Graphics2D;
++import java.awt.GraphicsConfiguration;
++import sun.awt.image.SunVolatileImage;
++import static sun.java2d.pipe.hw.AccelSurface.*;
++
++/**
++ * This is an image with forced type of the accelerated surface.
++ */
++public class AccelTypedVolatileImage extends SunVolatileImage {
++
++    /**
++     * Creates a volatile image with specified type of accelerated surface.
++     *
++     * @param graphicsConfig a GraphicsConfiguration for which this image should
++     *        be created.
++     * @param width width
++     * @param height width
++     * @param transparency type of {@link java.awt.Transparency transparency}
++     *        requested for the image
++     * @param accType type of the desired accelerated surface as defined in
++     *        AccelSurface interface
++     * @see sun.java2d.pipe.hw.AccelSurface
++     */
++    public AccelTypedVolatileImage(GraphicsConfiguration graphicsConfig,
++                                   int width, int height, int transparency,
++                                   int accType)
++    {
++        super(null, graphicsConfig, width, height, null, transparency,
++              null, accType);
++    }
 +
 +    /**
 +     * {@inheritDoc}
 +     *
-+     * @see sun.java2d.DestSurfaceProvider#getDestSurface
-+     */
-+    @Override
-+    public Surface getDestSurface() {
-+        return surfaceData;
-+    }
- }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java openjdk/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphicsEnvironment.java	2011-01-08 01:26:50.455202035 +0000
-@@ -36,6 +36,7 @@
- import java.awt.Toolkit;
- import java.awt.font.TextAttribute;
- import java.awt.image.BufferedImage;
-+import java.awt.peer.ComponentPeer;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
-@@ -1276,4 +1277,18 @@
-     /*
-      * ----END DISPLAY CHANGE SUPPORT----
-      */
-+
-+    /**
-+     * Returns true if FlipBufferStrategy with COPIED buffer contents
-+     * is preferred for this peer's GraphicsConfiguration over
-+     * BlitBufferStrategy, false otherwise.
-+     *
-+     * The reason FlipBS could be preferred is that in some configurations
-+     * an accelerated copy to the screen is supported (like Direct3D 9)
-+     *
-+     * @return true if flip strategy should be used, false otherwise
-+     */
-+    public boolean isFlipStrategyPreferred(ComponentPeer peer) {
-+        return false;
-+    }
- }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceData.java openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceData.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java	2011-01-08 01:26:50.455202035 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2008, 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
-@@ -93,7 +93,7 @@
-  * retrieved the tracker.
-  */
- public abstract class SurfaceData
--    implements Transparency, DisposerTarget, StateTrackable
-+    implements Transparency, DisposerTarget, StateTrackable, Surface
- {
-     private long pData;
-     private boolean valid;
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java openjdk/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java	2011-01-07 21:33:02.000000000 +0000
-+++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceDataProxy.java	2011-01-08 01:26:50.455202035 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2007, 2008, 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
-@@ -521,7 +521,7 @@
-                                             CompositeType.SrcNoEa,
-                                             dstType);
-         blitbg.BlitBg(srcData, dstData,
--                      AlphaComposite.Src, null, bgColor,
-+                      AlphaComposite.Src, null, bgColor.getRGB(),
-                       0, 0, 0, 0, w, h);
-         dstData.markDirty();
-     }
-diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/Surface.java openjdk/jdk/src/share/classes/sun/java2d/Surface.java
---- openjdk.orig/jdk/src/share/classes/sun/java2d/Surface.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/classes/sun/java2d/Surface.java	2011-01-08 01:26:50.455202035 +0000
-@@ -0,0 +1,34 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
++     * This method will throw {@code UnsupportedOperationException} if it this
++     * image's destination surface can not be rendered to.
++     */
++    @Override
++    public Graphics2D createGraphics() {
++        if (getForcedAccelSurfaceType() == TEXTURE) {
++            throw new UnsupportedOperationException("Can't render " +
++                                                    "to a non-RT Texture");
++        }
++        return super.createGraphics();
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/BufferedContextProvider.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,45 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import sun.java2d.pipe.BufferedContext;
++
++/**
++ * Classes implementing this interface can provide the {@code BufferedContext}
++ * associated with or used by them.
++ *
++ * @see sun.java2d.pipe.BufferedContext
++ */
++public interface BufferedContextProvider {
++    /**
++     * Retrieves a context associated with object implementing this
++     * interface.
++     *
++     * @return associated context
++     * @see sun.java2d.pipe.BufferedContext
++     */
++    public BufferedContext getContext();
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ContextCapabilities.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,128 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d;
-+
-+/**
-+ * This is a tag interface for a surface.
-+ * @see sun.java2d.SurfaceData
-+ * @see sun.java2d.pipe.hw.AccelSurface
-+ */
-+public interface Surface {
-+}
-diff -Nru openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.c openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c
---- openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c	2011-01-08 01:26:50.455202035 +0000
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++/**
++ * Represents a set of capabilities of a BufferedContext and associated
++ * AccelGraphicsConfig.
++ *
++ * @see AccelGraphicsConfig
++ */
++public class ContextCapabilities {
++    /** Indicates that the context has no capabilities. */
++    public static final int CAPS_EMPTY             = (0 << 0);
++    /** Indicates that the context supports RT surfaces with alpha channel. */
++    public static final int CAPS_RT_PLAIN_ALPHA    = (1 << 1);
++    /** Indicates that the context supports RT textures with alpha channel. */
++    public static final int CAPS_RT_TEXTURE_ALPHA  = (1 << 2);
++    /** Indicates that the context supports opaque RT textures. */
++    public static final int CAPS_RT_TEXTURE_OPAQUE = (1 << 3);
++    /** Indicates that the context supports multitexturing. */
++    public static final int CAPS_MULTITEXTURE      = (1 << 4);
++    /** Indicates that the context supports non-pow2 texture dimensions. */
++    public static final int CAPS_TEXNONPOW2        = (1 << 5);
++    /** Indicates that the context supports non-square textures. */
++    public static final int CAPS_TEXNONSQUARE      = (1 << 6);
++    /** Indicates that the context supports pixel shader 2.0 or better. */
++    public static final int CAPS_PS20              = (1 << 7);
++    /** Indicates that the context supports pixel shader 3.0 or better. */
++    public static final int CAPS_PS30              = (1 << 8);
++    /*
++     *  Pipeline contexts should use this for defining pipeline-specific
++     *  capabilities, for example:
++     *    int CAPS_D3D_1 = (FIRST_PRIVATE_CAP << 0);
++     *    int CAPS_D3D_2 = (FIRST_PRIVATE_CAP << 1);
++     */
++    protected static final int FIRST_PRIVATE_CAP   = (1 << 16);
++
++    protected final int caps;
++    protected final String adapterId;
++
++    /**
++     * Constructs a {@code ContextCapabilities} object.
++     * @param caps an {@code int} representing the capabilities
++     * @param a {@code String} representing the name of the adapter, or null,
++     * in which case the adapterId will be set to "unknown adapter".
++     */
++    protected ContextCapabilities(int caps, String adapterId) {
++        this.caps = caps;
++        this.adapterId = adapterId != null ? adapterId : "unknown adapter";
++    }
++
++    /**
++     * Returns a string representing the name of the graphics adapter if such
++     * could be determined. It is guaranteed to never return {@code null}.
++     * @return string representing adapter id
++     */
++    public String getAdapterId() {
++        return adapterId;
++    }
++
++    /**
++     * Returns an {@code int} with capabilities (OR-ed constants defined in
++     * this class and its pipeline-specific subclasses).
++     * @return capabilities as {@code int}
++     */
++    public int getCaps() {
++        return caps;
++    }
++
++    @Override
++    public String toString() {
++        StringBuffer buf =
++            new StringBuffer("ContextCapabilities: adapter=" +
++                             adapterId+", caps=");
++        if (caps == CAPS_EMPTY) {
++            buf.append("CAPS_EMPTY");
++        } else {
++            if ((caps & CAPS_RT_PLAIN_ALPHA) != 0) {
++                buf.append("CAPS_RT_PLAIN_ALPHA|");
++            }
++            if ((caps & CAPS_RT_TEXTURE_ALPHA) != 0) {
++                buf.append("CAPS_RT_TEXTURE_ALPHA|");
++            }
++            if ((caps & CAPS_RT_TEXTURE_OPAQUE) != 0) {
++                buf.append("CAPS_RT_TEXTURE_OPAQUE|");
++            }
++            if ((caps & CAPS_MULTITEXTURE) != 0) {
++                buf.append("CAPS_MULTITEXTURE|");
++            }
++            if ((caps & CAPS_TEXNONPOW2) != 0) {
++                buf.append("CAPS_TEXNONPOW2|");
++            }
++            if ((caps & CAPS_TEXNONSQUARE) != 0) {
++                buf.append("CAPS_TEXNONSQUARE|");
++            }
++            if ((caps & CAPS_PS20) != 0) {
++                buf.append("CAPS_PS20|");
++            }
++            if ((caps & CAPS_PS30) != 0) {
++                buf.append("CAPS_PS30|");
++            }
++        }
++        return buf.toString();
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/hw/ExtendedBufferCapabilities.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,154 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe.hw;
++
++import java.awt.BufferCapabilities;
++import java.awt.ImageCapabilities;
++
++/**
++ * Provides extended BufferStrategy capabilities, allowing to specify
++ * the type of vertical refresh synchronization for a buffer strategy.
++ *
++ * This BS capability is always page flipping because v-sync is only relevant
++ * to flipping buffer strategies.
++ *
++ * Note that asking for a v-synced BS doesn't necessarily guarantee that it will
++ * be v-synced since the vsync capability may be disabled in the driver, or
++ * there may be other restriction (like a number of v-synced buffer strategies
++ * allowed per vm). Because of this {@code createBufferStrategy} doesn't
++ * throw {@code AWTException} when a v-synced BS could not be created when
++ * requested.
++ *
++ * @see java.awt.Canvas#createBufferStrategy(int, BufferCapabilities)
++ * @see java.awt.Window#createBufferStrategy(int, BufferCapabilities)
++ */
++public class ExtendedBufferCapabilities extends BufferCapabilities {
++
++    /**
++     * Type of synchronization on vertical retrace.
++     */
++    public static enum VSyncType {
++        /**
++         * Use the default v-sync mode appropriate for given BufferStrategy
++         * and situation.
++         */
++        VSYNC_DEFAULT(0),
++
++        /**
++         * Synchronize flip on vertical retrace.
++         */
++        VSYNC_ON(1),
++
++        /**
++         * Do not synchronize flip on vertical retrace.
++         */
++        VSYNC_OFF(2);
++
++        /**
++         * Used to identify the v-sync type (independent of the constants
++         * order as opposed to {@code ordinal()}).
++         */
++        public int id() {
++            return id;
++        }
++
++        private VSyncType(int id) {
++            this.id = id;
++        }
++        private int id;
++    }
++
++    private VSyncType vsync;
++
++    /**
++     * Creates an ExtendedBufferCapabilities object with front/back/flip caps
++     * from the passed cap, and VSYNC_DEFAULT v-sync mode.
++     */
++    public ExtendedBufferCapabilities(BufferCapabilities caps) {
++        super(caps.getFrontBufferCapabilities(),
++              caps.getBackBufferCapabilities(),
++              caps.getFlipContents());
++
++        this.vsync = VSyncType.VSYNC_DEFAULT;
++    }
++
++    /**
++     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
++     * from the passed caps, and VSYNC_DEFAULT v-sync mode.
++     */
++    public ExtendedBufferCapabilities(ImageCapabilities front,
++                                      ImageCapabilities back, FlipContents flip)
++    {
++        super(front, back, flip);
++
++        this.vsync = VSyncType.VSYNC_DEFAULT;
++    }
++
++    /**
++     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
++     * from the passed image/flip caps, and the v-sync type.
++     */
++    public ExtendedBufferCapabilities(ImageCapabilities front,
++                                      ImageCapabilities back, FlipContents flip,
++                                      VSyncType t)
++    {
++        super(front, back, flip);
++
++        this.vsync = t;
++    }
++
++    /**
++     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
++     * from the passed cap, and the passed v-sync mode.
++     */
++    public ExtendedBufferCapabilities(BufferCapabilities caps, VSyncType t) {
++        super(caps.getFrontBufferCapabilities(),
++              caps.getBackBufferCapabilities(),
++              caps.getFlipContents());
++
++        this.vsync = t;
++    }
++
++    /**
++     * Creates an ExtendedBufferCapabilities instance with front/back/flip caps
++     * from the object, and passed v-sync mode.
++     */
++    public ExtendedBufferCapabilities derive(VSyncType t) {
++        return new ExtendedBufferCapabilities(this, t);
++    }
++
++    /**
++     * Returns the type of v-sync requested by this capabilities instance.
++     */
++    public VSyncType getVSync() {
++        return vsync;
++    }
++
++    @Override
++    public final boolean isPageFlipping() {
++        return true;
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/font/AccelGlyphCache.c
+--- openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -4936,9 +4946,9 @@
 +    return NULL;
 +}
 +
-diff -Nru openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.h openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.h
---- openjdk.orig/jdk/src/share/native/sun/font/AccelGlyphCache.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.h	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/font/AccelGlyphCache.h
+--- openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/font/AccelGlyphCache.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -5002,9 +5012,9 @@
 +#endif
  
  #endif /* AccelGlyphCache_h_Included */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/font/sunFont.c openjdk/jdk/src/share/native/sun/font/sunFont.c
---- openjdk.orig/jdk/src/share/native/sun/font/sunFont.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/font/sunFont.c	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/font/sunFont.c
+--- openjdk/jdk/src/share/native/sun/font/sunFont.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/font/sunFont.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5040,9 +5050,306 @@
                  }
                  free((void*)ginfo);
              }
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/loops/BlitBg.c openjdk/jdk/src/share/native/sun/java2d/loops/BlitBg.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/loops/BlitBg.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/loops/BlitBg.c	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/ShaderList.c
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/ShaderList.c	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,143 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++#include <malloc.h>
++#include <string.h>
++
++#include "ShaderList.h"
++#include "Trace.h"
++
++/**
++ * Creates a new ShaderInfo that wraps the given fragment program handle
++ * and related data and stores it at the front of the provided ShaderList.
++ * If the addition causes the ShaderList to outgrow its defined capacity,
++ * the least-recently used item in the list (including its fragment program
++ * object) will be disposed.
++ */
++void
++ShaderList_AddProgram(ShaderList *programList,
++                      jlong programID,
++                      jint compType, jint compMode, jint flags)
++{
++    ShaderInfo *info;
++
++    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_AddProgram");
++
++    // create new ShaderInfo
++    info = (ShaderInfo *)malloc(sizeof(ShaderInfo));
++    if (info == NULL) {
++        J2dTraceLn(J2D_TRACE_ERROR,
++                   "OGLContext_AddProgram: could not allocate ShaderInfo");
++        return;
++    }
++
++    // fill in the information
++    info->next = programList->head;
++    info->programID = programID;
++    info->compType = compType;
++    info->compMode = compMode;
++    info->flags = flags;
++
++    // insert it at the head of the list
++    programList->head = info;
++
++    // run through the list and see if we need to delete the least
++    // recently used item
++    {
++        int i = 1;
++        ShaderInfo *prev = NULL;
++        ShaderInfo *curr = info->next;
++        while (curr != NULL) {
++            if (i >= programList->maxItems) {
++                prev->next = NULL;
++                programList->dispose(curr->programID);
++                free(curr);
++                break;
++            }
++            i++;
++            prev = curr;
++            curr = curr->next;
++        }
++    }
++}
++
++/**
++ * Locates a fragment program handle given a list of shader programs
++ * (ShaderInfos), using the provided composite state and flags as search
++ * parameters.  The "flags" parameter is a bitwise-or'd value that helps
++ * differentiate one program for another; the interpretation of this value
++ * varies depending on the type of shader (BufImgOp, Paint, etc) but here
++ * it is only used to find another ShaderInfo with that same "flags" value.
++ * If no matching program can be located, this method returns 0.
++ */
++jlong
++ShaderList_FindProgram(ShaderList *programList,
++                       jint compType, jint compMode, jint flags)
++{
++    ShaderInfo *prev = NULL;
++    ShaderInfo *info = programList->head;
++
++    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_FindProgram");
++
++    while (info != NULL) {
++        if (compType == info->compType &&
++            compMode == info->compMode &&
++            flags == info->flags)
++        {
++            // it's a match: move it to the front of the list (if it's not
++            // there already) and patch up the links
++            if (info != programList->head) {
++                prev->next = info->next;
++                info->next = programList->head;
++                programList->head = info;
++            }
++            return info->programID;
++        }
++        prev = info;
++        info = info->next;
++    }
++    return 0;
++}
++
++/**
++ * Disposes all entries (and their associated shader program objects)
++ * contained in the given ShaderList.
++ */
++void
++ShaderList_Dispose(ShaderList *programList)
++{
++    ShaderInfo *info = programList->head;
++
++    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_Dispose");
++
++    while (info != NULL) {
++        ShaderInfo *tmp = info->next;
++        programList->dispose(info->programID);
++        free(info);
++        info = tmp;
++    }
++
++    programList->head = NULL;
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/ShaderList.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/ShaderList.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,85 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++#ifndef ShaderList_h_Included
++#define ShaderList_h_Included
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#include "jni.h"
++#include "jlong.h"
++
++typedef void (ShaderDisposeFunc)(jlong programID);
++
++/**
++ * The following structures are used to maintain a list of fragment program
++ * objects and their associated attributes.  Each logical shader (e.g.
++ * RadialGradientPaint shader, ConvolveOp shader) can have a number of
++ * different variants depending on a number of factors, such as whether
++ * antialiasing is enabled or the current composite mode.  Since the number
++ * of possible combinations of these factors is in the hundreds, we need
++ * some way to create fragment programs on an as-needed basis, and also
++ * keep them in a limited sized cache to avoid creating too many objects.
++ *
++ * The ShaderInfo structure keeps a reference to the fragment program's
++ * handle, as well as some other values that help differentiate one ShaderInfo
++ * from another.  ShaderInfos can be chained together to form a linked list.
++ *
++ * The ShaderList structure acts as a cache for ShaderInfos, placing
++ * most-recently used items at the front, and removing items from the
++ * cache when its size exceeds the "maxItems" limit.
++ */
++typedef struct _ShaderInfo ShaderInfo;
++
++typedef struct {
++    ShaderInfo        *head;
++    ShaderDisposeFunc *dispose;
++    jint              maxItems;
++} ShaderList;
++
++struct _ShaderInfo {
++    ShaderInfo  *next;
++    jlong       programID;
++    jint        compType;
++    jint        compMode;
++    jint        flags;
++};
++
++void ShaderList_AddProgram(ShaderList *programList,
++                           jlong programID,
++                           jint compType, jint compMode,
++                           jint flags);
++jlong ShaderList_FindProgram(ShaderList *programList,
++                             jint compType, jint compMode,
++                             jint flags);
++void ShaderList_Dispose(ShaderList *programList);
++
++#ifdef __cplusplus
++};
++#endif
++
++#endif /* ShaderList_h_Included */
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/Trace.h
+--- openjdk/jdk/src/share/native/sun/java2d/Trace.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/Trace.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2003, 2008, 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
+@@ -62,12 +62,18 @@
+ #define J2dTrace3(level, string, arg1, arg2, arg3)
+ #define J2dTrace4(level, string, arg1, arg2, arg3, arg4)
+ #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5)
++#define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6)
++#define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
++#define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
+ #define J2dTraceLn(level, string)
+ #define J2dTraceLn1(level, string, arg1)
+ #define J2dTraceLn2(level, string, arg1, arg2)
+ #define J2dTraceLn3(level, string, arg1, arg2, arg3)
+ #define J2dTraceLn4(level, string, arg1, arg2, arg3, arg4)
+ #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5)
++#define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6)
++#define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
++#define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
+ #else /* DEBUG */
+ #define J2dTrace(level, string) { \
+             J2dTraceImpl(level, JNI_FALSE, string); \
+@@ -87,6 +93,15 @@
+ #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5) { \
+             J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5); \
+         }
++#define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \
++            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6); \
++        }
++#define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \
++            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
++        }
++#define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \
++            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
++        }
+ #define J2dTraceLn(level, string) { \
+             J2dTraceImpl(level, JNI_TRUE, string); \
+         }
+@@ -105,6 +120,15 @@
+ #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5) { \
+             J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5); \
+         }
++#define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \
++            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6); \
++        }
++#define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \
++            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
++        }
++#define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \
++            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
++        }
+ #endif /* DEBUG */
+ 
+ 
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/loops/BlitBg.c
+--- openjdk/jdk/src/share/native/sun/java2d/loops/BlitBg.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/loops/BlitBg.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
@@ -5074,9 +5381,9 @@
          srcOps->GetRasInfo(env, srcOps, &srcInfo);
          dstOps->GetRasInfo(env, dstOps, &dstInfo);
          if (pPrim->pDstType->pixelFor) {
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c
+--- openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -5139,9 +5446,9 @@
  JNIEXPORT jint JNICALL
  GrPrim_Sg2dGetLCDTextContrast(JNIEnv *env, jobject sg2d)
  {
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h
+--- openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -5157,9 +5464,9 @@
  
  /*
   * Data structure and functions to retrieve and use
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c	2011-01-08 01:26:50.455202035 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLContext.c
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5209,7 +5516,8 @@
      if (OGLContext_IsGradShaderSupportAvailable(env, fragShaderAvail)) {
 -        *caps |= sun_java2d_opengl_OGLContext_CAPS_EXT_GRAD_SHADER;
 +        *caps |= CAPS_EXT_GRAD_SHADER | CAPS_PS20;
-+    }
+     }
+-
 +    if (OGLContext_IsExtensionAvailable(e, "GL_NV_fragment_program")) {
 +        // this is an Nvidia board, at least PS 2.0, but we can't
 +        // use the "max instructions" heuristic since GeForce FX
@@ -5230,8 +5538,7 @@
 +                *caps |= CAPS_PS30;
 +            }
 +        }
-     }
--
++    }
      // stuff vendor descriptor in the upper bits of the caps
      if (vendor != NULL) {
          if (strncmp(vendor, "ATI", 3) == 0) {
@@ -5297,9 +5604,9 @@
 +}
 +
  #endif /* !HEADLESS */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLContext.h
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLContext.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5368,9 +5675,9 @@
  
  /**
   * At startup we will embed one of the following values in the caps field
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h openjdk/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLFuncs.h
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLFuncs.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5425,9 +5732,193 @@
      OGL_##action##_EXT_FUNC(glGetInfoLogARB); \
      OGL_##action##_EXT_FUNC(glGetObjectParameterivARB); \
      OGL_##action##_EXT_FUNC(glDeleteObjectARB);
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLRenderQueue.c
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2008, 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
+@@ -88,8 +88,9 @@
+     while (b < end) {
+         jint opcode = NEXT_INT(b);
+ 
+-        J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                    "OGLRenderQueue_flushBuffer: opcode=%d", opcode);
++        J2dTraceLn2(J2D_TRACE_VERBOSE,
++                    "OGLRenderQueue_flushBuffer: opcode=%d, rem=%d",
++                    opcode, (end-b));
+ 
+         switch (opcode) {
+ 
+@@ -148,6 +149,40 @@
+                 SKIP_BYTES(b, count * BYTES_PER_SCANLINE);
+             }
+             break;
++        case sun_java2d_pipe_BufferedOpCodes_DRAW_PARALLELOGRAM:
++            {
++                jfloat x11 = NEXT_FLOAT(b);
++                jfloat y11 = NEXT_FLOAT(b);
++                jfloat dx21 = NEXT_FLOAT(b);
++                jfloat dy21 = NEXT_FLOAT(b);
++                jfloat dx12 = NEXT_FLOAT(b);
++                jfloat dy12 = NEXT_FLOAT(b);
++                jfloat lwr21 = NEXT_FLOAT(b);
++                jfloat lwr12 = NEXT_FLOAT(b);
++                OGLRenderer_DrawParallelogram(oglc,
++                                              x11, y11,
++                                              dx21, dy21,
++                                              dx12, dy12,
++                                              lwr21, lwr12);
++            }
++            break;
++        case sun_java2d_pipe_BufferedOpCodes_DRAW_AAPARALLELOGRAM:
++            {
++                jfloat x11 = NEXT_FLOAT(b);
++                jfloat y11 = NEXT_FLOAT(b);
++                jfloat dx21 = NEXT_FLOAT(b);
++                jfloat dy21 = NEXT_FLOAT(b);
++                jfloat dx12 = NEXT_FLOAT(b);
++                jfloat dy12 = NEXT_FLOAT(b);
++                jfloat lwr21 = NEXT_FLOAT(b);
++                jfloat lwr12 = NEXT_FLOAT(b);
++                OGLRenderer_DrawAAParallelogram(oglc, dstOps,
++                                                x11, y11,
++                                                dx21, dy21,
++                                                dx12, dy12,
++                                                lwr21, lwr12);
++            }
++            break;
+ 
+         // fill ops
+         case sun_java2d_pipe_BufferedOpCodes_FILL_RECT:
+@@ -166,6 +201,34 @@
+                 SKIP_BYTES(b, count * BYTES_PER_SPAN);
+             }
+             break;
++        case sun_java2d_pipe_BufferedOpCodes_FILL_PARALLELOGRAM:
++            {
++                jfloat x11 = NEXT_FLOAT(b);
++                jfloat y11 = NEXT_FLOAT(b);
++                jfloat dx21 = NEXT_FLOAT(b);
++                jfloat dy21 = NEXT_FLOAT(b);
++                jfloat dx12 = NEXT_FLOAT(b);
++                jfloat dy12 = NEXT_FLOAT(b);
++                OGLRenderer_FillParallelogram(oglc,
++                                              x11, y11,
++                                              dx21, dy21,
++                                              dx12, dy12);
++            }
++            break;
++        case sun_java2d_pipe_BufferedOpCodes_FILL_AAPARALLELOGRAM:
++            {
++                jfloat x11 = NEXT_FLOAT(b);
++                jfloat y11 = NEXT_FLOAT(b);
++                jfloat dx21 = NEXT_FLOAT(b);
++                jfloat dy21 = NEXT_FLOAT(b);
++                jfloat dx12 = NEXT_FLOAT(b);
++                jfloat dy12 = NEXT_FLOAT(b);
++                OGLRenderer_FillAAParallelogram(oglc, dstOps,
++                                                x11, y11,
++                                                dx21, dy21,
++                                                dx12, dy12);
++            }
++            break;
+ 
+         // text-related ops
+         case sun_java2d_pipe_BufferedOpCodes_DRAW_GLYPH_LIST:
+@@ -438,6 +501,31 @@
+                 dstOps = NULL;
+             }
+             break;
++        case sun_java2d_pipe_BufferedOpCodes_SAVE_STATE:
++            {
++                j2d_glPushAttrib(GL_ALL_ATTRIB_BITS);
++                j2d_glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
++                j2d_glMatrixMode(GL_MODELVIEW);
++                j2d_glPushMatrix();
++                j2d_glMatrixMode(GL_PROJECTION);
++                j2d_glPushMatrix();
++                j2d_glMatrixMode(GL_TEXTURE);
++                j2d_glPushMatrix();
++            }
++            break;
++
++        case sun_java2d_pipe_BufferedOpCodes_RESTORE_STATE:
++            {
++                j2d_glPopAttrib();
++                j2d_glPopClientAttrib();
++                j2d_glMatrixMode(GL_MODELVIEW);
++                j2d_glPopMatrix();
++                j2d_glMatrixMode(GL_PROJECTION);
++                j2d_glPopMatrix();
++                j2d_glMatrixMode(GL_TEXTURE);
++                j2d_glPopMatrix();
++            }
++            break;
+         case sun_java2d_pipe_BufferedOpCodes_SYNC:
+             {
+                 sync = JNI_TRUE;
+@@ -691,6 +779,9 @@
+         return;
+     }
+ 
++    J2dTraceLn1(J2D_TRACE_VERBOSE,
++                "OGLRenderQueue_CheckPreviousOp: new op=%d", op);
++
+     switch (previousOp) {
+     case GL_TEXTURE_2D:
+     case GL_TEXTURE_RECTANGLE_ARB:
+@@ -718,6 +809,9 @@
+     case OGL_STATE_GLYPH_OP:
+         OGLTR_DisableGlyphVertexCache(oglc);
+         break;
++    case OGL_STATE_PGRAM_OP:
++        OGLRenderer_DisableAAParallelogramProgram();
++        break;
+     case OGL_STATE_RESET:
+     case OGL_STATE_CHANGE:
+         // No-op
+@@ -745,6 +839,9 @@
+     case OGL_STATE_GLYPH_OP:
+         OGLTR_EnableGlyphVertexCache(oglc);
+         break;
++    case OGL_STATE_PGRAM_OP:
++        OGLRenderer_EnableAAParallelogramProgram();
++        break;
+     case OGL_STATE_RESET:
+     case OGL_STATE_CHANGE:
+         // No-op
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLRenderQueue.h
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2005, 2008, 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
+@@ -90,6 +90,13 @@
+ #define OGL_STATE_GLYPH_OP -4
+ 
+ /*
++ * Parameter passed to the CHECK_PREVIOUS_OP() macro to indicate that the
++ * following operation represents an operation that renders a
++ * parallelogram via a fragment program (see OGLRenderer).
++ */
++#define OGL_STATE_PGRAM_OP -5
++
++/*
+  * Initializes the "previous operation" state to its default value.
+  */
+ #define INIT_PREVIOUS_OP() previousOp = OGL_STATE_RESET
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLRenderer.c
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5930,9 +6421,9 @@
 +}
 +
  #endif /* !HEADLESS */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLRenderer.h
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderer.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -5972,193 +6463,9 @@
 +void OGLRenderer_DisableAAParallelogramProgram();
  
  #endif /* OGLRenderer_h_Included */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.c	2011-01-08 01:26:50.459202079 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2005, 2008, 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
-@@ -88,8 +88,9 @@
-     while (b < end) {
-         jint opcode = NEXT_INT(b);
- 
--        J2dTraceLn1(J2D_TRACE_VERBOSE,
--                    "OGLRenderQueue_flushBuffer: opcode=%d", opcode);
-+        J2dTraceLn2(J2D_TRACE_VERBOSE,
-+                    "OGLRenderQueue_flushBuffer: opcode=%d, rem=%d",
-+                    opcode, (end-b));
- 
-         switch (opcode) {
- 
-@@ -148,6 +149,40 @@
-                 SKIP_BYTES(b, count * BYTES_PER_SCANLINE);
-             }
-             break;
-+        case sun_java2d_pipe_BufferedOpCodes_DRAW_PARALLELOGRAM:
-+            {
-+                jfloat x11 = NEXT_FLOAT(b);
-+                jfloat y11 = NEXT_FLOAT(b);
-+                jfloat dx21 = NEXT_FLOAT(b);
-+                jfloat dy21 = NEXT_FLOAT(b);
-+                jfloat dx12 = NEXT_FLOAT(b);
-+                jfloat dy12 = NEXT_FLOAT(b);
-+                jfloat lwr21 = NEXT_FLOAT(b);
-+                jfloat lwr12 = NEXT_FLOAT(b);
-+                OGLRenderer_DrawParallelogram(oglc,
-+                                              x11, y11,
-+                                              dx21, dy21,
-+                                              dx12, dy12,
-+                                              lwr21, lwr12);
-+            }
-+            break;
-+        case sun_java2d_pipe_BufferedOpCodes_DRAW_AAPARALLELOGRAM:
-+            {
-+                jfloat x11 = NEXT_FLOAT(b);
-+                jfloat y11 = NEXT_FLOAT(b);
-+                jfloat dx21 = NEXT_FLOAT(b);
-+                jfloat dy21 = NEXT_FLOAT(b);
-+                jfloat dx12 = NEXT_FLOAT(b);
-+                jfloat dy12 = NEXT_FLOAT(b);
-+                jfloat lwr21 = NEXT_FLOAT(b);
-+                jfloat lwr12 = NEXT_FLOAT(b);
-+                OGLRenderer_DrawAAParallelogram(oglc, dstOps,
-+                                                x11, y11,
-+                                                dx21, dy21,
-+                                                dx12, dy12,
-+                                                lwr21, lwr12);
-+            }
-+            break;
- 
-         // fill ops
-         case sun_java2d_pipe_BufferedOpCodes_FILL_RECT:
-@@ -166,6 +201,34 @@
-                 SKIP_BYTES(b, count * BYTES_PER_SPAN);
-             }
-             break;
-+        case sun_java2d_pipe_BufferedOpCodes_FILL_PARALLELOGRAM:
-+            {
-+                jfloat x11 = NEXT_FLOAT(b);
-+                jfloat y11 = NEXT_FLOAT(b);
-+                jfloat dx21 = NEXT_FLOAT(b);
-+                jfloat dy21 = NEXT_FLOAT(b);
-+                jfloat dx12 = NEXT_FLOAT(b);
-+                jfloat dy12 = NEXT_FLOAT(b);
-+                OGLRenderer_FillParallelogram(oglc,
-+                                              x11, y11,
-+                                              dx21, dy21,
-+                                              dx12, dy12);
-+            }
-+            break;
-+        case sun_java2d_pipe_BufferedOpCodes_FILL_AAPARALLELOGRAM:
-+            {
-+                jfloat x11 = NEXT_FLOAT(b);
-+                jfloat y11 = NEXT_FLOAT(b);
-+                jfloat dx21 = NEXT_FLOAT(b);
-+                jfloat dy21 = NEXT_FLOAT(b);
-+                jfloat dx12 = NEXT_FLOAT(b);
-+                jfloat dy12 = NEXT_FLOAT(b);
-+                OGLRenderer_FillAAParallelogram(oglc, dstOps,
-+                                                x11, y11,
-+                                                dx21, dy21,
-+                                                dx12, dy12);
-+            }
-+            break;
- 
-         // text-related ops
-         case sun_java2d_pipe_BufferedOpCodes_DRAW_GLYPH_LIST:
-@@ -438,6 +501,31 @@
-                 dstOps = NULL;
-             }
-             break;
-+        case sun_java2d_pipe_BufferedOpCodes_SAVE_STATE:
-+            {
-+                j2d_glPushAttrib(GL_ALL_ATTRIB_BITS);
-+                j2d_glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
-+                j2d_glMatrixMode(GL_MODELVIEW);
-+                j2d_glPushMatrix();
-+                j2d_glMatrixMode(GL_PROJECTION);
-+                j2d_glPushMatrix();
-+                j2d_glMatrixMode(GL_TEXTURE);
-+                j2d_glPushMatrix();
-+            }
-+            break;
-+
-+        case sun_java2d_pipe_BufferedOpCodes_RESTORE_STATE:
-+            {
-+                j2d_glPopAttrib();
-+                j2d_glPopClientAttrib();
-+                j2d_glMatrixMode(GL_MODELVIEW);
-+                j2d_glPopMatrix();
-+                j2d_glMatrixMode(GL_PROJECTION);
-+                j2d_glPopMatrix();
-+                j2d_glMatrixMode(GL_TEXTURE);
-+                j2d_glPopMatrix();
-+            }
-+            break;
-         case sun_java2d_pipe_BufferedOpCodes_SYNC:
-             {
-                 sync = JNI_TRUE;
-@@ -691,6 +779,9 @@
-         return;
-     }
- 
-+    J2dTraceLn1(J2D_TRACE_VERBOSE,
-+                "OGLRenderQueue_CheckPreviousOp: new op=%d", op);
-+
-     switch (previousOp) {
-     case GL_TEXTURE_2D:
-     case GL_TEXTURE_RECTANGLE_ARB:
-@@ -718,6 +809,9 @@
-     case OGL_STATE_GLYPH_OP:
-         OGLTR_DisableGlyphVertexCache(oglc);
-         break;
-+    case OGL_STATE_PGRAM_OP:
-+        OGLRenderer_DisableAAParallelogramProgram();
-+        break;
-     case OGL_STATE_RESET:
-     case OGL_STATE_CHANGE:
-         // No-op
-@@ -745,6 +839,9 @@
-     case OGL_STATE_GLYPH_OP:
-         OGLTR_EnableGlyphVertexCache(oglc);
-         break;
-+    case OGL_STATE_PGRAM_OP:
-+        OGLRenderer_EnableAAParallelogramProgram();
-+        break;
-     case OGL_STATE_RESET:
-     case OGL_STATE_CHANGE:
-         // No-op
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLRenderQueue.h	2011-01-08 01:26:50.459202079 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2005, 2008, 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
-@@ -90,6 +90,13 @@
- #define OGL_STATE_GLYPH_OP -4
- 
- /*
-+ * Parameter passed to the CHECK_PREVIOUS_OP() macro to indicate that the
-+ * following operation represents an operation that renders a
-+ * parallelogram via a fragment program (see OGLRenderer).
-+ */
-+#define OGL_STATE_PGRAM_OP -5
-+
-+/*
-  * Initializes the "previous operation" state to its default value.
-  */
- #define INIT_PREVIOUS_OP() previousOp = OGL_STATE_RESET
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLSurfaceData.c
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -6250,9 +6557,9 @@
  /**
   * Disposes of all native resources associated with this surface.
   */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/opengl/OGLSurfaceData.h
+--- openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/opengl/OGLSurfaceData.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -6287,9 +6594,9 @@
  
  /**
   * These are shorthand names for the filtering method constants used by
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c openjdk/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
+--- openjdk/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/share/native/sun/java2d/pipe/BufferedMaskBlit.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
@@ -6468,306 +6775,9 @@
      // return the current byte position
      return bpos;
  }
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/ShaderList.c openjdk/jdk/src/share/native/sun/java2d/ShaderList.c
---- openjdk.orig/jdk/src/share/native/sun/java2d/ShaderList.c	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/java2d/ShaderList.c	2011-01-08 01:26:50.459202079 +0000
-@@ -0,0 +1,143 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+#include <malloc.h>
-+#include <string.h>
-+
-+#include "ShaderList.h"
-+#include "Trace.h"
-+
-+/**
-+ * Creates a new ShaderInfo that wraps the given fragment program handle
-+ * and related data and stores it at the front of the provided ShaderList.
-+ * If the addition causes the ShaderList to outgrow its defined capacity,
-+ * the least-recently used item in the list (including its fragment program
-+ * object) will be disposed.
-+ */
-+void
-+ShaderList_AddProgram(ShaderList *programList,
-+                      jlong programID,
-+                      jint compType, jint compMode, jint flags)
-+{
-+    ShaderInfo *info;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_AddProgram");
-+
-+    // create new ShaderInfo
-+    info = (ShaderInfo *)malloc(sizeof(ShaderInfo));
-+    if (info == NULL) {
-+        J2dTraceLn(J2D_TRACE_ERROR,
-+                   "OGLContext_AddProgram: could not allocate ShaderInfo");
-+        return;
-+    }
-+
-+    // fill in the information
-+    info->next = programList->head;
-+    info->programID = programID;
-+    info->compType = compType;
-+    info->compMode = compMode;
-+    info->flags = flags;
-+
-+    // insert it at the head of the list
-+    programList->head = info;
-+
-+    // run through the list and see if we need to delete the least
-+    // recently used item
-+    {
-+        int i = 1;
-+        ShaderInfo *prev = NULL;
-+        ShaderInfo *curr = info->next;
-+        while (curr != NULL) {
-+            if (i >= programList->maxItems) {
-+                prev->next = NULL;
-+                programList->dispose(curr->programID);
-+                free(curr);
-+                break;
-+            }
-+            i++;
-+            prev = curr;
-+            curr = curr->next;
-+        }
-+    }
-+}
-+
-+/**
-+ * Locates a fragment program handle given a list of shader programs
-+ * (ShaderInfos), using the provided composite state and flags as search
-+ * parameters.  The "flags" parameter is a bitwise-or'd value that helps
-+ * differentiate one program for another; the interpretation of this value
-+ * varies depending on the type of shader (BufImgOp, Paint, etc) but here
-+ * it is only used to find another ShaderInfo with that same "flags" value.
-+ * If no matching program can be located, this method returns 0.
-+ */
-+jlong
-+ShaderList_FindProgram(ShaderList *programList,
-+                       jint compType, jint compMode, jint flags)
-+{
-+    ShaderInfo *prev = NULL;
-+    ShaderInfo *info = programList->head;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_FindProgram");
-+
-+    while (info != NULL) {
-+        if (compType == info->compType &&
-+            compMode == info->compMode &&
-+            flags == info->flags)
-+        {
-+            // it's a match: move it to the front of the list (if it's not
-+            // there already) and patch up the links
-+            if (info != programList->head) {
-+                prev->next = info->next;
-+                info->next = programList->head;
-+                programList->head = info;
-+            }
-+            return info->programID;
-+        }
-+        prev = info;
-+        info = info->next;
-+    }
-+    return 0;
-+}
-+
-+/**
-+ * Disposes all entries (and their associated shader program objects)
-+ * contained in the given ShaderList.
-+ */
-+void
-+ShaderList_Dispose(ShaderList *programList)
-+{
-+    ShaderInfo *info = programList->head;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "ShaderList_Dispose");
-+
-+    while (info != NULL) {
-+        ShaderInfo *tmp = info->next;
-+        programList->dispose(info->programID);
-+        free(info);
-+        info = tmp;
-+    }
-+
-+    programList->head = NULL;
-+}
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/ShaderList.h openjdk/jdk/src/share/native/sun/java2d/ShaderList.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/ShaderList.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/share/native/sun/java2d/ShaderList.h	2011-01-08 01:26:50.459202079 +0000
-@@ -0,0 +1,85 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+#ifndef ShaderList_h_Included
-+#define ShaderList_h_Included
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+#include "jni.h"
-+#include "jlong.h"
-+
-+typedef void (ShaderDisposeFunc)(jlong programID);
-+
-+/**
-+ * The following structures are used to maintain a list of fragment program
-+ * objects and their associated attributes.  Each logical shader (e.g.
-+ * RadialGradientPaint shader, ConvolveOp shader) can have a number of
-+ * different variants depending on a number of factors, such as whether
-+ * antialiasing is enabled or the current composite mode.  Since the number
-+ * of possible combinations of these factors is in the hundreds, we need
-+ * some way to create fragment programs on an as-needed basis, and also
-+ * keep them in a limited sized cache to avoid creating too many objects.
-+ *
-+ * The ShaderInfo structure keeps a reference to the fragment program's
-+ * handle, as well as some other values that help differentiate one ShaderInfo
-+ * from another.  ShaderInfos can be chained together to form a linked list.
-+ *
-+ * The ShaderList structure acts as a cache for ShaderInfos, placing
-+ * most-recently used items at the front, and removing items from the
-+ * cache when its size exceeds the "maxItems" limit.
-+ */
-+typedef struct _ShaderInfo ShaderInfo;
-+
-+typedef struct {
-+    ShaderInfo        *head;
-+    ShaderDisposeFunc *dispose;
-+    jint              maxItems;
-+} ShaderList;
-+
-+struct _ShaderInfo {
-+    ShaderInfo  *next;
-+    jlong       programID;
-+    jint        compType;
-+    jint        compMode;
-+    jint        flags;
-+};
-+
-+void ShaderList_AddProgram(ShaderList *programList,
-+                           jlong programID,
-+                           jint compType, jint compMode,
-+                           jint flags);
-+jlong ShaderList_FindProgram(ShaderList *programList,
-+                             jint compType, jint compMode,
-+                             jint flags);
-+void ShaderList_Dispose(ShaderList *programList);
-+
-+#ifdef __cplusplus
-+};
-+#endif
-+
-+#endif /* ShaderList_h_Included */
-diff -Nru openjdk.orig/jdk/src/share/native/sun/java2d/Trace.h openjdk/jdk/src/share/native/sun/java2d/Trace.h
---- openjdk.orig/jdk/src/share/native/sun/java2d/Trace.h	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/java2d/Trace.h	2011-01-08 01:26:50.459202079 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2008, 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
-@@ -62,12 +62,18 @@
- #define J2dTrace3(level, string, arg1, arg2, arg3)
- #define J2dTrace4(level, string, arg1, arg2, arg3, arg4)
- #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5)
-+#define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6)
-+#define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
-+#define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
- #define J2dTraceLn(level, string)
- #define J2dTraceLn1(level, string, arg1)
- #define J2dTraceLn2(level, string, arg1, arg2)
- #define J2dTraceLn3(level, string, arg1, arg2, arg3)
- #define J2dTraceLn4(level, string, arg1, arg2, arg3, arg4)
- #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5)
-+#define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6)
-+#define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
-+#define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
- #else /* DEBUG */
- #define J2dTrace(level, string) { \
-             J2dTraceImpl(level, JNI_FALSE, string); \
-@@ -87,6 +93,15 @@
- #define J2dTrace5(level, string, arg1, arg2, arg3, arg4, arg5) { \
-             J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5); \
-         }
-+#define J2dTrace6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \
-+            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6); \
-+        }
-+#define J2dTrace7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \
-+            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
-+        }
-+#define J2dTrace8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \
-+            J2dTraceImpl(level, JNI_FALSE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
-+        }
- #define J2dTraceLn(level, string) { \
-             J2dTraceImpl(level, JNI_TRUE, string); \
-         }
-@@ -105,6 +120,15 @@
- #define J2dTraceLn5(level, string, arg1, arg2, arg3, arg4, arg5) { \
-             J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5); \
-         }
-+#define J2dTraceLn6(level, string, arg1, arg2, arg3, arg4, arg5, arg6) { \
-+            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6); \
-+        }
-+#define J2dTraceLn7(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { \
-+            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7); \
-+        }
-+#define J2dTraceLn8(level, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { \
-+            J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); \
-+        }
- #endif /* DEBUG */
- 
- 
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/awt/X11/XComponentPeer.java
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -77,9 +77,12 @@
  import sun.awt.event.IgnorePaintEvent;
  import sun.awt.image.SunVolatileImage;
@@ -6822,9 +6832,9 @@
      }
  
      public Image getBackBuffer() {
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedChildProxyPeer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -257,7 +257,7 @@
      public void createBuffers(int numBuffers, BufferCapabilities caps)
        throws AWTException { }
@@ -6834,9 +6844,9 @@
      public void destroyBuffers() { }
  
      /**
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/awt/X11GraphicsConfig.java
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -6874,9 +6884,9 @@
                       BufferCapabilities.FlipContents flipAction)
      {
          long window = peer.getContentWindow();
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/awt/X11GraphicsDevice.java
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -6894,33 +6904,33 @@
          if (dm == null ||
              (dm = getMatchingDisplayMode(dm)) == null)
          {
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java openjdk/jdk/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/java2d/BackBufferCapsProvider.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/BackBufferCapsProvider.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,35 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d;
@@ -6933,9 +6943,9 @@
 +public interface BackBufferCapsProvider {
 +    public BufferCapabilities getBackBufferCaps();
 +}
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java
+--- openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -7174,9 +7184,9 @@
 +        AccelDeviceEventNotifier.removeListener(l);
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java
+--- openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXSurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -7252,9 +7262,9 @@
      public static class GLXOffScreenSurfaceData extends GLXSurfaceData {
  
          private Image offscreenImage;
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java	2011-01-08 01:26:50.459202079 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java
+--- openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/opengl/GLXVolatileSurfaceManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved.
@@ -7370,9 +7380,9 @@
 +        }
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java
---- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java	2011-01-07 21:33:04.000000000 +0000
-+++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java
+--- openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11PMBlitBgLoops.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -7399,9 +7409,9 @@
              X11SurfaceData x11sd = (X11SurfaceData)dst;
              // use false for needExposures since we clip to the pixmap
              long xgc = x11sd.getBlitGC(clip, false);
-diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c
---- openjdk.orig/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c
+--- openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXGraphicsConfig.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -7446,9 +7456,9 @@
 +    return CAPS_EMPTY;
  #endif /* !HEADLESS */
  }
-diff -Nru openjdk.orig/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c
---- openjdk.orig/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c
+--- openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/solaris/native/sun/java2d/opengl/GLXSurfaceData.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -7475,9 +7485,9 @@
      return JNI_TRUE;
  }
  
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/Win32GraphicsConfig.java
+--- openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -7667,17 +7677,6 @@
 -            g.drawImage(backBuffer, 0, 0, width, height, null);
 -            g.dispose();
 -            return;
--        }
--        Win32SurfaceData sd = (Win32SurfaceData)peer.getSurfaceData();
--        try {
--            sd.flip(((WinBackBuffer)backBuffer).getHWSurfaceData());
--        } catch (sun.java2d.InvalidPipeException e) {
--            // copy software surface to the screen via gdi blit
--            Graphics g = target.getGraphics();
--            g.drawImage(backBuffer, 0, 0, width, height, null);
--            g.dispose();
--        }
--        if (flipAction == BufferCapabilities.FlipContents.BACKGROUND) {
 +        if (flipAction == BufferCapabilities.FlipContents.COPIED ||
 +            flipAction == BufferCapabilities.FlipContents.UNDEFINED) {
 +            Graphics g = peer.getGraphics();
@@ -7690,10 +7689,7 @@
 +                g.dispose();
 +            }
 +        } else if (flipAction == BufferCapabilities.FlipContents.BACKGROUND) {
-             Graphics g = backBuffer.getGraphics();
--            g.setColor(target.getBackground());
--            g.fillRect(0, 0, width, height);
--            g.dispose();
++            Graphics g = backBuffer.getGraphics();
 +            try {
 +                g.setColor(target.getBackground());
 +                g.fillRect(0, 0,
@@ -7703,12 +7699,27 @@
 +                g.dispose();
 +            }
          }
+-        Win32SurfaceData sd = (Win32SurfaceData)peer.getSurfaceData();
+-        try {
+-            sd.flip(((WinBackBuffer)backBuffer).getHWSurfaceData());
+-        } catch (sun.java2d.InvalidPipeException e) {
+-            // copy software surface to the screen via gdi blit
+-            Graphics g = target.getGraphics();
+-            g.drawImage(backBuffer, 0, 0, width, height, null);
+-            g.dispose();
+-        }
+-        if (flipAction == BufferCapabilities.FlipContents.BACKGROUND) {
+-            Graphics g = backBuffer.getGraphics();
+-            g.setColor(target.getBackground());
+-            g.fillRect(0, 0, width, height);
+-            g.dispose();
+-        }
 +        // the rest of the flip actions are not supported
      }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/Win32GraphicsDevice.java
+--- openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsDevice.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -7900,8 +7911,9 @@
 -                    peer.destroyBuffers();
 -                    exitFullScreenExclusive(isDDEnabledOnDevice(),
 -                                            screen, peer);
--                }
--            }
++                    exitFullScreenExclusive(screen, peer);
+                 }
+             }
 -            /**
 -             * Bug 4933099: There is some funny-business to deal with when this
 -             * method is called with a Window instead of a Frame.  See 4836744
@@ -7916,10 +7928,9 @@
 -                Frame owner = getToplevelOwner(old);
 -                if (owner != null && ownerWindowedModeBounds != null) {
 -                    owner.setBounds(ownerWindowedModeBounds);
-+                    exitFullScreenExclusive(screen, peer);
-                 }
+-                }
 -                ownerWindowedModeBounds = null;
-             }
+-            }
 +            removeFSWindowListener(old);
          }
          super.setFullScreenWindow(w);
@@ -8057,20 +8068,13 @@
      }
  
 -    private native int getDeviceMemoryNative(int screen);
--
-     /**
--     * Returns number of bytes available in VRAM on this device.
++    /**
 +     * WindowAdapter class responsible for de/iconifying full-screen window
 +     * of this device.
 +     *
 +     * The listener restores the default display mode when window is iconified
 +     * and sets it back to the one set by the user on de-iconification.
-      */
--    public int getAvailableAcceleratedMemory() {
--        if (getDefaultConfiguration() instanceof WGLGraphicsConfig) {
--            // when OGL is enabled, there is no way to determine the amount
--            // of accelerated memory, so just return the default value
--            return super.getAvailableAcceleratedMemory();
++     */
 +    private static class Win32FSWindowAdapter extends WindowAdapter {
 +        private Win32GraphicsDevice device;
 +        private DisplayMode dm;
@@ -8119,8 +8123,7 @@
 +                dm = device.getDisplayMode();
 +                device.setDisplayMode(ddm);
 +            }
-         }
--        return getDeviceMemoryNative(screen);
++        }
 +
 +        @Override
 +        public void windowDeiconified(WindowEvent e) {
@@ -8131,13 +8134,21 @@
 +            }
 +        }
 +    }
-+
-+    /**
+ 
+     /**
+-     * Returns number of bytes available in VRAM on this device.
 +     * Adds a WindowListener to be used as
 +     * activation/deactivation listener for the current full-screen window.
 +     *
 +     * @param w full-screen window
-+     */
+      */
+-    public int getAvailableAcceleratedMemory() {
+-        if (getDefaultConfiguration() instanceof WGLGraphicsConfig) {
+-            // when OGL is enabled, there is no way to determine the amount
+-            // of accelerated memory, so just return the default value
+-            return super.getAvailableAcceleratedMemory();
+-        }
+-        return getDeviceMemoryNative(screen);
 +    protected void addFSWindowListener(Window w) {
 +        // Note: even though we create a listener for Window instances of
 +        // fs windows they will not receive window events.
@@ -8155,9 +8166,9 @@
 +        fsWindowListener = null;
      }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/Win32GraphicsEnvironment.java
+--- openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -8177,7 +8188,15 @@
  import java.io.File;
  import java.io.IOException;
  import java.lang.ref.WeakReference;
-@@ -321,7 +323,14 @@
+@@ -42,6 +44,7 @@
+ import sun.awt.windows.WToolkit;
+ import sun.font.FontManager;
+ import sun.java2d.SunGraphicsEnvironment;
++import sun.java2d.d3d.D3DGraphicsDevice;
+ import sun.java2d.windows.WindowsFlags;
+ 
+ /**
+@@ -321,7 +324,14 @@
      protected static native void deRegisterFontWithPlatform(String fontName);
  
      protected GraphicsDevice makeScreenDevice(int screennum) {
@@ -8193,7 +8212,7 @@
      }
  
      // Implements SunGraphicsEnvironment.createFontConfiguration.
-@@ -334,4 +343,39 @@
+@@ -334,4 +344,39 @@
  
          return new WFontConfiguration(this, preferLocaleFonts,preferPropFonts);
      }
@@ -8233,9 +8252,9 @@
 +        isDWMCompositionEnabled = enabled;
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/windows/WComponentPeer.java
+--- openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -8326,24 +8345,25 @@
                      oldData.invalidate();
 -                    // null out the old data to make it collected faster
 -                    oldData = null;
--                }
--
+                 }
+ 
 -                if (backBuffer != null) {
 -                    // this will remove the back buffer from the
 -                    // display change notification list
 -                    backBuffer.flush();
--                    backBuffer = null;
-                 }
- 
 +                oldBB = backBuffer;
-                 if (numBackBuffers > 0) {
++                if (numBackBuffers > 0) {
 +                    // set the caps first, they're used when creating the bb
 +                    backBufferCaps = caps;
-                     backBuffer = gc.createBackBuffer(this);
++                    backBuffer = gc.createBackBuffer(this);
 +                } else if (backBuffer != null) {
 +                    backBufferCaps = null;
-+                    backBuffer = null;
+                     backBuffer = null;
                  }
+-
+-                if (numBackBuffers > 0) {
+-                    backBuffer = gc.createBackBuffer(this);
+-                }
              }
          }
 +        // it would be better to do this before we create new ones,
@@ -8432,18 +8452,18 @@
 -    public synchronized void destroyBuffers() {
 -        disposeBackBuffer();
 -        numBackBuffers = 0;
--    }
--
++    @Override
++    public void destroyBuffers() {
++        replaceSurfaceData(0, null);
+     }
+ 
 -    private synchronized void disposeBackBuffer() {
 -        if (backBuffer == null) {
 -            return;
 -        }
 -        backBuffer = null;
-+    @Override
-+    public void destroyBuffers() {
-+        replaceSurfaceData(0, null);
-     }
- 
+-    }
+-
 -    public synchronized void flip(BufferCapabilities.FlipContents flipAction) {
 +    @Override
 +    public void flip(int x1, int y1, int x2, int y2,
@@ -8528,9 +8548,9 @@
      /**
       * Applies the shape to the native component window.
       * @since 1.7
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java
+--- openjdk/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -8560,9 +8580,9 @@
 +        return !Win32GraphicsEnvironment.isDWMCompositionEnabled();
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WToolkit.java openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java
---- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/awt/windows/WToolkit.java
+--- openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WToolkit.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -8620,9 +8640,271 @@
      }
  
      public void grab(Window w) {
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/ScreenUpdateManager.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/ScreenUpdateManager.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,131 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d;
++
++import java.awt.Color;
++import java.awt.Font;
++import java.awt.Graphics2D;
++import sun.awt.Win32GraphicsConfig;
++import sun.awt.windows.WComponentPeer;
++import sun.java2d.d3d.D3DScreenUpdateManager;
++import sun.java2d.windows.WindowsFlags;
++
++/**
++ * This class handles the creation of on-screen surfaces and
++ * corresponding graphics objects.
++ *
++ * By default it delegates the surface creation to the
++ * particular GraphicsConfiguration classes.
++ */
++public class ScreenUpdateManager {
++    private static ScreenUpdateManager theInstance;
++
++    protected ScreenUpdateManager() {
++    }
++
++    /**
++     * Creates a SunGraphics2D object for the surface,
++     * given the parameters.
++     *
++     * @param sd surface data for which a graphics is to be created
++     * @param peer peer which owns the surface
++     * @param fgColor fg color to be used in the graphics
++     * @param bgColor bg color to be used in the graphics
++     * @param font font to be used in the graphics
++     * @return a SunGraphics2D object for rendering to the passed surface
++     */
++    public synchronized Graphics2D createGraphics(SurfaceData sd,
++            WComponentPeer peer, Color fgColor, Color bgColor, Font font)
++    {
++        return new SunGraphics2D(sd, fgColor, bgColor, font);
++    }
++
++    /**
++     * Creates and returns the surface for the peer. This surface becomes
++     * managed by this manager. To remove the surface from the managed list
++     * {@code}dropScreenSurface(SurfaceData){@code} will need to be called.
++     *
++     * The default implementation delegates surface creation
++     * to the passed in GraphicsConfiguration object.
++     *
++     * @param gc graphics configuration for which the surface is to be created
++     * @param peer peer for which the onscreen surface is to be created
++     * @param bbNum number of back-buffers requested for this peer
++     * @param isResize whether this surface is being created in response to
++     * a component resize event
++     * @return a SurfaceData to be used for on-screen rendering for this peer.
++     * @see #dropScreenSurface(SurfaceData)
++     */
++    public SurfaceData createScreenSurface(Win32GraphicsConfig gc,
++                                           WComponentPeer peer, int bbNum,
++                                           boolean isResize)
++    {
++        return gc.createSurfaceData(peer, bbNum);
++    }
++
++    /**
++     * Drops the passed surface from the list of managed surfaces.
++     *
++     * Nothing happens if the surface wasn't managed by this manager.
++     *
++     * @param sd SurfaceData to be removed from the list of managed surfaces
++     */
++    public void dropScreenSurface(SurfaceData sd) {}
++
++    /**
++     * Returns a replacement SurfaceData for the invalid passed one.
++     *
++     * This method should be used by SurfaceData's created by
++     * the ScreenUpdateManager for providing replacement surfaces.
++     *
++     * @param peer to which the old surface belongs
++     * @param oldsd the old (invalid) surface to get replaced
++     * @return a replacement surface
++     * @see sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData#getReplacement()
++     * @see sun.java2d.windows.GDIWindowSurfaceData#getReplacement()
++     */
++    public SurfaceData getReplacementScreenSurface(WComponentPeer peer,
++                                                   SurfaceData oldsd)
++    {
++        return peer.getSurfaceData();
++    }
++
++    /**
++     * Returns an (singleton) instance of the screen surfaces
++     * manager class.
++     * @return instance of onscreen surfaces manager
++     */
++    public static synchronized ScreenUpdateManager getInstance() {
++        if (theInstance == null) {
++            if (WindowsFlags.isD3DEnabled()) {
++                theInstance = new D3DScreenUpdateManager();
++            } else {
++                theInstance = new ScreenUpdateManager();
++            }
++        }
++        return theInstance;
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/SurfaceManagerFactory.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -26,14 +26,13 @@
+ package sun.java2d;
+ 
+ import java.awt.GraphicsConfiguration;
+-import java.awt.image.BufferedImage;
++import sun.awt.image.BufImgVolatileSurfaceManager;
+ import sun.awt.image.SunVolatileImage;
+-import sun.awt.image.SurfaceManager;
+ import sun.awt.image.VolatileSurfaceManager;
++import sun.java2d.d3d.D3DGraphicsConfig;
++import sun.java2d.d3d.D3DVolatileSurfaceManager;
+ import sun.java2d.opengl.WGLGraphicsConfig;
+ import sun.java2d.opengl.WGLVolatileSurfaceManager;
+-import sun.java2d.windows.WindowsFlags;
+-import sun.java2d.windows.WinVolatileSurfaceManager;
+ 
+ /**
+  * This is a factory class with static methods for creating a
+@@ -55,10 +54,12 @@
+                               Object context)
+     {
+         GraphicsConfiguration gc = vImg.getGraphicsConfig();
+-        if (gc instanceof WGLGraphicsConfig) {
++        if (gc instanceof D3DGraphicsConfig) {
++            return new D3DVolatileSurfaceManager(vImg, context);
++        } else if (gc instanceof WGLGraphicsConfig) {
+             return new WGLVolatileSurfaceManager(vImg, context);
+         } else {
+-            return new WinVolatileSurfaceManager(vImg, context);
++            return new BufImgVolatileSurfaceManager(vImg, context);
+         }
+     }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DBackBufferSurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBackBufferSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,87 +0,0 @@
+-/*
+- * Copyright (c) 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.d3d;
+-
+-import java.awt.GraphicsConfiguration;
+-import java.awt.Image;
+-import java.awt.Transparency;
+-import java.awt.image.ColorModel;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.windows.Win32SurfaceData;
+-
+-public class D3DBackBufferSurfaceData extends D3DSurfaceData {
+-
+-    private Win32SurfaceData parentData;
+-
+-    /**
+-     * Private constructor.  Use createData() to create an object.
+-     */
+-    private D3DBackBufferSurfaceData(int width, int height,
+-                                     SurfaceType sType, ColorModel cm,
+-                                     GraphicsConfiguration gc,
+-                                     Image image, int screen,
+-                                     Win32SurfaceData parentData)
+-    {
+-        super(width, height, D3DSurfaceData.D3D_ATTACHED_SURFACE,
+-              sType, cm, gc, image, Transparency.OPAQUE);
+-        this.parentData = parentData;
+-        initSurface(width, height, screen, parentData);
+-    }
+-
+-    private native void restoreDepthBuffer();
+-
+-    @Override
+-    public void restoreSurface() {
+-        parentData.restoreSurface();
+-        // The above call restores the primary surface
+-        // to which this backbuffer is attached. But
+-        // we need to explicitly restore the depth buffer
+-        // associated with this backbuffer surface, because it's not
+-        // part of a 'complex' primary surface, and thus will not be
+-        // restored as part of the primary surface restoration.
+-        restoreDepthBuffer();
+-    }
+-
+-    public static D3DBackBufferSurfaceData
+-        createData(int width, int height,
+-                   ColorModel cm, GraphicsConfiguration gc,
+-                   Image image,
+-                   Win32SurfaceData parentData)
+-    {
+-        Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
+-        if (!gd.isD3DEnabledOnDevice()) {
+-            return null;
+-        }
+-        SurfaceType sType = getSurfaceType(cm, Transparency.OPAQUE);
+-        return new
+-            D3DBackBufferSurfaceData(width, height,
+-                 getSurfaceType(gc, cm,
+-                                D3DSurfaceData.D3D_ATTACHED_SURFACE),
+-                 cm, gc, image,
+-                 gd.getScreen(), parentData);
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBlitLoops.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
@@ -8630,7 +8912,7 @@
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
-@@ -29,131 +29,423 @@
+@@ -29,130 +29,777 @@
  import java.awt.Transparency;
  import java.awt.geom.AffineTransform;
  import java.awt.image.AffineTransformOp;
@@ -8644,10 +8926,10 @@
  import sun.java2d.loops.GraphicsPrimitive;
  import sun.java2d.loops.GraphicsPrimitiveMgr;
 -import sun.java2d.loops.CompositeType;
--import sun.java2d.loops.SurfaceType;
++import sun.java2d.loops.ScaledBlit;
+ import sun.java2d.loops.SurfaceType;
 -import sun.java2d.loops.Blit;
- import sun.java2d.loops.ScaledBlit;
-+import sun.java2d.loops.SurfaceType;
+-import sun.java2d.loops.ScaledBlit;
  import sun.java2d.loops.TransformBlit;
  import sun.java2d.pipe.Region;
 -import sun.java2d.SurfaceData;
@@ -8655,9 +8937,15 @@
 +import sun.java2d.pipe.RenderQueue;
 +import static sun.java2d.pipe.BufferedOpCodes.*;
 +import sun.java2d.windows.GDIWindowSurfaceData;
-+
+ 
+-import static sun.java2d.d3d.D3DSurfaceData.*;
 +class D3DBlitLoops {
-+
+ 
+-/**
+- * This class contains accelerated blits/scales/transforms
+- * between textures and DD surfaces.
+- */
+-public class D3DBlitLoops {
 +    static void register() {
 +        Blit blitIntArgbPreToSurface =
 +            new D3DSwToSurfaceBlit(SurfaceType.IntArgbPre,
@@ -8666,27 +8954,44 @@
 +            new D3DSwToTextureBlit(SurfaceType.IntArgbPre,
 +                                   D3DSurfaceData.ST_INT_ARGB_PRE);
  
--import static sun.java2d.d3d.D3DSurfaceData.*;
-+        GraphicsPrimitive[] primitives = {
+-    static void register()
+-    {
+         GraphicsPrimitive[] primitives = {
+-            new D3DTextureToSurfaceBlit(IntRgbD3D),
+-            new D3DTextureToSurfaceBlit(Ushort565RgbD3D),
+-            new D3DTextureToSurfaceBlit(IntRgbxD3D),
+-            new D3DTextureToSurfaceBlit(Ushort555RgbD3D),
+-            new D3DTextureToSurfaceBlit(ThreeByteBgrD3D),
 +            // prevent D3DSurface -> Screen blits
 +            new D3DSurfaceToGDIWindowSurfaceBlit(),
 +            new D3DSurfaceToGDIWindowSurfaceScale(),
 +            new D3DSurfaceToGDIWindowSurfaceTransform(),
-+
+ 
+-            new D3DTextureToSurfaceScale(IntRgbD3D),
+-            new D3DTextureToSurfaceScale(Ushort565RgbD3D),
+-            new D3DTextureToSurfaceScale(IntRgbxD3D),
+-            new D3DTextureToSurfaceScale(Ushort555RgbD3D),
+-            new D3DTextureToSurfaceScale(ThreeByteBgrD3D),
 +            // surface->surface ops
 +            new D3DSurfaceToSurfaceBlit(),
 +            new D3DSurfaceToSurfaceScale(),
 +            new D3DSurfaceToSurfaceTransform(),
-+
+ 
+-            new D3DTextureToSurfaceTransform(D3DTexture, IntRgbD3D),
+-            new D3DTextureToSurfaceTransform(D3DTexture, Ushort565RgbD3D),
+-            new D3DTextureToSurfaceTransform(D3DTexture, IntRgbxD3D),
+-            new D3DTextureToSurfaceTransform(D3DTexture, Ushort555RgbD3D),
+-            new D3DTextureToSurfaceTransform(D3DTexture, ThreeByteBgrD3D),
 +            // render-to-texture surface->surface ops
 +            new D3DRTTSurfaceToSurfaceBlit(),
 +            new D3DRTTSurfaceToSurfaceScale(),
 +            new D3DRTTSurfaceToSurfaceTransform(),
-+
+ 
+-            new DelegateSwToTextureLoop(),
 +            // surface->sw ops
 +            new D3DSurfaceToSwBlit(SurfaceType.IntArgb,
 +                                   D3DSurfaceData.ST_INT_ARGB),
-+
+ 
 +            // sw->surface ops
 +            blitIntArgbPreToSurface,
 +            new D3DSwToSurfaceBlit(SurfaceType.IntArgb,
@@ -8769,15 +9074,17 @@
 +            new D3DGeneralBlit(D3DSurfaceData.D3DTexture,
 +                               CompositeType.SrcNoEa,
 +                               blitIntArgbPreToTexture),
-+        };
-+        GraphicsPrimitiveMgr.register(primitives);
-+    }
- 
--/**
-- * This class contains accelerated blits/scales/transforms
-- * between textures and DD surfaces.
-- */
--public class D3DBlitLoops {
+         };
+         GraphicsPrimitiveMgr.register(primitives);
+     }
+-    static native void doTransform(long pSrc, long pDst, long pCtx,
+-                                   int hint,
+-                                   int sx1, int sy1, int sx2, int sy2,
+-                                   float dx1, float dy1,
+-                                   float dx2, float dy2);
+ 
+-    static long getContext(SurfaceData src, SurfaceData dst,
+-                           Region clip, Composite comp, AffineTransform at)
 +    /**
 +     * The following offsets are used to pack the parameters in
 +     * createPackedParams().  (They are also used at the native level when
@@ -8789,8 +9096,7 @@
 +    private static final int OFFSET_RTT     =  2;
 +    private static final int OFFSET_XFORM   =  1;
 +    private static final int OFFSET_ISOBLIT =  0;
- 
--    static void register()
++
 +    /**
 +     * Packs the given parameters into a single int value in order to save
 +     * space on the rendering queue.
@@ -8799,24 +9105,11 @@
 +                                          boolean rtt, boolean xform,
 +                                          int hint, int srctype)
      {
--        GraphicsPrimitive[] primitives = {
--            new D3DTextureToSurfaceBlit(IntRgbD3D),
--            new D3DTextureToSurfaceBlit(Ushort565RgbD3D),
--            new D3DTextureToSurfaceBlit(IntRgbxD3D),
--            new D3DTextureToSurfaceBlit(Ushort555RgbD3D),
--            new D3DTextureToSurfaceBlit(ThreeByteBgrD3D),
--
--            new D3DTextureToSurfaceScale(IntRgbD3D),
--            new D3DTextureToSurfaceScale(Ushort565RgbD3D),
--            new D3DTextureToSurfaceScale(IntRgbxD3D),
--            new D3DTextureToSurfaceScale(Ushort555RgbD3D),
--            new D3DTextureToSurfaceScale(ThreeByteBgrD3D),
--
--            new D3DTextureToSurfaceTransform(D3DTexture, IntRgbD3D),
--            new D3DTextureToSurfaceTransform(D3DTexture, Ushort565RgbD3D),
--            new D3DTextureToSurfaceTransform(D3DTexture, IntRgbxD3D),
--            new D3DTextureToSurfaceTransform(D3DTexture, Ushort555RgbD3D),
--            new D3DTextureToSurfaceTransform(D3DTexture, ThreeByteBgrD3D),
+-        int ctxFlags;
+-        if (src.getTransparency() == Transparency.OPAQUE) {
+-            ctxFlags = D3DContext.SRC_IS_OPAQUE;
+-        } else {
+-            ctxFlags = D3DContext.NO_CONTEXT_FLAGS;
 +        return
 +            ((srctype           << OFFSET_SRCTYPE) |
 +             (hint              << OFFSET_HINT   ) |
@@ -8825,8 +9118,7 @@
 +             ((xform   ? 1 : 0) << OFFSET_XFORM  ) |
 +             ((isoblit ? 1 : 0) << OFFSET_ISOBLIT));
 +    }
- 
--            new DelegateSwToTextureLoop(),
++
 +    /**
 +     * Enqueues a BLIT operation with the given parameters.  Note that the
 +     * RenderQueue lock must be held before calling this method.
@@ -8851,9 +9143,7 @@
 +        buf.putLong(src.getNativeOps());
 +        buf.putLong(dst.getNativeOps());
 +    }
- 
--        };
--        GraphicsPrimitiveMgr.register(primitives);
++
 +    static void Blit(SurfaceData srcData, SurfaceData dstData,
 +                     Composite comp, Region clip,
 +                     AffineTransform xform, int hint,
@@ -8866,8 +9156,10 @@
 +        int ctxflags = 0;
 +        if (srcData.getTransparency() == Transparency.OPAQUE) {
 +            ctxflags |= D3DContext.SRC_IS_OPAQUE;
-+        }
-+
+         }
+ 
+-        return D3DContext.getContext(src, dst, clip, comp, at,
+-                                     0xffffffff /* rgb */, ctxFlags);
 +        D3DSurfaceData d3dDst = (D3DSurfaceData)dstData;
 +        D3DRenderQueue rq = D3DRenderQueue.getInstance();
 +        rq.lock();
@@ -8909,21 +9201,7 @@
 +                (D3DScreenUpdateManager)ScreenUpdateManager.getInstance();
 +            mgr.runUpdateNow();
 +        }
-     }
--    static native void doTransform(long pSrc, long pDst, long pCtx,
--                                   int hint,
--                                   int sx1, int sy1, int sx2, int sy2,
--                                   float dx1, float dy1,
--                                   float dx2, float dy2);
--
--    static long getContext(SurfaceData src, SurfaceData dst,
--                           Region clip, Composite comp, AffineTransform at)
--    {
--        int ctxFlags;
--        if (src.getTransparency() == Transparency.OPAQUE) {
--            ctxFlags = D3DContext.SRC_IS_OPAQUE;
--        } else {
--            ctxFlags = D3DContext.NO_CONTEXT_FLAGS;
++    }
 +
 +    /**
 +     * Note: The srcImg and biop parameters are only used when invoked
@@ -8984,10 +9262,8 @@
 +            }
 +        } finally {
 +            rq.unlock();
-         }
- 
--        return D3DContext.getContext(src, dst, clip, comp, at,
--                                     0xffffffff /* rgb */, ctxFlags);
++        }
++
 +        if (rtt && (d3dDst.getType() == D3DSurfaceData.WINDOW)) {
 +            // we only have to flush immediately when copying from a
 +            // (non-texture) surface to the screen; otherwise Swing apps
@@ -9044,20 +9320,22 @@
  
 -    D3DTextureToSurfaceTransform(SurfaceType srcType,
 -                                 SurfaceType dstType)
+-    {
+-        super(srcType, CompositeType.AnyAlpha, dstType);
 +    D3DSurfaceToSurfaceScale() {
 +        super(D3DSurfaceData.D3DSurface,
 +              CompositeType.AnyAlpha,
 +              D3DSurfaceData.D3DSurface);
-+    }
-+
+     }
+ 
+-    @Override
 +    public void Scale(SurfaceData src, SurfaceData dst,
 +                      Composite comp, Region clip,
 +                      int sx1, int sy1,
 +                      int sx2, int sy2,
 +                      double dx1, double dy1,
 +                      double dx2, double dy2)
-     {
--        super(srcType, CompositeType.AnyAlpha, dstType);
++    {
 +        D3DBlitLoops.IsoBlit(src, dst,
 +                             null, null,
 +                             comp, clip, null,
@@ -9074,9 +9352,8 @@
 +        super(D3DSurfaceData.D3DSurface,
 +              CompositeType.AnyAlpha,
 +              D3DSurfaceData.D3DSurface);
-     }
- 
--    @Override
++    }
++
      public void Transform(SurfaceData src, SurfaceData dst,
                            Composite comp, Region clip,
                            AffineTransform at, int hint,
@@ -9090,21 +9367,17 @@
 -                                     sx, sy, sx+w, sy+h,
 -                                     (float)dx, (float)dy,
 -                                     (float)(dx+w), (float)(dy+h));
--        }
 +        D3DBlitLoops.IsoBlit(src, dst,
 +                             null, null,
 +                             comp, clip, at, hint,
 +                             sx, sy, sx+w, sy+h,
 +                             dx, dy, dx+w, dy+h,
 +                             false);
-     }
- }
- 
--class D3DTextureToSurfaceScale extends ScaledBlit {
++    }
++}
++
 +class D3DRTTSurfaceToSurfaceBlit extends Blit {
- 
--    D3DTextureToSurfaceScale(SurfaceType dstType) {
--        super(D3DTexture, CompositeType.AnyAlpha, dstType);
++
 +    D3DRTTSurfaceToSurfaceBlit() {
 +        super(D3DSurfaceData.D3DSurfaceRTT,
 +              CompositeType.AnyAlpha,
@@ -9131,24 +9404,15 @@
 +        super(D3DSurfaceData.D3DSurfaceRTT,
 +              CompositeType.AnyAlpha,
 +              D3DSurfaceData.D3DSurface);
-     }
- 
--    @Override
-     public void Scale(SurfaceData src, SurfaceData dst,
-                       Composite comp, Region clip,
-                       int sx1, int sy1,
-@@ -161,65 +453,381 @@
-                       double dx1, double dy1,
-                       double dx2, double dy2)
-     {
--        synchronized (D3DContext.LOCK) {
--            long pCtx = D3DBlitLoops.getContext(src, dst, clip, comp, null);
--            D3DBlitLoops.doTransform(src.getNativeOps(), dst.getNativeOps(),
--                                     pCtx,
--                                     AffineTransformOp.TYPE_NEAREST_NEIGHBOR,
--                                     sx1, sy1, sx2, sy2,
--                                     (float)dx1, (float)dy1,
--                                     (float)dx2, (float)dy2);
++    }
++
++    public void Scale(SurfaceData src, SurfaceData dst,
++                      Composite comp, Region clip,
++                      int sx1, int sy1,
++                      int sx2, int sy2,
++                      double dx1, double dy1,
++                      double dx2, double dy2)
++    {
 +        D3DBlitLoops.IsoBlit(src, dst,
 +                             null, null,
 +                             comp, clip, null,
@@ -9226,57 +9490,21 @@
      }
  }
  
--class DelegateSwToTextureLoop extends Blit {
 +class D3DSwToSurfaceBlit extends Blit {
 +
 +    private int typeval;
- 
--    DelegateSwToTextureLoop() {
--        super(SurfaceType.Any, CompositeType.SrcNoEa, D3DTexture);
++
 +    D3DSwToSurfaceBlit(SurfaceType srcType, int typeval) {
 +        super(srcType,
 +              CompositeType.AnyAlpha,
 +              D3DSurfaceData.D3DSurface);
 +        this.typeval = typeval;
-     }
- 
--    @Override
-     public void Blit(SurfaceData src, SurfaceData dst,
-                      Composite comp, Region clip,
-                      int sx, int sy, int dx, int dy, int w, int h)
-     {
--        Blit realBlit = null;
--        int pf = ((D3DSurfaceData)dst).getPixelFormat();
--        switch (pf) {
--        case PF_INT_ARGB:
--            realBlit = Blit.getFromCache(src.getSurfaceType(),
--                                         CompositeType.SrcNoEa,
--                                         SurfaceType.IntArgbPre);
--            break;
--        case PF_INT_RGB:
--            realBlit = Blit.getFromCache(src.getSurfaceType(),
--                                         CompositeType.SrcNoEa,
--                                         SurfaceType.IntRgb);
--            break;
--        case PF_USHORT_565_RGB:
--            realBlit = Blit.getFromCache(src.getSurfaceType(),
--                                         CompositeType.SrcNoEa,
--                                         SurfaceType.Ushort565Rgb);
--            break;
--        case PF_USHORT_555_RGB:
--            realBlit = Blit.getFromCache(src.getSurfaceType(),
--                                         CompositeType.SrcNoEa,
--                                         SurfaceType.Ushort555Rgb);
--            break;
--        case PF_USHORT_4444_ARGB:
--            // REMIND: this should really be premultiplied!
--            realBlit = Blit.getFromCache(src.getSurfaceType(),
--                                         CompositeType.SrcNoEa,
--                                         SurfaceType.Ushort4444Argb);
--            break;
--        default:
--             throw
--                 new InternalError("Can't yet handle dest pixel format: "+pf);
++    }
++
++    public void Blit(SurfaceData src, SurfaceData dst,
++                     Composite comp, Region clip,
++                     int sx, int sy, int dx, int dy, int w, int h)
++    {
 +        D3DBlitLoops.Blit(src, dst,
 +                          comp, clip, null,
 +                          AffineTransformOp.TYPE_NEAREST_NEIGHBOR,
@@ -9383,14 +9611,16 @@
 +    }
 +}
 +
-+class D3DTextureToSurfaceScale extends ScaledBlit {
-+
+ class D3DTextureToSurfaceScale extends ScaledBlit {
+ 
+-    D3DTextureToSurfaceScale(SurfaceType dstType) {
+-        super(D3DTexture, CompositeType.AnyAlpha, dstType);
 +    D3DTextureToSurfaceScale() {
 +        super(D3DSurfaceData.D3DTexture,
 +              CompositeType.AnyAlpha,
 +              D3DSurfaceData.D3DSurface);
-+    }
-+
+     }
+ 
 +    public void Scale(SurfaceData src, SurfaceData dst,
 +                      Composite comp, Region clip,
 +                      int sx1, int sy1,
@@ -9463,10 +9693,8 @@
 +        if (srcTmp != null) {
 +            // use cached intermediate surface, if available
 +            cachedSrc = (SurfaceData)srcTmp.get();
-         }
- 
--        if (realBlit != null) {
--            realBlit.Blit(src, dst, comp, clip, sx, sy, dx, dy, w, h);
++        }
++
 +        // convert source to IntArgbPre
 +        src = convertFrom(convertsrc, src, sx, sy, w, h,
 +                          cachedSrc, BufferedImage.TYPE_INT_ARGB_PRE);
@@ -9478,9 +9706,9 @@
 +        if (src != cachedSrc) {
 +            // cache the intermediate surface
 +            srcTmp = new WeakReference(src);
-         }
-     }
- }
++        }
++    }
++}
 +
 +/*
 + * The following classes prohibit copying D3DSurfaces to the screen
@@ -9534,64 +9762,116 @@
 +              CompositeType.AnyAlpha,
 +              GDIWindowSurfaceData.AnyGdi);
 +    }
-+    @Override
-+    public void Scale(SurfaceData src, SurfaceData dst,
-+                      Composite comp, Region clip,
-+                      int sx1, int sy1,
-+                      int sx2, int sy2,
-+                      double dx1, double dy1,
-+                      double dx2, double dy2)
-+    {
+     @Override
+     public void Scale(SurfaceData src, SurfaceData dst,
+                       Composite comp, Region clip,
+@@ -161,65 +808,26 @@
+                       double dx1, double dy1,
+                       double dx2, double dy2)
+     {
+-        synchronized (D3DContext.LOCK) {
+-            long pCtx = D3DBlitLoops.getContext(src, dst, clip, comp, null);
+-            D3DBlitLoops.doTransform(src.getNativeOps(), dst.getNativeOps(),
+-                                     pCtx,
+-                                     AffineTransformOp.TYPE_NEAREST_NEIGHBOR,
+-                                     sx1, sy1, sx2, sy2,
+-                                     (float)dx1, (float)dy1,
+-                                     (float)dx2, (float)dy2);
+-        }
 +        // see comment above
 +        D3DVolatileSurfaceManager.handleVItoScreenOp(src, dst);
-+    }
-+}
-+
+     }
+ }
+ 
+-class DelegateSwToTextureLoop extends Blit {
 +class D3DSurfaceToGDIWindowSurfaceTransform extends TransformBlit {
-+
+ 
+-    DelegateSwToTextureLoop() {
+-        super(SurfaceType.Any, CompositeType.SrcNoEa, D3DTexture);
 +    D3DSurfaceToGDIWindowSurfaceTransform() {
 +        super(D3DSurfaceData.D3DSurface,
 +              CompositeType.AnyAlpha,
 +              GDIWindowSurfaceData.AnyGdi);
-+    }
-+    @Override
+     }
+-
+     @Override
+-    public void Blit(SurfaceData src, SurfaceData dst,
+-                     Composite comp, Region clip,
+-                     int sx, int sy, int dx, int dy, int w, int h)
 +    public void Transform(SurfaceData src, SurfaceData dst,
 +                          Composite comp, Region clip,
 +                          AffineTransform at, int hint,
 +                          int sx, int sy, int dx, int dy,
 +                          int w, int h)
-+    {
+     {
+-        Blit realBlit = null;
+-        int pf = ((D3DSurfaceData)dst).getPixelFormat();
+-        switch (pf) {
+-        case PF_INT_ARGB:
+-            realBlit = Blit.getFromCache(src.getSurfaceType(),
+-                                         CompositeType.SrcNoEa,
+-                                         SurfaceType.IntArgbPre);
+-            break;
+-        case PF_INT_RGB:
+-            realBlit = Blit.getFromCache(src.getSurfaceType(),
+-                                         CompositeType.SrcNoEa,
+-                                         SurfaceType.IntRgb);
+-            break;
+-        case PF_USHORT_565_RGB:
+-            realBlit = Blit.getFromCache(src.getSurfaceType(),
+-                                         CompositeType.SrcNoEa,
+-                                         SurfaceType.Ushort565Rgb);
+-            break;
+-        case PF_USHORT_555_RGB:
+-            realBlit = Blit.getFromCache(src.getSurfaceType(),
+-                                         CompositeType.SrcNoEa,
+-                                         SurfaceType.Ushort555Rgb);
+-            break;
+-        case PF_USHORT_4444_ARGB:
+-            // REMIND: this should really be premultiplied!
+-            realBlit = Blit.getFromCache(src.getSurfaceType(),
+-                                         CompositeType.SrcNoEa,
+-                                         SurfaceType.Ushort4444Argb);
+-            break;
+-        default:
+-             throw
+-                 new InternalError("Can't yet handle dest pixel format: "+pf);
+-        }
+-
+-        if (realBlit != null) {
+-            realBlit.Blit(src, dst, comp, clip, sx, sy, dx, dy, w, h);
+-        }
 +        // see comment above
 +        D3DVolatileSurfaceManager.handleVItoScreenOp(src, dst);
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java	2011-01-08 01:26:50.463202123 +0000
+     }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DBufImgOps.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,116 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -9685,9 +9965,9 @@
 +        return true;
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DContext.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DContext.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -9715,16 +9995,14 @@
 +import static sun.java2d.pipe.BufferedOpCodes.*;
 +import static sun.java2d.pipe.hw.ContextCapabilities.*;
 +import static sun.java2d.d3d.D3DContext.D3DContextCaps.*;
-+
+ 
+-public class D3DContext {
 +/**
 + * Note that the RenderQueue lock must be acquired before calling any of
 + * the methods in this class.
 + */
 +class D3DContext extends BufferedContext {
  
--public class D3DContext {
-+    private final D3DGraphicsDevice device;
- 
 -    public static final int NO_CONTEXT_FLAGS = 0;
 -    /**
 -     * Used in D3DBlitLoops: if the source surface is opaque
@@ -9732,7 +10010,8 @@
 -     * (if there's no ea), thus improving performance.
 -     */
 -    public static final int SRC_IS_OPAQUE    = 1;
--
++    private final D3DGraphicsDevice device;
+ 
 -    /**
 -     * This is a list of capabilities supported by the device this
 -     * context is associated with.
@@ -9800,31 +10079,20 @@
 -     * Direct3D pipeline is enabled on this device
 -     */
 -    public static final int J2D_D3D_ENABLED_OK             = (1 <<14);
-+    D3DContext(RenderQueue rq, D3DGraphicsDevice device) {
-+        super(rq);
-+        this.device = device;
-+    }
- 
-     /**
+-
+-    /**
 -     * The lock object used to synchronize access to the native windowing
 -     * system layer.  Note that rendering methods should always synchronize on
 -     * D3DContext.LOCK before calling the D3DContext.getContext() method,
 -     * or any other method that invokes native D3d commands.
 -     * REMIND: in D3D case we should really be synchronizing on per-device
 -     * basis.
-+     * Invalidates the currentContext field to ensure that we properly
-+     * revalidate the D3DContext (make it current, etc.) next time through
-+     * the validate() method.  This is typically invoked from methods
-+     * that affect the current context state (e.g. disposing a context or
-+     * surface).
-      */
+-     */
 -    static Object LOCK;
 -
 -    private Win32GraphicsDevice  gd;
 -    private boolean         valid;
-+    static void invalidateCurrentContext() {
-+        // assert D3DRenderQueue.getInstance().lock.isHeldByCurrentThread();
- 
+-
 -    protected long          nativeContext;
 -    private SurfaceData     validatedDstData;
 -    private Region          validatedClip;
@@ -9856,23 +10124,26 @@
 -    static {
 -        if (!GraphicsEnvironment.isHeadless()) {
 -            LOCK = D3DContext.class;
-+        // invalidate the current Java-level context so that we
-+        // revalidate everything the next time around
-+        if (currentContext != null) {
-+            currentContext.invalidateContext();
-+            currentContext = null;
-         }
+-        }
 -    }
 -
 -    public D3DContext(Win32GraphicsDevice gd) {
 -        this.gd = gd;
 -        reinitNativeContext();
--    }
- 
--    /**
++    D3DContext(RenderQueue rq, D3DGraphicsDevice device) {
++        super(rq);
++        this.device = device;
+     }
+ 
+     /**
 -     * Reinitializes the context by retrieving a pointer to the native
 -     * D3DContext object, and resetting the device caps.
--     */
++     * Invalidates the currentContext field to ensure that we properly
++     * revalidate the D3DContext (make it current, etc.) next time through
++     * the validate() method.  This is typically invoked from methods
++     * that affect the current context state (e.g. disposing a context or
++     * surface).
+      */
 -    void reinitNativeContext() {
 -        nativeContext = initNativeContext(gd.getScreen());
 -        deviceCaps = nativeContext != 0L ?
@@ -9888,7 +10159,16 @@
 -                                   ". Device Caps: " +
 -                                   Integer.toHexString(deviceCaps));
 -            }
--        }
++    static void invalidateCurrentContext() {
++        // assert D3DRenderQueue.getInstance().lock.isHeldByCurrentThread();
++
++        // invalidate the current Java-level context so that we
++        // revalidate everything the next time around
++        if (currentContext != null) {
++            currentContext.invalidateContext();
++            currentContext = null;
+         }
++
 +        // invalidate the context reference at the native level, and
 +        // then flush the queue so that we have no pending operations
 +        // dependent on the current context
@@ -9941,9 +10221,21 @@
 -        // it will prevent from creating d3d surfaces, which means that
 -        // we'll never get a chance to continue using d3d after a single
 -        // invalidation event (for example, a display change).
--    }
 +    static void setScratchSurface(D3DContext d3dc) {
 +        // assert D3DRenderQueue.getInstance().lock.isHeldByCurrentThread();
++
++        // invalidate the current context
++        if (d3dc != currentContext) {
++            currentContext = null;
++        }
++
++        // set the scratch context
++        D3DRenderQueue rq = D3DRenderQueue.getInstance();
++        RenderBuffer buf = rq.getBuffer();
++        rq.ensureCapacity(8);
++        buf.putInt(SET_SCRATCH_SURFACE);
++        buf.putInt(d3dc.getDevice().getScreen());
+     }
  
 -    /**
 -     * Fetches the D3DContext associated with the current
@@ -9960,44 +10252,10 @@
 -    {
 -        if (dstData instanceof D3DSurfaceData == false) {
 -            throw new InvalidPipeException("Incorrect destination surface");
-+        // invalidate the current context
-+        if (d3dc != currentContext) {
-+            currentContext = null;
-         }
- 
--        D3DContext d3dc = ((D3DSurfaceData)dstData).getContext();
--        try {
--            d3dc.validate(srcData, dstData, clip, comp, xform, pixel, flags);
--        } catch (InvalidPipeException e) {
--            d3dc.invalidateContext();
--            // note that we do not propagate the exception. Once the context
--            // is invalidated, any d3d rendering operations are noops, and
--            // we are waiting for the primary surface restoration, which
--            // happens when VolatileImage is validated. At this point
--            // the native D3DContext will be reinitialized, and the next
--            // time around validation of the context will succeed.
--            // Throwing the exception here will do no good, since the
--            // destination surface (which is associated with a VolatileImage
--            // or a BufferStrategy) will not be restored until VI.validate()
--            // is called by the rendering thread.
--        }
--        return d3dc.getNativeContext();
-+        // set the scratch context
-+        D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+        RenderBuffer buf = rq.getBuffer();
-+        rq.ensureCapacity(8);
-+        buf.putInt(SET_SCRATCH_SURFACE);
-+        buf.putInt(d3dc.getDevice().getScreen());
-     }
- 
--    public int getDeviceCaps() {
--        return deviceCaps;
 +    public RenderQueue getRenderQueue() {
 +        return D3DRenderQueue.getInstance();
-     }
- 
--    boolean isRTTSupported() {
--        return ((deviceCaps & J2D_D3D_OP_RTT_SURFACE_OK) != 0);
++    }
++
 +    @Override
 +    public void saveState() {
 +        // assert rq.lock.isHeldByCurrentThread();
@@ -10012,14 +10270,8 @@
 +        rq.ensureCapacity(4);
 +        buf.putInt(SAVE_STATE);
 +        rq.flushNow();
-     }
- 
--    /**
--     * Returns a handle to the native D3DContext structure associated with
--     * this object.
--     */
--    long getNativeContext() {
--        return nativeContext;
++    }
++
 +    @Override
 +    public void restoreState() {
 +        // assert rq.lock.isHeldByCurrentThread();
@@ -10034,37 +10286,12 @@
 +        rq.ensureCapacity(4);
 +        buf.putInt(RESTORE_STATE);
 +        rq.flushNow();
-     }
- 
--    /**
--     * Validates the given parameters against the current state for this
--     * context.  If this context is not current, it will be made current
--     * for the given source and destination surfaces, and the viewport will
--     * be updated.  Then each part of the context state (clip, composite,
--     * etc.) is checked against the previous value.  If the value has changed
--     * since the last call to validate(), it will be updated accordingly.
--     */
--    private void validate(SurfaceData srcData, SurfaceData dstData,
--                          Region clip, Composite comp, AffineTransform xform,
--                          int pixel, int flags)
--    {
--        boolean updateClip = false;
--
--        if ((srcData != null && !srcData.isValid()) || !dstData.isValid() ||
--            dstData.getNativeOps() == 0L || dstData.isSurfaceLost())
--        {
--            throw new InvalidPipeException("Invalid surface");
--        }
++    }
++
 +    D3DGraphicsDevice getDevice() {
 +        return device;
 +    }
- 
--        if (!valid) {
--            // attempt to reinitialize the context. If the device has been
--            // reset, the following calls to setRenderTarget/setClip will
--            // succeed and not throw InvalidPipeException.
--            reinitNativeContext();
--        }
++
 +    static class D3DContextCaps extends ContextCapabilities {
 +        /**
 +         * Indicates the presence of pixel shaders (v2.0 or greater).
@@ -10088,7 +10315,89 @@
 +         * to support the Antialiasing Pixel Shader program.
 +         */
 +        static final int CAPS_AA_SHADER        = (FIRST_PRIVATE_CAP << 3);
- 
++
++        D3DContextCaps(int caps, String adapterId) {
++            super(caps, adapterId);
+         }
+ 
+-        D3DContext d3dc = ((D3DSurfaceData)dstData).getContext();
+-        try {
+-            d3dc.validate(srcData, dstData, clip, comp, xform, pixel, flags);
+-        } catch (InvalidPipeException e) {
+-            d3dc.invalidateContext();
+-            // note that we do not propagate the exception. Once the context
+-            // is invalidated, any d3d rendering operations are noops, and
+-            // we are waiting for the primary surface restoration, which
+-            // happens when VolatileImage is validated. At this point
+-            // the native D3DContext will be reinitialized, and the next
+-            // time around validation of the context will succeed.
+-            // Throwing the exception here will do no good, since the
+-            // destination surface (which is associated with a VolatileImage
+-            // or a BufferStrategy) will not be restored until VI.validate()
+-            // is called by the rendering thread.
++        @Override
++        public String toString() {
++            StringBuffer buf = new StringBuffer(super.toString());
++            if ((caps & CAPS_LCD_SHADER) != 0) {
++                buf.append("CAPS_LCD_SHADER|");
++            }
++            if ((caps & CAPS_BIOP_SHADER) != 0) {
++                buf.append("CAPS_BIOP_SHADER|");
++            }
++            if ((caps & CAPS_AA_SHADER) != 0) {
++                buf.append("CAPS_AA_SHADER|");
++            }
++            if ((caps & CAPS_DEVICE_OK) != 0) {
++                buf.append("CAPS_DEVICE_OK|");
++            }
++            return buf.toString();
+         }
+-        return d3dc.getNativeContext();
+-    }
+-
+-    public int getDeviceCaps() {
+-        return deviceCaps;
+-    }
+-
+-    boolean isRTTSupported() {
+-        return ((deviceCaps & J2D_D3D_OP_RTT_SURFACE_OK) != 0);
+-    }
+-
+-    /**
+-     * Returns a handle to the native D3DContext structure associated with
+-     * this object.
+-     */
+-    long getNativeContext() {
+-        return nativeContext;
+-    }
+-
+-    /**
+-     * Validates the given parameters against the current state for this
+-     * context.  If this context is not current, it will be made current
+-     * for the given source and destination surfaces, and the viewport will
+-     * be updated.  Then each part of the context state (clip, composite,
+-     * etc.) is checked against the previous value.  If the value has changed
+-     * since the last call to validate(), it will be updated accordingly.
+-     */
+-    private void validate(SurfaceData srcData, SurfaceData dstData,
+-                          Region clip, Composite comp, AffineTransform xform,
+-                          int pixel, int flags)
+-    {
+-        boolean updateClip = false;
+-
+-        if ((srcData != null && !srcData.isValid()) || !dstData.isValid() ||
+-            dstData.getNativeOps() == 0L || dstData.isSurfaceLost())
+-        {
+-            throw new InvalidPipeException("Invalid surface");
+-        }
+-
+-        if (!valid) {
+-            // attempt to reinitialize the context. If the device has been
+-            // reset, the following calls to setRenderTarget/setClip will
+-            // succeed and not throw InvalidPipeException.
+-            reinitNativeContext();
+-        }
+-
 -        if (dstData != validatedDstData) {
 -            // invalidate pixel and clip (so they will be updated below)
 -            validatedPixel = ~pixel;
@@ -10138,10 +10447,8 @@
 -                resetClip(nativeContext, pDest);
 -            }
 -            validatedClip = clip;
-+        D3DContextCaps(int caps, String adapterId) {
-+            super(caps, adapterId);
-         }
- 
+-        }
+-
 -        if ((comp != validatedComp) || (flags != validatedFlags)) {
 -            // invalidate pixel
 -            validatedPixel = ~pixel;
@@ -10152,12 +10459,7 @@
 -                                  ac.getAlpha(), flags);
 -            } else {
 -                resetComposite(nativeContext);
-+        @Override
-+        public String toString() {
-+            StringBuffer buf = new StringBuffer(super.toString());
-+            if ((caps & CAPS_LCD_SHADER) != 0) {
-+                buf.append("CAPS_LCD_SHADER|");
-             }
+-            }
 -        }
 -
 -        // validate transform
@@ -10167,9 +10469,7 @@
 -                xformInUse = false;
 -                vScaleX = vScaleY = 1.0;
 -                vShearX = vShearY = vTransX = vTransY = 0.0;
-+            if ((caps & CAPS_BIOP_SHADER) != 0) {
-+                buf.append("CAPS_BIOP_SHADER|");
-             }
+-            }
 -        } else {
 -            double nScaleX = xform.getScaleX();
 -            double nScaleY = xform.getScaleY();
@@ -10193,14 +10493,8 @@
 -                vTransX = nTransY;
 -                vTransY = nTransY;
 -                xformInUse = true;
-+            if ((caps & CAPS_AA_SHADER) != 0) {
-+                buf.append("CAPS_AA_SHADER|");
-             }
-+            if ((caps & CAPS_DEVICE_OK) != 0) {
-+                buf.append("CAPS_DEVICE_OK|");
-+            }
-+            return buf.toString();
-         }
+-            }
+-        }
 -
 -        // validate pixel
 -        if (pixel != validatedPixel) {
@@ -10215,9 +10509,9 @@
 -        dstData.markDirty();
      }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DDrawImage.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DDrawImage.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -10289,33 +10583,33 @@
 +        copyImage(sg, img, x, y, null);
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java	2011-01-08 01:26:50.463202123 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,327 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -10620,9 +10914,9 @@
 +        AccelDeviceEventNotifier.removeListener(l);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DGraphicsDevice.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,500 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -11124,33 +11418,33 @@
 +        d3dCaps = new D3DContextCaps(CAPS_EMPTY, null);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskBlit.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,69 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -11197,9 +11491,9 @@
 +                                   D3DContext.NO_CONTEXT_FLAGS);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DMaskFill.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DMaskFill.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -11351,33 +11645,33 @@
 +                                   null, sg2d.paint, sg2d, ctxflags);
      }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DPaints.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DPaints.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,233 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -11588,505 +11882,33 @@
 +        private RadialGradient() {}
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	2011-01-08 01:26:50.467202167 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2007, 2008, 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
-@@ -25,341 +25,169 @@
- 
- package sun.java2d.d3d;
- 
--import java.awt.Composite;
--import java.awt.Polygon;
--import java.awt.Shape;
--import java.awt.geom.AffineTransform;
--import java.awt.geom.Arc2D;
--import java.awt.geom.Ellipse2D;
--import java.awt.geom.IllegalPathStateException;
--import java.awt.geom.PathIterator;
--import java.awt.geom.RoundRectangle2D;
-+import java.awt.Transparency;
-+import java.awt.geom.Path2D;
- import sun.java2d.SunGraphics2D;
--import sun.java2d.pipe.Region;
--import sun.java2d.SurfaceData;
- import sun.java2d.loops.GraphicsPrimitive;
--import sun.java2d.pipe.LoopPipe;
--import sun.java2d.pipe.ShapeSpanIterator;
-+import sun.java2d.pipe.BufferedPaints;
-+import sun.java2d.pipe.BufferedRenderPipe;
-+import sun.java2d.pipe.RenderQueue;
- import sun.java2d.pipe.SpanIterator;
-+import sun.java2d.pipe.ParallelogramPipe;
-+import static sun.java2d.pipe.BufferedOpCodes.*;
- 
--import static sun.java2d.d3d.D3DContext.*;
--import sun.java2d.windows.DDRenderer;
-+class D3DRenderer extends BufferedRenderPipe {
- 
--public class D3DRenderer extends DDRenderer {
--
--    native boolean doDrawLineD3D(long pData, long pCtx,
--                                 int x1, int y1, int x2, int y2);
--    native boolean doDrawRectD3D(long pData, long pCtx,
--                                 int x, int y, int w, int h);
--    native boolean doFillRectD3D(long pData, long pCtx, int x, int y,
--                                 int width, int height);
--    native void doDrawPoly(long pData, long pCtx, int transx, int transy,
--                           int[] xpoints, int[] ypoints,
--                           int npoints, boolean isclosed);
--    native void devFillSpans(long pData, long pCtx, SpanIterator si,
--                             long iterator, int transx, int transy);
--
--
--    private long getContext(SunGraphics2D sg2d) {
--        AffineTransform at =
--            sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE ?
--            null : sg2d.transform;
--        int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
--            SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
--        return D3DContext.getContext(null, sg2d.surfaceData,
--                                     sg2d.getCompClip(),
--                                     sg2d.getComposite(),
--                                     at,
--                                     sg2d.eargb,
--                                     ctxflags);
-+    D3DRenderer(RenderQueue rq) {
-+        super(rq);
-     }
- 
-     @Override
--    public void drawLine(SunGraphics2D sg2d,
--                         int x1, int y1, int x2, int y2)
--    {
--        synchronized (D3DContext.LOCK) {
--            doDrawLineD3D(sg2d.surfaceData.getNativeOps(),
--                          getContext(sg2d),
--                          x1 + sg2d.transX, y1 + sg2d.transY,
--                          x2 + sg2d.transX, y2 + sg2d.transY);
--        }
-+    protected void validateContext(SunGraphics2D sg2d) {
-+        int ctxflags =
-+            sg2d.paint.getTransparency() == Transparency.OPAQUE ?
-+                D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS;
-+        D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
-+        D3DContext.validateContext(dstData, dstData,
-+                                   sg2d.getCompClip(), sg2d.composite,
-+                                   null, sg2d.paint, sg2d, ctxflags);
-     }
- 
-     @Override
--    public void fillRect(SunGraphics2D sg2d,
--                         int x, int y, int width, int height)
--    {
--        synchronized (D3DContext.LOCK) {
--            doFillRectD3D(sg2d.surfaceData.getNativeOps(),
--                          getContext(sg2d),
--                          sg2d.transX + x, sg2d.transY + y, width, height);
--        }
-+    protected void validateContextAA(SunGraphics2D sg2d) {
-+        int ctxflags = D3DContext.NO_CONTEXT_FLAGS;
-+        D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
-+        D3DContext.validateContext(dstData, dstData,
-+                                   sg2d.getCompClip(), sg2d.composite,
-+                                   null, sg2d.paint, sg2d, ctxflags);
-     }
- 
--    @Override
--    public void drawRect(SunGraphics2D sg2d,
--                         int x, int y, int width, int height)
-+    void copyArea(SunGraphics2D sg2d,
-+                  int x, int y, int w, int h, int dx, int dy)
-     {
--        synchronized (D3DContext.LOCK) {
--            doDrawRectD3D(sg2d.surfaceData.getNativeOps(),
--                          getContext(sg2d),
--                          x + sg2d.transX, sg2d.transY + y, width, height);
--        }
--    }
--
--    @Override
--    public void drawPolyline(SunGraphics2D sg2d,
--                             int xpoints[], int ypoints[], int npoints)
--    {
--        synchronized (D3DContext.LOCK) {
--            doDrawPoly(sg2d.surfaceData.getNativeOps(),
--                       getContext(sg2d),
--                       sg2d.transX, sg2d.transY,
--                       xpoints, ypoints, npoints, false);
--        }
--    }
--
--    @Override
--    public void drawPolygon(SunGraphics2D sg2d,
--                            int xpoints[], int ypoints[], int npoints)
--    {
--        synchronized (D3DContext.LOCK) {
--            doDrawPoly(sg2d.surfaceData.getNativeOps(),
--                       getContext(sg2d),
--                       sg2d.transX, sg2d.transY,
--                       xpoints, ypoints, npoints, true);
-+        rq.lock();
-+        try {
-+            int ctxflags =
-+                sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ?
-+                    D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS;
-+            D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
-+            D3DContext.validateContext(dstData, dstData,
-+                                       sg2d.getCompClip(), sg2d.composite,
-+                                       null, null, null, ctxflags);
-+
-+            rq.ensureCapacity(28);
-+            buf.putInt(COPY_AREA);
-+            buf.putInt(x).putInt(y).putInt(w).putInt(h);
-+            buf.putInt(dx).putInt(dy);
-+        } finally {
-+            rq.unlock();
-         }
-     }
- 
--    @Override
--    public void drawRoundRect(SunGraphics2D sg2d,
--                              int x, int y, int width, int height,
--                              int arcWidth, int arcHeight)
--    {
--        draw(sg2d, new RoundRectangle2D.Float(x, y, width, height,
--                                              arcWidth, arcHeight));
--    }
--
--    @Override
--    public void drawOval(SunGraphics2D sg2d,
--                         int x, int y, int width, int height)
--    {
--        draw(sg2d, new Ellipse2D.Float(x, y, width, height));
--    }
--
--    @Override
--    public void drawArc(SunGraphics2D sg2d,
--                        int x, int y, int width, int height,
--                        int startAngle, int arcAngle)
--    {
--        draw(sg2d, new Arc2D.Float(x, y, width, height,
--                                   startAngle, arcAngle,
--                                   Arc2D.OPEN));
--    }
--
--    @Override
--    public void fillRoundRect(SunGraphics2D sg2d,
--                              int x, int y, int width, int height,
--                              int arcWidth, int arcHeight)
--    {
--        fill(sg2d, new RoundRectangle2D.Float(x, y, width, height,
--             arcWidth, arcHeight));
--    }
--
--    @Override
--    public void fillOval(SunGraphics2D sg2d,
--                         int x, int y, int width, int height)
--    {
--        fill(sg2d, new Ellipse2D.Float(x, y, width, height));
--    }
-+    protected native void drawPoly(int[] xPoints, int[] yPoints,
-+                                   int nPoints, boolean isClosed,
-+                                   int transX, int transY);
- 
--    @Override
--    public void fillArc(SunGraphics2D sg2d,
--                        int x, int y, int width, int height,
--                        int startAngle, int arcAngle)
--    {
--        fill(sg2d, new Arc2D.Float(x, y, width, height,
--             startAngle, arcAngle, Arc2D.PIE));
--    }
--
--    @Override
--    public void fillPolygon(SunGraphics2D sg2d,
--                            int xpoints[], int ypoints[],
--                            int npoints)
--    {
--        fill(sg2d, new Polygon(xpoints, ypoints, npoints));
-+    D3DRenderer traceWrap() {
-+        return new Tracer(this);
-     }
- 
--    @Override
--    public void draw(SunGraphics2D sg2d, Shape s)
--    {
--        if (sg2d.strokeState == sg2d.STROKE_THIN) {
--            Polygon p;
--            if (s instanceof Polygon) {
--                p = (Polygon) s;
--                drawPolygon(sg2d, p.xpoints, p.ypoints, p.npoints);
--                return;
--            }
--            // we're letting d3d handle the transforms
--            PathIterator pi = s.getPathIterator(null, 0.5f);
--            p = new Polygon();
--            float coords[] = new float[2];
--            while (!pi.isDone()) {
--                switch (pi.currentSegment(coords)) {
--                    case PathIterator.SEG_MOVETO:
--                        if (p.npoints > 1) {
--                            drawPolyline(sg2d, p.xpoints, p.ypoints, p.npoints);
--                        }
--                        p.reset();
--                        p.addPoint((int) Math.floor(coords[0]),
--                            (int) Math.floor(coords[1]));
--                        break;
--                    case PathIterator.SEG_LINETO:
--                        if (p.npoints == 0) {
--                            throw new IllegalPathStateException
--                                ("missing initial moveto in path definition");
--                        }
--                        p.addPoint((int) Math.floor(coords[0]),
--                            (int) Math.floor(coords[1]));
--                        break;
--                    case PathIterator.SEG_CLOSE:
--                        if (p.npoints > 0) {
--                            p.addPoint(p.xpoints[0], p.ypoints[0]);
--                        }
--                        break;
--                    default:
--                        throw new
--                            IllegalPathStateException("path not flattened");
-+    private class Tracer extends D3DRenderer {
-+        private D3DRenderer d3dr;
-+        Tracer(D3DRenderer d3dr) {
-+            super(d3dr.rq);
-+            this.d3dr = d3dr;
-+        }
-+        public ParallelogramPipe getAAParallelogramPipe() {
-+            final ParallelogramPipe realpipe = d3dr.getAAParallelogramPipe();
-+            return new ParallelogramPipe() {
-+                public void fillParallelogram(SunGraphics2D sg2d,
-+                                              double x, double y,
-+                                              double dx1, double dy1,
-+                                              double dx2, double dy2)
-+                {
-+                    GraphicsPrimitive.tracePrimitive("D3DFillAAParallelogram");
-+                    realpipe.fillParallelogram(sg2d,
-+                                               x, y, dx1, dy1, dx2, dy2);
-                 }
--                pi.next();
--            }
--            if (p.npoints > 1) {
--                drawPolyline(sg2d, p.xpoints, p.ypoints, p.npoints);
--            }
--        } else if (sg2d.strokeState < sg2d.STROKE_CUSTOM) {
--            ShapeSpanIterator si = LoopPipe.getStrokeSpans(sg2d, s);
--            try {
--                synchronized (D3DContext.LOCK) {
--                    int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
--                        SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
--                    // in this case the spans will be pre-transformed, so we
--                    // pass null transform to getContext
--                    long pCtx = D3DContext.getContext(null, sg2d.surfaceData,
--                                                      sg2d.getCompClip(),
--                                                      sg2d.getComposite(),
--                                                      null /*transform*/,
--                                                      sg2d.eargb/*pixel*/,
--                                                      ctxflags);
--                    devFillSpans(sg2d.surfaceData.getNativeOps(), pCtx, si,
--                                 si.getNativeIterator(), 0, 0);
-+                public void drawParallelogram(SunGraphics2D sg2d,
-+                                              double x, double y,
-+                                              double dx1, double dy1,
-+                                              double dx2, double dy2,
-+                                              double lw1, double lw2)
-+                {
-+                    GraphicsPrimitive.tracePrimitive("D3DDrawAAParallelogram");
-+                    realpipe.drawParallelogram(sg2d,
-+                                               x, y, dx1, dy1, dx2, dy2,
-+                                               lw1, lw2);
-                 }
--            } finally {
--                si.dispose();
--            }
--        } else {
--            fill(sg2d, sg2d.stroke.createStrokedShape(s));
--        }
--    }
--
--    @Override
--    public void fill(SunGraphics2D sg2d, Shape s) {
--        AffineTransform at;
--        int transx, transy;
--
--        if ( sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE) {
--            // Transform (translation) will be done by devFillSpans
--            at = null;
--            transx = sg2d.transX;
--            transy = sg2d.transY;
--        } else {
--            // Transform will be done by the PathIterator
--            at = sg2d.transform;
--            transx = transy = 0;
-+            };
-         }
- 
--        ShapeSpanIterator ssi = LoopPipe.getFillSSI(sg2d);
--        try {
--            // Subtract transx/y from the SSI clip to match the
--            // (potentially untranslated) geometry fed to it
--            Region clip = sg2d.getCompClip();
--            ssi.setOutputAreaXYXY(clip.getLoX() - transx,
--                                  clip.getLoY() - transy,
--                                  clip.getHiX() - transx,
--                                  clip.getHiY() - transy);
--            ssi.appendPath(s.getPathIterator(at));
--            synchronized (D3DContext.LOCK) {
--                int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
--                    SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
--                long pCtx = D3DContext.getContext(null, sg2d.surfaceData,
--                                                  sg2d.getCompClip(),
--                                                  sg2d.getComposite(),
--                                                  null/*transform*/,
--                                                  sg2d.eargb/*pixel*/,
--                                                  ctxflags);
--                devFillSpans(sg2d.surfaceData.getNativeOps(), pCtx, ssi,
--                             ssi.getNativeIterator(),
--                             transx, transy);
--            }
--        } finally {
--            ssi.dispose();
-+        protected void validateContext(SunGraphics2D sg2d) {
-+            d3dr.validateContext(sg2d);
-         }
--    }
--
--    D3DRenderer traceWrapD3D() {
--        return new Tracer();
--    }
--
--    private class Tracer extends D3DRenderer {
--        @Override
-         public void drawLine(SunGraphics2D sg2d,
-                              int x1, int y1, int x2, int y2)
-         {
-             GraphicsPrimitive.tracePrimitive("D3DDrawLine");
--            super.drawLine(sg2d, x1, y1, x2, y2);
-+            d3dr.drawLine(sg2d, x1, y1, x2, y2);
-         }
--        @Override
-         public void drawRect(SunGraphics2D sg2d, int x, int y, int w, int h) {
-             GraphicsPrimitive.tracePrimitive("D3DDrawRect");
--            super.drawRect(sg2d, x, y, w, h);
--        }
--        @Override
--        public void drawPolyline(SunGraphics2D sg2d,
--                                 int[] xPoints, int[] yPoints,
--                                 int nPoints)
--        {
--            GraphicsPrimitive.tracePrimitive("D3DDrawPolyline");
--            super.drawPolyline(sg2d, xPoints, yPoints, nPoints);
-+            d3dr.drawRect(sg2d, x, y, w, h);
-         }
--        @Override
--        public void drawPolygon(SunGraphics2D sg2d,
-+        protected void drawPoly(SunGraphics2D sg2d,
-                                 int[] xPoints, int[] yPoints,
--                                int nPoints)
-+                                int nPoints, boolean isClosed)
-         {
--            GraphicsPrimitive.tracePrimitive("D3DDrawPolygon");
--            super.drawPolygon(sg2d, xPoints, yPoints, nPoints);
-+            GraphicsPrimitive.tracePrimitive("D3DDrawPoly");
-+            d3dr.drawPoly(sg2d, xPoints, yPoints, nPoints, isClosed);
-         }
--        @Override
-         public void fillRect(SunGraphics2D sg2d, int x, int y, int w, int h) {
-             GraphicsPrimitive.tracePrimitive("D3DFillRect");
--            super.fillRect(sg2d, x, y, w, h);
-+            d3dr.fillRect(sg2d, x, y, w, h);
-         }
--        @Override
--        void devFillSpans(long pData, long pCtx, SpanIterator si, long iterator,
--                          int transx, int transy)
-+        protected void drawPath(SunGraphics2D sg2d,
-+                                Path2D.Float p2df, int transx, int transy)
-+        {
-+            GraphicsPrimitive.tracePrimitive("D3DDrawPath");
-+            d3dr.drawPath(sg2d, p2df, transx, transy);
-+        }
-+        protected void fillPath(SunGraphics2D sg2d,
-+                                Path2D.Float p2df, int transx, int transy)
-+        {
-+            GraphicsPrimitive.tracePrimitive("D3DFillPath");
-+            d3dr.fillPath(sg2d, p2df, transx, transy);
-+        }
-+        protected void fillSpans(SunGraphics2D sg2d, SpanIterator si,
-+                                 int transx, int transy)
-         {
-             GraphicsPrimitive.tracePrimitive("D3DFillSpans");
--            super.devFillSpans(pData, pCtx, si, iterator, transx, transy);
-+            d3dr.fillSpans(sg2d, si, transx, transy);
-         }
--        @Override
--        public void devCopyArea(SurfaceData sData,
--                                int srcx, int srcy,
--                                int dx, int dy,
--                                int w, int h)
-+        public void fillParallelogram(SunGraphics2D sg2d,
-+                                      double x, double y,
-+                                      double dx1, double dy1,
-+                                      double dx2, double dy2)
-         {
--            GraphicsPrimitive.tracePrimitive("DXCopyArea");
--            super.devCopyArea(sData, srcx, srcy, dx, dy, w, h);
-+            GraphicsPrimitive.tracePrimitive("D3DFillParallelogram");
-+            d3dr.fillParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2);
-+        }
-+        public void drawParallelogram(SunGraphics2D sg2d,
-+                                      double x, double y,
-+                                      double dx1, double dy1,
-+                                      double dx2, double dy2,
-+                                      double lw1, double lw2)
-+        {
-+            GraphicsPrimitive.tracePrimitive("D3DDrawParallelogram");
-+            d3dr.drawParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2, lw1, lw2);
-+        }
-+        public void copyArea(SunGraphics2D sg2d,
-+                             int x, int y, int w, int h, int dx, int dy)
-+        {
-+            GraphicsPrimitive.tracePrimitive("D3DCopyArea");
-+            d3dr.copyArea(sg2d, x, y, w, h, dx, dy);
-         }
--
-     }
- }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderQueue.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,159 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -12223,9 +12045,491 @@
 +        refSet.clear();
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DRenderer.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DRenderer.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2005, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2008, 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
+@@ -25,341 +25,169 @@
+ 
+ package sun.java2d.d3d;
+ 
+-import java.awt.Composite;
+-import java.awt.Polygon;
+-import java.awt.Shape;
+-import java.awt.geom.AffineTransform;
+-import java.awt.geom.Arc2D;
+-import java.awt.geom.Ellipse2D;
+-import java.awt.geom.IllegalPathStateException;
+-import java.awt.geom.PathIterator;
+-import java.awt.geom.RoundRectangle2D;
++import java.awt.Transparency;
++import java.awt.geom.Path2D;
+ import sun.java2d.SunGraphics2D;
+-import sun.java2d.pipe.Region;
+-import sun.java2d.SurfaceData;
+ import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.pipe.LoopPipe;
+-import sun.java2d.pipe.ShapeSpanIterator;
++import sun.java2d.pipe.BufferedPaints;
++import sun.java2d.pipe.BufferedRenderPipe;
++import sun.java2d.pipe.RenderQueue;
+ import sun.java2d.pipe.SpanIterator;
++import sun.java2d.pipe.ParallelogramPipe;
++import static sun.java2d.pipe.BufferedOpCodes.*;
+ 
+-import static sun.java2d.d3d.D3DContext.*;
+-import sun.java2d.windows.DDRenderer;
++class D3DRenderer extends BufferedRenderPipe {
+ 
+-public class D3DRenderer extends DDRenderer {
+-
+-    native boolean doDrawLineD3D(long pData, long pCtx,
+-                                 int x1, int y1, int x2, int y2);
+-    native boolean doDrawRectD3D(long pData, long pCtx,
+-                                 int x, int y, int w, int h);
+-    native boolean doFillRectD3D(long pData, long pCtx, int x, int y,
+-                                 int width, int height);
+-    native void doDrawPoly(long pData, long pCtx, int transx, int transy,
+-                           int[] xpoints, int[] ypoints,
+-                           int npoints, boolean isclosed);
+-    native void devFillSpans(long pData, long pCtx, SpanIterator si,
+-                             long iterator, int transx, int transy);
+-
+-
+-    private long getContext(SunGraphics2D sg2d) {
+-        AffineTransform at =
+-            sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE ?
+-            null : sg2d.transform;
+-        int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
+-            SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
+-        return D3DContext.getContext(null, sg2d.surfaceData,
+-                                     sg2d.getCompClip(),
+-                                     sg2d.getComposite(),
+-                                     at,
+-                                     sg2d.eargb,
+-                                     ctxflags);
++    D3DRenderer(RenderQueue rq) {
++        super(rq);
+     }
+ 
+     @Override
+-    public void drawLine(SunGraphics2D sg2d,
+-                         int x1, int y1, int x2, int y2)
++    protected void validateContext(SunGraphics2D sg2d) {
++        int ctxflags =
++            sg2d.paint.getTransparency() == Transparency.OPAQUE ?
++                D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS;
++        D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
++        D3DContext.validateContext(dstData, dstData,
++                                   sg2d.getCompClip(), sg2d.composite,
++                                   null, sg2d.paint, sg2d, ctxflags);
++    }
++
++    @Override
++    protected void validateContextAA(SunGraphics2D sg2d) {
++        int ctxflags = D3DContext.NO_CONTEXT_FLAGS;
++        D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
++        D3DContext.validateContext(dstData, dstData,
++                                   sg2d.getCompClip(), sg2d.composite,
++                                   null, sg2d.paint, sg2d, ctxflags);
++    }
++
++    void copyArea(SunGraphics2D sg2d,
++                  int x, int y, int w, int h, int dx, int dy)
+     {
+-        synchronized (D3DContext.LOCK) {
+-            doDrawLineD3D(sg2d.surfaceData.getNativeOps(),
+-                          getContext(sg2d),
+-                          x1 + sg2d.transX, y1 + sg2d.transY,
+-                          x2 + sg2d.transX, y2 + sg2d.transY);
++        rq.lock();
++        try {
++            int ctxflags =
++                sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ?
++                    D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS;
++            D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData;
++            D3DContext.validateContext(dstData, dstData,
++                                       sg2d.getCompClip(), sg2d.composite,
++                                       null, null, null, ctxflags);
++
++            rq.ensureCapacity(28);
++            buf.putInt(COPY_AREA);
++            buf.putInt(x).putInt(y).putInt(w).putInt(h);
++            buf.putInt(dx).putInt(dy);
++        } finally {
++            rq.unlock();
+         }
+     }
+ 
+-    @Override
+-    public void fillRect(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        synchronized (D3DContext.LOCK) {
+-            doFillRectD3D(sg2d.surfaceData.getNativeOps(),
+-                          getContext(sg2d),
+-                          sg2d.transX + x, sg2d.transY + y, width, height);
+-        }
+-    }
++    protected native void drawPoly(int[] xPoints, int[] yPoints,
++                                   int nPoints, boolean isClosed,
++                                   int transX, int transY);
+ 
+-    @Override
+-    public void drawRect(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        synchronized (D3DContext.LOCK) {
+-            doDrawRectD3D(sg2d.surfaceData.getNativeOps(),
+-                          getContext(sg2d),
+-                          x + sg2d.transX, sg2d.transY + y, width, height);
+-        }
+-    }
+-
+-    @Override
+-    public void drawPolyline(SunGraphics2D sg2d,
+-                             int xpoints[], int ypoints[], int npoints)
+-    {
+-        synchronized (D3DContext.LOCK) {
+-            doDrawPoly(sg2d.surfaceData.getNativeOps(),
+-                       getContext(sg2d),
+-                       sg2d.transX, sg2d.transY,
+-                       xpoints, ypoints, npoints, false);
+-        }
+-    }
+-
+-    @Override
+-    public void drawPolygon(SunGraphics2D sg2d,
+-                            int xpoints[], int ypoints[], int npoints)
+-    {
+-        synchronized (D3DContext.LOCK) {
+-            doDrawPoly(sg2d.surfaceData.getNativeOps(),
+-                       getContext(sg2d),
+-                       sg2d.transX, sg2d.transY,
+-                       xpoints, ypoints, npoints, true);
+-        }
+-    }
+-
+-    @Override
+-    public void drawRoundRect(SunGraphics2D sg2d,
+-                              int x, int y, int width, int height,
+-                              int arcWidth, int arcHeight)
+-    {
+-        draw(sg2d, new RoundRectangle2D.Float(x, y, width, height,
+-                                              arcWidth, arcHeight));
+-    }
+-
+-    @Override
+-    public void drawOval(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        draw(sg2d, new Ellipse2D.Float(x, y, width, height));
+-    }
+-
+-    @Override
+-    public void drawArc(SunGraphics2D sg2d,
+-                        int x, int y, int width, int height,
+-                        int startAngle, int arcAngle)
+-    {
+-        draw(sg2d, new Arc2D.Float(x, y, width, height,
+-                                   startAngle, arcAngle,
+-                                   Arc2D.OPEN));
+-    }
+-
+-    @Override
+-    public void fillRoundRect(SunGraphics2D sg2d,
+-                              int x, int y, int width, int height,
+-                              int arcWidth, int arcHeight)
+-    {
+-        fill(sg2d, new RoundRectangle2D.Float(x, y, width, height,
+-             arcWidth, arcHeight));
+-    }
+-
+-    @Override
+-    public void fillOval(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        fill(sg2d, new Ellipse2D.Float(x, y, width, height));
+-    }
+-
+-    @Override
+-    public void fillArc(SunGraphics2D sg2d,
+-                        int x, int y, int width, int height,
+-                        int startAngle, int arcAngle)
+-    {
+-        fill(sg2d, new Arc2D.Float(x, y, width, height,
+-             startAngle, arcAngle, Arc2D.PIE));
+-    }
+-
+-    @Override
+-    public void fillPolygon(SunGraphics2D sg2d,
+-                            int xpoints[], int ypoints[],
+-                            int npoints)
+-    {
+-        fill(sg2d, new Polygon(xpoints, ypoints, npoints));
+-    }
+-
+-    @Override
+-    public void draw(SunGraphics2D sg2d, Shape s)
+-    {
+-        if (sg2d.strokeState == sg2d.STROKE_THIN) {
+-            Polygon p;
+-            if (s instanceof Polygon) {
+-                p = (Polygon) s;
+-                drawPolygon(sg2d, p.xpoints, p.ypoints, p.npoints);
+-                return;
+-            }
+-            // we're letting d3d handle the transforms
+-            PathIterator pi = s.getPathIterator(null, 0.5f);
+-            p = new Polygon();
+-            float coords[] = new float[2];
+-            while (!pi.isDone()) {
+-                switch (pi.currentSegment(coords)) {
+-                    case PathIterator.SEG_MOVETO:
+-                        if (p.npoints > 1) {
+-                            drawPolyline(sg2d, p.xpoints, p.ypoints, p.npoints);
+-                        }
+-                        p.reset();
+-                        p.addPoint((int) Math.floor(coords[0]),
+-                            (int) Math.floor(coords[1]));
+-                        break;
+-                    case PathIterator.SEG_LINETO:
+-                        if (p.npoints == 0) {
+-                            throw new IllegalPathStateException
+-                                ("missing initial moveto in path definition");
+-                        }
+-                        p.addPoint((int) Math.floor(coords[0]),
+-                            (int) Math.floor(coords[1]));
+-                        break;
+-                    case PathIterator.SEG_CLOSE:
+-                        if (p.npoints > 0) {
+-                            p.addPoint(p.xpoints[0], p.ypoints[0]);
+-                        }
+-                        break;
+-                    default:
+-                        throw new
+-                            IllegalPathStateException("path not flattened");
+-                }
+-                pi.next();
+-            }
+-            if (p.npoints > 1) {
+-                drawPolyline(sg2d, p.xpoints, p.ypoints, p.npoints);
+-            }
+-        } else if (sg2d.strokeState < sg2d.STROKE_CUSTOM) {
+-            ShapeSpanIterator si = LoopPipe.getStrokeSpans(sg2d, s);
+-            try {
+-                synchronized (D3DContext.LOCK) {
+-                    int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
+-                        SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
+-                    // in this case the spans will be pre-transformed, so we
+-                    // pass null transform to getContext
+-                    long pCtx = D3DContext.getContext(null, sg2d.surfaceData,
+-                                                      sg2d.getCompClip(),
+-                                                      sg2d.getComposite(),
+-                                                      null /*transform*/,
+-                                                      sg2d.eargb/*pixel*/,
+-                                                      ctxflags);
+-                    devFillSpans(sg2d.surfaceData.getNativeOps(), pCtx, si,
+-                                 si.getNativeIterator(), 0, 0);
+-                }
+-            } finally {
+-                si.dispose();
+-            }
+-        } else {
+-            fill(sg2d, sg2d.stroke.createStrokedShape(s));
+-        }
+-    }
+-
+-    @Override
+-    public void fill(SunGraphics2D sg2d, Shape s) {
+-        AffineTransform at;
+-        int transx, transy;
+-
+-        if ( sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE) {
+-            // Transform (translation) will be done by devFillSpans
+-            at = null;
+-            transx = sg2d.transX;
+-            transy = sg2d.transY;
+-        } else {
+-            // Transform will be done by the PathIterator
+-            at = sg2d.transform;
+-            transx = transy = 0;
+-        }
+-
+-        ShapeSpanIterator ssi = LoopPipe.getFillSSI(sg2d);
+-        try {
+-            // Subtract transx/y from the SSI clip to match the
+-            // (potentially untranslated) geometry fed to it
+-            Region clip = sg2d.getCompClip();
+-            ssi.setOutputAreaXYXY(clip.getLoX() - transx,
+-                                  clip.getLoY() - transy,
+-                                  clip.getHiX() - transx,
+-                                  clip.getHiY() - transy);
+-            ssi.appendPath(s.getPathIterator(at));
+-            synchronized (D3DContext.LOCK) {
+-                int ctxflags = (sg2d.eargb >>> 24) == 0xff ?
+-                    SRC_IS_OPAQUE : NO_CONTEXT_FLAGS;
+-                long pCtx = D3DContext.getContext(null, sg2d.surfaceData,
+-                                                  sg2d.getCompClip(),
+-                                                  sg2d.getComposite(),
+-                                                  null/*transform*/,
+-                                                  sg2d.eargb/*pixel*/,
+-                                                  ctxflags);
+-                devFillSpans(sg2d.surfaceData.getNativeOps(), pCtx, ssi,
+-                             ssi.getNativeIterator(),
+-                             transx, transy);
+-            }
+-        } finally {
+-            ssi.dispose();
+-        }
+-    }
+-
+-    D3DRenderer traceWrapD3D() {
+-        return new Tracer();
++    D3DRenderer traceWrap() {
++        return new Tracer(this);
+     }
+ 
+     private class Tracer extends D3DRenderer {
+-        @Override
++        private D3DRenderer d3dr;
++        Tracer(D3DRenderer d3dr) {
++            super(d3dr.rq);
++            this.d3dr = d3dr;
++        }
++        public ParallelogramPipe getAAParallelogramPipe() {
++            final ParallelogramPipe realpipe = d3dr.getAAParallelogramPipe();
++            return new ParallelogramPipe() {
++                public void fillParallelogram(SunGraphics2D sg2d,
++                                              double x, double y,
++                                              double dx1, double dy1,
++                                              double dx2, double dy2)
++                {
++                    GraphicsPrimitive.tracePrimitive("D3DFillAAParallelogram");
++                    realpipe.fillParallelogram(sg2d,
++                                               x, y, dx1, dy1, dx2, dy2);
++                }
++                public void drawParallelogram(SunGraphics2D sg2d,
++                                              double x, double y,
++                                              double dx1, double dy1,
++                                              double dx2, double dy2,
++                                              double lw1, double lw2)
++                {
++                    GraphicsPrimitive.tracePrimitive("D3DDrawAAParallelogram");
++                    realpipe.drawParallelogram(sg2d,
++                                               x, y, dx1, dy1, dx2, dy2,
++                                               lw1, lw2);
++                }
++            };
++        }
++
++        protected void validateContext(SunGraphics2D sg2d) {
++            d3dr.validateContext(sg2d);
++        }
+         public void drawLine(SunGraphics2D sg2d,
+                              int x1, int y1, int x2, int y2)
+         {
+             GraphicsPrimitive.tracePrimitive("D3DDrawLine");
+-            super.drawLine(sg2d, x1, y1, x2, y2);
++            d3dr.drawLine(sg2d, x1, y1, x2, y2);
+         }
+-        @Override
+         public void drawRect(SunGraphics2D sg2d, int x, int y, int w, int h) {
+             GraphicsPrimitive.tracePrimitive("D3DDrawRect");
+-            super.drawRect(sg2d, x, y, w, h);
++            d3dr.drawRect(sg2d, x, y, w, h);
+         }
+-        @Override
+-        public void drawPolyline(SunGraphics2D sg2d,
+-                                 int[] xPoints, int[] yPoints,
+-                                 int nPoints)
++        protected void drawPoly(SunGraphics2D sg2d,
++                                int[] xPoints, int[] yPoints,
++                                int nPoints, boolean isClosed)
+         {
+-            GraphicsPrimitive.tracePrimitive("D3DDrawPolyline");
+-            super.drawPolyline(sg2d, xPoints, yPoints, nPoints);
++            GraphicsPrimitive.tracePrimitive("D3DDrawPoly");
++            d3dr.drawPoly(sg2d, xPoints, yPoints, nPoints, isClosed);
+         }
+-        @Override
+-        public void drawPolygon(SunGraphics2D sg2d,
+-                                int[] xPoints, int[] yPoints,
+-                                int nPoints)
+-        {
+-            GraphicsPrimitive.tracePrimitive("D3DDrawPolygon");
+-            super.drawPolygon(sg2d, xPoints, yPoints, nPoints);
+-        }
+-        @Override
+         public void fillRect(SunGraphics2D sg2d, int x, int y, int w, int h) {
+             GraphicsPrimitive.tracePrimitive("D3DFillRect");
+-            super.fillRect(sg2d, x, y, w, h);
++            d3dr.fillRect(sg2d, x, y, w, h);
+         }
+-        @Override
+-        void devFillSpans(long pData, long pCtx, SpanIterator si, long iterator,
+-                          int transx, int transy)
++        protected void drawPath(SunGraphics2D sg2d,
++                                Path2D.Float p2df, int transx, int transy)
++        {
++            GraphicsPrimitive.tracePrimitive("D3DDrawPath");
++            d3dr.drawPath(sg2d, p2df, transx, transy);
++        }
++        protected void fillPath(SunGraphics2D sg2d,
++                                Path2D.Float p2df, int transx, int transy)
++        {
++            GraphicsPrimitive.tracePrimitive("D3DFillPath");
++            d3dr.fillPath(sg2d, p2df, transx, transy);
++        }
++        protected void fillSpans(SunGraphics2D sg2d, SpanIterator si,
++                                 int transx, int transy)
+         {
+             GraphicsPrimitive.tracePrimitive("D3DFillSpans");
+-            super.devFillSpans(pData, pCtx, si, iterator, transx, transy);
++            d3dr.fillSpans(sg2d, si, transx, transy);
+         }
+-        @Override
+-        public void devCopyArea(SurfaceData sData,
+-                                int srcx, int srcy,
+-                                int dx, int dy,
+-                                int w, int h)
++        public void fillParallelogram(SunGraphics2D sg2d,
++                                      double x, double y,
++                                      double dx1, double dy1,
++                                      double dx2, double dy2)
+         {
+-            GraphicsPrimitive.tracePrimitive("DXCopyArea");
+-            super.devCopyArea(sData, srcx, srcy, dx, dy, w, h);
++            GraphicsPrimitive.tracePrimitive("D3DFillParallelogram");
++            d3dr.fillParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2);
+         }
+-
++        public void drawParallelogram(SunGraphics2D sg2d,
++                                      double x, double y,
++                                      double dx1, double dy1,
++                                      double dx2, double dy2,
++                                      double lw1, double lw2)
++        {
++            GraphicsPrimitive.tracePrimitive("D3DDrawParallelogram");
++            d3dr.drawParallelogram(sg2d, x, y, dx1, dy1, dx2, dy2, lw1, lw2);
++        }
++        public void copyArea(SunGraphics2D sg2d,
++                             int x, int y, int w, int h, int dx, int dy)
++        {
++            GraphicsPrimitive.tracePrimitive("D3DCopyArea");
++            d3dr.copyArea(sg2d, x, y, w, h, dx, dy);
++        }
+     }
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,552 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -12779,9 +13083,9 @@
 +        return false;
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -12819,22 +13123,14 @@
  import sun.java2d.InvalidPipeException;
  import sun.java2d.SunGraphics2D;
  import sun.java2d.SurfaceData;
--import sun.java2d.SurfaceDataProxy;
- import sun.java2d.loops.GraphicsPrimitive;
++import sun.java2d.loops.GraphicsPrimitive;
 +import sun.java2d.loops.MaskFill;
- import sun.java2d.loops.SurfaceType;
--import sun.java2d.pipe.PixelToShapeConverter;
++import sun.java2d.loops.SurfaceType;
 +import sun.java2d.loops.CompositeType;
 +import sun.java2d.pipe.ParallelogramPipe;
 +import sun.java2d.pipe.PixelToParallelogramConverter;
 +import sun.java2d.pipe.RenderBuffer;
- import sun.java2d.pipe.TextPipe;
--import sun.java2d.windows.Win32OffScreenSurfaceData;
--import sun.java2d.windows.Win32SurfaceData;
--import sun.java2d.windows.WinVolatileSurfaceManager;
--import sun.java2d.windows.WindowsFlags;
--
--import static sun.java2d.windows.Win32SurfaceData.*;
++import sun.java2d.pipe.TextPipe;
 +import static sun.java2d.pipe.BufferedOpCodes.*;
 +import static sun.java2d.d3d.D3DContext.D3DContextCaps.*;
 +import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.*;
@@ -12845,10 +13141,79 @@
 +import sun.awt.image.SunVolatileImage;
 +import sun.java2d.ScreenUpdateManager;
 +import sun.java2d.StateTracker;
-+import sun.java2d.SurfaceDataProxy;
+ import sun.java2d.SurfaceDataProxy;
+-import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.pipe.PixelToShapeConverter;
+-import sun.java2d.pipe.TextPipe;
+-import sun.java2d.windows.Win32OffScreenSurfaceData;
+-import sun.java2d.windows.Win32SurfaceData;
+-import sun.java2d.windows.WinVolatileSurfaceManager;
+-import sun.java2d.windows.WindowsFlags;
 +import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
  
+-import static sun.java2d.windows.Win32SurfaceData.*;
+-
 -public class D3DSurfaceData extends Win32OffScreenSurfaceData {
+-
+-    // properties of a surface
+-    /**
+-     * This property is used for a back-buffer surface
+-     */
+-    public static final int D3D_ATTACHED_SURFACE = (1 << 15);
+-    /**
+-     * A surface with this property can be used as a Direct3D rendering
+-     * destination.
+-     */
+-    public static final int D3D_RENDER_TARGET    = (1 << 16);
+-
+-    public static final int
+-        D3D_INVALID_SURFACE    = 0;
+-    /**
+-     * Surface is a Direct3D plain surface (not a texture).
+-     * Plain surface can be used as render target.
+-     * VolatileImages typically use plain surfaces as their hardware
+-     * accelerated surfaces.
+-     */
+-    public static final int
+-        D3D_PLAIN_SURFACE      = (1 << 0) | D3D_RENDER_TARGET;
+-    /**
+-     * Direct3D texture. Mostly used for cached accelerated surfaces.
+-     * Surfaces of this type can be copied from using hardware acceleration
+-     * by using texture mapping.
+-     */
+-    public static final int
+-        D3D_TEXTURE_SURFACE    = (1 << 1);
+-    /**
+-     * Direct3D Backbuffer surface - an attached surface. Used for
+-     * multibuffered BufferStrategies.
+-     */
+-    public static final int
+-        D3D_BACKBUFFER_SURFACE = D3D_PLAIN_SURFACE | D3D_ATTACHED_SURFACE;
+-    /**
+-     * Render-to-texture. A texture which can also be a render target.
+-     * Combines the benefits of textures (fast copies-from) and
+-     * backbuffers or plain surfaces (hw-accelerated rendering to the surface)
+-     */
+-    public static final int
+-        D3D_RTT_SURFACE        = D3D_TEXTURE_SURFACE | D3D_RENDER_TARGET;
+-
+-    // supported texture pixel formats
+-    public static final int PF_INVALID         =  0;
+-    public static final int PF_INT_ARGB        =  1;
+-    public static final int PF_INT_RGB         =  2;
+-    public static final int PF_INT_RGBX        =  3;
+-    public static final int PF_INT_BGR         =  4;
+-    public static final int PF_USHORT_565_RGB  =  5;
+-    public static final int PF_USHORT_555_RGB  =  6;
+-    public static final int PF_USHORT_555_RGBX =  7;
+-    public static final int PF_INT_ARGB_PRE    =  8;
+-    public static final int PF_USHORT_4444_ARGB=  9;
+-
+-    public static final String
+-        DESC_INT_ARGB_D3D         = "Integer ARGB D3D with translucency";
+-    public static final String
+-        DESC_USHORT_4444_ARGB_D3D = "UShort 4444 ARGB D3D with translucency";
 +/**
 + * This class describes a D3D "surface", that is, a region of pixels
 + * managed via D3D.  An D3DSurfaceData can be tagged with one of three
@@ -12894,18 +13259,16 @@
 + */
 +public class D3DSurfaceData extends SurfaceData implements AccelSurface {
  
--    // properties of a surface
      /**
--     * This property is used for a back-buffer surface
+-     * Surface type for texture destination.  We cannot render textures to
+-     * the screen because Direct3D is not clipped by the window's clip list,
+-     * so we only enable the texture blit loops for copies to offscreen
+-     * accelerated surfaces.
 +     * To be used with getNativeResource() only.
 +     * @see #getNativeResource()
       */
--    public static final int D3D_ATTACHED_SURFACE = (1 << 15);
--    /**
--     * A surface with this property can be used as a Direct3D rendering
--     * destination.
--     */
--    public static final int D3D_RENDER_TARGET    = (1 << 16);
+-    public static final String
+-        DESC_DEST_D3D           = "D3D render target";
 +    public static final int D3D_DEVICE_RESOURCE= 100;
 +    /*
 +     * Surface types.
@@ -12921,7 +13284,11 @@
 +    public static final int ST_USHORT_555_RGB  = 6;
 +    public static final int ST_BYTE_INDEXED    = 7;
 +    public static final int ST_BYTE_INDEXED_BM = 8;
-+
+ 
+-    public static final SurfaceType D3DSurface =
+-        SurfaceType.Any.deriveSubType("Direct3D Surface");
+-    public static final SurfaceType D3DTexture =
+-        D3DSurface.deriveSubType("Direct3D Texture");
 +    /** Equals to D3DSWAPEFFECT_DISCARD */
 +    public static final int SWAP_DISCARD       = 1;
 +    /** Equals to D3DSWAPEFFECT_FLIP    */
@@ -12935,7 +13302,15 @@
 +    private static final String DESC_D3D_SURFACE_RTT =
 +        "D3D Surface (render-to-texture)";
 +    private static final String DESC_D3D_TEXTURE = "D3D Texture";
-+
+ 
+-    /**
+-     * D3D destination surface types (derive from offscreen dd surfaces).
+-     * Note that all of these surfaces have the same surface description;
+-     * we do not care about the depth of the surface since texture ops
+-     * support multiple depths.
+-     */
+-    public static final SurfaceType IntRgbD3D =
+-        IntRgbDD.deriveSubType(DESC_DEST_D3D);
 +    // REMIND: regarding ArgbPre??
 +    static final SurfaceType D3DSurface =
 +        SurfaceType.Any.deriveSubType(DESC_D3D_SURFACE,
@@ -12944,7 +13319,9 @@
 +        D3DSurface.deriveSubType(DESC_D3D_SURFACE_RTT);
 +    static final SurfaceType D3DTexture =
 +        SurfaceType.Any.deriveSubType(DESC_D3D_TEXTURE);
-+
+ 
+-    public static final SurfaceType IntRgbxD3D =
+-        IntRgbxDD.deriveSubType(DESC_DEST_D3D);
 +    private int type;
 +    private int width, height;
 +    // these fields are set from the native code when the surface is
@@ -12953,19 +13330,72 @@
 +    protected WComponentPeer peer;
 +    private Image offscreenImage;
 +    protected D3DGraphicsDevice graphicsDevice;
-+
+ 
+-    public static final SurfaceType Ushort565RgbD3D =
+-        Ushort565RgbDD.deriveSubType(DESC_DEST_D3D);
 +    private int swapEffect;
 +    private VSyncType syncType;
 +    private int backBuffersNum;
-+
+ 
+-    public static final SurfaceType Ushort555RgbxD3D =
+-        Ushort555RgbxDD.deriveSubType(DESC_DEST_D3D);
 +    private WritableRasterNative wrn;
-+
+ 
+-    public static final SurfaceType Ushort555RgbD3D =
+-        Ushort555RgbDD.deriveSubType(DESC_DEST_D3D);
 +    protected static D3DRenderer d3dRenderPipe;
 +    protected static PixelToParallelogramConverter d3dTxRenderPipe;
 +    protected static ParallelogramPipe d3dAAPgramPipe;
 +    protected static D3DTextRenderer d3dTextPipe;
 +    protected static D3DDrawImage d3dImagePipe;
-+
+ 
+-    // REMIND: Is it possible to have d3d accelerated on this type of surface?
+-    public static final SurfaceType ThreeByteBgrD3D =
+-        ThreeByteBgrDD.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType IntArgbD3D =
+-        SurfaceType.IntArgb.deriveSubType(DESC_INT_ARGB_D3D);
+-
+-    public static final SurfaceType Ushort4444ArgbD3D =
+-        SurfaceType.Ushort4444Argb.deriveSubType(DESC_USHORT_4444_ARGB_D3D);
+-
+-    // Textures we can render to using d3d
+-    public static final SurfaceType IntRgbD3D_RTT =
+-        IntRgbD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType IntRgbxD3D_RTT =
+-        IntRgbxD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType Ushort565RgbD3D_RTT =
+-        Ushort565RgbD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType Ushort555RgbxD3D_RTT =
+-        Ushort555RgbxD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType Ushort555RgbD3D_RTT =
+-        Ushort555RgbD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType Ushort4444ArgbD3D_RTT =
+-        Ushort4444ArgbD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType IntArgbD3D_RTT =
+-        IntArgbD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    public static final SurfaceType ThreeByteBgrD3D_RTT =
+-        ThreeByteBgrD3D.deriveSubType(DESC_DEST_D3D);
+-
+-    // the type of this surface - texture, plain, back-buffer
+-    protected int type;
+-    protected int pixelFormat;
+-
+-    private D3DContext d3dContext;
+-
+-    protected static D3DRenderer d3dPipe;
+-    protected static PixelToShapeConverter d3dTxPipe;
+-    protected static D3DTextRenderer d3dTextPipe;
+-    protected static D3DDrawImage d3dDrawImagePipe;
+-
+-    private native void initOps(int depth, int transparency);
 +    private native boolean initTexture(long pData, boolean isRTT,
 +                                       boolean isOpaque);
 +    private native boolean initFlipBackbuffer(long pData, long pPeerData,
@@ -12973,8 +13403,11 @@
 +                                              int swapEffect, int syncType);
 +    private native boolean initRTSurface(long pData, boolean isOpaque);
 +    private native void initOps(int screen, int width, int height);
-+
-+    static {
+ 
+     static {
+-        if (WindowsFlags.isD3DEnabled()) {
+-            D3DBlitLoops.register();
+-            D3DMaskFill.register();
 +        D3DRenderQueue rq = D3DRenderQueue.getInstance();
 +        d3dImagePipe = new D3DDrawImage();
 +        d3dTextPipe = new D3DTextRenderer(rq);
@@ -12984,17 +13417,24 @@
 +            d3dRenderPipe = d3dRenderPipe.traceWrap();
 +            //The wrapped d3dRenderPipe will wrap the AA pipe as well...
 +            //d3dAAPgramPipe = d3dRenderPipe.traceWrap();
-+        }
+         }
 +        d3dAAPgramPipe = d3dRenderPipe.getAAParallelogramPipe();
 +        d3dTxRenderPipe =
 +            new PixelToParallelogramConverter(d3dRenderPipe, d3dRenderPipe,
 +                                              1.0, 0.25, true);
-+
+ 
+-        d3dPipe = new D3DRenderer();
+-        d3dTxPipe = new PixelToShapeConverter(d3dPipe);
+-        d3dTextPipe = new D3DTextRenderer();
+-        d3dDrawImagePipe = new D3DDrawImage();
 +        D3DBlitLoops.register();
 +        D3DMaskFill.register();
 +        D3DMaskBlit.register();
 +    }
-+
+ 
+-        if (GraphicsPrimitive.tracingEnabled()) {
+-            d3dPipe = d3dPipe.traceWrapD3D();
+-            d3dTextPipe = d3dTextPipe.traceWrap();
 +    protected D3DSurfaceData(WComponentPeer peer, D3DGraphicsConfig gc,
 +                             int width, int height, Image image,
 +                             ColorModel cm, int numBackBuffers,
@@ -13021,29 +13461,40 @@
 +            setSurfaceLost(true);
 +        } else {
 +            initSurface();
-+        }
+         }
 +        setBlitProxyKey(gc.getProxyKey());
-+    }
-+
-+    @Override
-+    public SurfaceDataProxy makeProxyFor(SurfaceData srcData) {
+     }
+ 
+     @Override
+     public SurfaceDataProxy makeProxyFor(SurfaceData srcData) {
+-        //D3D may be eliminated soon so no Proxy was created for it...
+-        //return D3DSurfaceDataProxy.createProxy(srcData, graphicsConfig);
+-        return SurfaceDataProxy.UNCACHED;
 +        return D3DSurfaceDataProxy.
 +            createProxy(srcData,
 +                        (D3DGraphicsConfig)graphicsDevice.getDefaultConfiguration());
-+    }
- 
--    public static final int
--        D3D_INVALID_SURFACE    = 0;
+     }
+ 
      /**
--     * Surface is a Direct3D plain surface (not a texture).
--     * Plain surface can be used as render target.
--     * VolatileImages typically use plain surfaces as their hardware
--     * accelerated surfaces.
+-     * Non-public constructor.  Use createData() to create an object.
+-     *
+-     * This constructor is used to house the common construction
+-     * code shared between the creation of D3DSurfaceData objects
+-     * and subclasses of D3DSurfaceData (such as D3DBackBufferSD).
+-     *
+-     * It calls the common constructor in the parent, and then
+-     * initializes other shared D3D data.
 +     * Creates a SurfaceData object representing the back buffer of a
 +     * double-buffered on-screen Window.
       */
--    public static final int
--        D3D_PLAIN_SURFACE      = (1 << 0) | D3D_RENDER_TARGET;
+-    protected D3DSurfaceData(int width, int height,
+-                             int d3dSurfaceType,
+-                             SurfaceType sType, ColorModel cm,
+-                             GraphicsConfiguration gc,
+-                             Image image, int transparency)
+-    {
+-        super(width, height, sType, cm, gc, image, transparency);
+-        this.type = d3dSurfaceType;
 +    public static D3DSurfaceData createData(WComponentPeer peer, Image image) {
 +        D3DGraphicsConfig gc = getGC(peer);
 +        if (gc == null || !peer.isAccelCapable()) {
@@ -13068,16 +13519,16 @@
 +                                  image, peer.getColorModel(),
 +                                  peer.getBackBuffersNum(),
 +                                  swapEffect, vSyncType, FLIP_BACKBUFFER);
-+    }
-+
+     }
+ 
      /**
--     * Direct3D texture. Mostly used for cached accelerated surfaces.
--     * Surfaces of this type can be copied from using hardware acceleration
--     * by using texture mapping.
+-     * Private constructor.  Use createData() to create an object.
 +     * Returns a WINDOW type of surface - a
 +     * swap chain which serves as an on-screen surface,
 +     * handled by the D3DScreenUpdateManager.
-+     *
+      *
+-     * This constructor calls the common constructor above and then
+-     * performs the specific initialization of the D3DSurface.
 +     * Note that the native surface is not initialized
 +     * when the surface is created to avoid using excessive
 +     * resources, and the surface is placed into the lost
@@ -13087,29 +13538,44 @@
 +     * @param peer peer for which the onscreen surface is to be created
 +     * @return a D3DWindowSurfaceData (flip chain) surface
       */
--    public static final int
--        D3D_TEXTURE_SURFACE    = (1 << 1);
+-    private D3DSurfaceData(int width, int height,
+-                           int d3dSurfaceType,
+-                           SurfaceType sType, ColorModel cm,
+-                           GraphicsConfiguration gc,
+-                           Image image, int transparency,
+-                           int screen)
+-    {
+-        this(width, height, d3dSurfaceType, sType, cm, gc, image, transparency);
+-        pixelFormat = initSurface(width, height, screen,
+-                                  null /*parent SurfaceData*/);
 +    public static D3DSurfaceData createData(WComponentPeer peer) {
 +        D3DGraphicsConfig gc = getGC(peer);
 +        if (gc == null || !peer.isAccelCapable()) {
 +            return null;
 +        }
 +        return new D3DWindowSurfaceData(peer, gc);
-+    }
-+
-     /**
--     * Direct3D Backbuffer surface - an attached surface. Used for
--     * multibuffered BufferStrategies.
+     }
+ 
+-    public static D3DSurfaceData createData(int width, int height,
+-                                            int d3dSurfaceType,
++    /**
 +     * Creates a SurfaceData object representing an off-screen buffer (either
 +     * a plain surface or Texture).
-      */
--    public static final int
--        D3D_BACKBUFFER_SURFACE = D3D_PLAIN_SURFACE | D3D_ATTACHED_SURFACE;
++     */
 +    public static D3DSurfaceData createData(D3DGraphicsConfig gc,
 +                                            int width, int height,
-+                                            ColorModel cm,
+                                             ColorModel cm,
+-                                            GraphicsConfiguration gc,
+-                                            Image image)
 +                                            Image image, int type)
-+    {
+     {
+-        Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
+-        // After a display change ddInstance may not be
+-        // recreated yet, and in this case isD3DEnabledOnDevice will
+-        // return false, until someone attempted to recreate the
+-        // primary.
+-        if (!gd.isD3DEnabledOnDevice()) {
+-            return null;
 +        if (type == RT_TEXTURE) {
 +            boolean isOpaque = cm.getTransparency() == Transparency.OPAQUE;
 +            int cap = isOpaque ? CAPS_RT_TEXTURE_OPAQUE : CAPS_RT_TEXTURE_ALPHA;
@@ -13142,15 +13608,10 @@
 +        return ret;
 +    }
 +
-     /**
--     * Render-to-texture. A texture which can also be a render target.
--     * Combines the benefits of textures (fast copies-from) and
--     * backbuffers or plain surfaces (hw-accelerated rendering to the surface)
++    /**
 +     * Returns the appropriate SurfaceType corresponding to the given D3D
 +     * surface type constant (e.g. TEXTURE -> D3DTexture).
-      */
--    public static final int
--        D3D_RTT_SURFACE        = D3D_TEXTURE_SURFACE | D3D_RENDER_TARGET;
++     */
 +    private static SurfaceType getCustomSurfaceType(int d3dType) {
 +        switch (d3dType) {
 +        case TEXTURE:
@@ -13161,18 +13622,7 @@
 +            return D3DSurface;
 +        }
 +    }
- 
--    // supported texture pixel formats
--    public static final int PF_INVALID         =  0;
--    public static final int PF_INT_ARGB        =  1;
--    public static final int PF_INT_RGB         =  2;
--    public static final int PF_INT_RGBX        =  3;
--    public static final int PF_INT_BGR         =  4;
--    public static final int PF_USHORT_565_RGB  =  5;
--    public static final int PF_USHORT_555_RGB  =  6;
--    public static final int PF_USHORT_555_RGBX =  7;
--    public static final int PF_INT_ARGB_PRE    =  8;
--    public static final int PF_USHORT_4444_ARGB=  9;
++
 +    private boolean initSurfaceNow() {
 +        boolean isOpaque = (getTransparency() == Transparency.OPAQUE);
 +        switch (type) {
@@ -13194,11 +13644,7 @@
 +                return false;
 +        }
 +    }
- 
--    public static final String
--        DESC_INT_ARGB_D3D         = "Integer ARGB D3D with translucency";
--    public static final String
--        DESC_USHORT_4444_ARGB_D3D = "UShort 4444 ARGB D3D with translucency";
++
 +    /**
 +     * Initializes the appropriate D3D offscreen surface based on the value
 +     * of the type parameter.  If the surface creation fails for any reason,
@@ -13229,50 +13675,22 @@
 +            rq.unlock();
 +        }
 +    }
- 
-     /**
--     * Surface type for texture destination.  We cannot render textures to
--     * the screen because Direct3D is not clipped by the window's clip list,
--     * so we only enable the texture blit loops for copies to offscreen
--     * accelerated surfaces.
++
++    /**
 +     * Returns the D3DContext for the GraphicsConfig associated with this
 +     * surface.
-      */
--    public static final String
--        DESC_DEST_D3D           = "D3D render target";
--
--    public static final SurfaceType D3DSurface =
--        SurfaceType.Any.deriveSubType("Direct3D Surface");
--    public static final SurfaceType D3DTexture =
--        D3DSurface.deriveSubType("Direct3D Texture");
++     */
 +    public final D3DContext getContext() {
 +        return graphicsDevice.getContext();
 +    }
- 
-     /**
--     * D3D destination surface types (derive from offscreen dd surfaces).
--     * Note that all of these surfaces have the same surface description;
--     * we do not care about the depth of the surface since texture ops
--     * support multiple depths.
++
++    /**
 +     * Returns one of the surface type constants defined above.
-      */
--    public static final SurfaceType IntRgbD3D =
--        IntRgbDD.deriveSubType(DESC_DEST_D3D);
--
--    public static final SurfaceType IntRgbxD3D =
--        IntRgbxDD.deriveSubType(DESC_DEST_D3D);
--
--    public static final SurfaceType Ushort565RgbD3D =
--        Ushort565RgbDD.deriveSubType(DESC_DEST_D3D);
--
--    public static final SurfaceType Ushort555RgbxD3D =
--        Ushort555RgbxDD.deriveSubType(DESC_DEST_D3D);
++     */
 +    public final int getType() {
 +        return type;
 +    }
- 
--    public static final SurfaceType Ushort555RgbD3D =
--        Ushort555RgbDD.deriveSubType(DESC_DEST_D3D);
++
 +    private static native int  dbGetPixelNative(long pData, int x, int y);
 +    private static native void dbSetPixelNative(long pData, int x, int y,
 +                                                int pixel);
@@ -13282,11 +13700,14 @@
 +                                      int type, int w, int h)
 +        {
 +            super(sData, type, w, h);
-+        }
- 
--    // REMIND: Is it possible to have d3d accelerated on this type of surface?
--    public static final SurfaceType ThreeByteBgrD3D =
--        ThreeByteBgrDD.deriveSubType(DESC_DEST_D3D);
+         }
+ 
+-        return new D3DSurfaceData(width, height,
+-                                  d3dSurfaceType,
+-                                  getSurfaceType(gc, cm, d3dSurfaceType),
+-                                  cm, gc, image,
+-                                  cm.getTransparency(), gd.getScreen());
+-    }
 +        protected int getElem(final int x, final int y,
 +                              final SurfaceData sData)
 +        {
@@ -13306,425 +13727,10 @@
 +            return retPixel;
 +        }
  
--    public static final SurfaceType IntArgbD3D =
--        SurfaceType.IntArgb.deriveSubType(DESC_INT_ARGB_D3D);
-+        protected void setElem(final int x, final int y, final int pixel,
-+                               final SurfaceData sData)
-+        {
-+            D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+            rq.lock();
-+            try {
-+                rq.flushAndInvokeNow(new Runnable() {
-+                    public void run() {
-+                        dbSetPixelNative(sData.getNativeOps(), x, y, pixel);
-+                    }
-+                });
-+                sData.markDirty();
-+            } finally {
-+                rq.unlock();
-+            }
-+        }
-+    }
- 
--    public static final SurfaceType Ushort4444ArgbD3D =
--        SurfaceType.Ushort4444Argb.deriveSubType(DESC_USHORT_4444_ARGB_D3D);
-+    public synchronized Raster getRaster(int x, int y, int w, int h) {
-+        if (wrn == null) {
-+            DirectColorModel dcm = (DirectColorModel)getColorModel();
-+            SampleModel smHw;
-+            int dataType = 0;
-+            int scanStride = width;
- 
--    // Textures we can render to using d3d
--    public static final SurfaceType IntRgbD3D_RTT =
--        IntRgbD3D.deriveSubType(DESC_DEST_D3D);
-+            if (dcm.getPixelSize() == 24 || dcm.getPixelSize() == 32) {
-+                dataType = DataBuffer.TYPE_INT;
-+            } else {
-+                // 15, 16
-+                dataType = DataBuffer.TYPE_USHORT;
-+            }
- 
--    public static final SurfaceType IntRgbxD3D_RTT =
--        IntRgbxD3D.deriveSubType(DESC_DEST_D3D);
-+            // note that we have to use the surface width and height here,
-+            // not the passed w,h
-+            smHw = new SinglePixelPackedSampleModel(dataType, width, height,
-+                                                    scanStride, dcm.getMasks());
-+            DataBuffer dbn = new D3DDataBufferNative(this, dataType,
-+                                                     width, height);
-+            wrn = WritableRasterNative.createNativeRaster(smHw, dbn);
-+        }
- 
--    public static final SurfaceType Ushort565RgbD3D_RTT =
--        Ushort565RgbD3D.deriveSubType(DESC_DEST_D3D);
-+        return wrn;
-+    }
- 
--    public static final SurfaceType Ushort555RgbxD3D_RTT =
--        Ushort555RgbxD3D.deriveSubType(DESC_DEST_D3D);
-+    /**
-+     * For now, we can only render LCD text if:
-+     *   - the pixel shaders are available, and
-+     *   - blending is disabled, and
-+     *   - the source color is opaque
-+     */
-+    public boolean canRenderLCDText(SunGraphics2D sg2d) {
-+        return
-+            graphicsDevice.isCapPresent(CAPS_LCD_SHADER) &&
-+            sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
-+            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR;
-+    }
- 
--    public static final SurfaceType Ushort555RgbD3D_RTT =
--        Ushort555RgbD3D.deriveSubType(DESC_DEST_D3D);
-+    public void validatePipe(SunGraphics2D sg2d) {
-+        TextPipe textpipe;
-+        boolean validated = false;
- 
--    public static final SurfaceType Ushort4444ArgbD3D_RTT =
--        Ushort4444ArgbD3D.deriveSubType(DESC_DEST_D3D);
-+        // REMIND: the D3D pipeline doesn't support XOR!, more
-+        // fixes will be needed below
-+        if (sg2d.compositeState >= sg2d.COMP_XOR) {
-+            super.validatePipe(sg2d);
-+            sg2d.imagepipe = d3dImagePipe;
-+            return;
-+        }
- 
--    public static final SurfaceType IntArgbD3D_RTT =
--        IntArgbD3D.deriveSubType(DESC_DEST_D3D);
-+        // D3DTextRenderer handles both AA and non-AA text, but
-+        // only works with the following modes:
-+        // (Note: For LCD text we only enter this code path if
-+        // canRenderLCDText() has already validated that the mode is
-+        // CompositeType.SrcNoEa (opaque color), which will be subsumed
-+        // by the CompositeType.SrcNoEa (any color) test below.)
-+
-+        if (/* CompositeType.SrcNoEa (any color) */
-+            (sg2d.compositeState <= sg2d.COMP_ISCOPY &&
-+             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR)        ||
-+
-+            /* CompositeType.SrcOver (any color) */
-+            (sg2d.compositeState == sg2d.COMP_ALPHA    &&
-+             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
-+             (((AlphaComposite)sg2d.composite).getRule() ==
-+              AlphaComposite.SRC_OVER))                       ||
-+
-+            /* CompositeType.Xor (any color) */
-+            (sg2d.compositeState == sg2d.COMP_XOR &&
-+             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR))
-+        {
-+            textpipe = d3dTextPipe;
-+        } else {
-+            // do this to initialize textpipe correctly; we will attempt
-+            // to override the non-text pipes below
-+            super.validatePipe(sg2d);
-+            textpipe = sg2d.textpipe;
-+            validated = true;
-+        }
- 
--    public static final SurfaceType ThreeByteBgrD3D_RTT =
--        ThreeByteBgrD3D.deriveSubType(DESC_DEST_D3D);
-+        PixelToParallelogramConverter txPipe = null;
-+        D3DRenderer nonTxPipe = null;
- 
--    // the type of this surface - texture, plain, back-buffer
--    protected int type;
--    protected int pixelFormat;
-+        if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON) {
-+            if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) {
-+                if (sg2d.compositeState <= sg2d.COMP_XOR) {
-+                    txPipe = d3dTxRenderPipe;
-+                    nonTxPipe = d3dRenderPipe;
-+                }
-+            } else if (sg2d.compositeState <= sg2d.COMP_ALPHA) {
-+                if (D3DPaints.isValid(sg2d)) {
-+                    txPipe = d3dTxRenderPipe;
-+                    nonTxPipe = d3dRenderPipe;
-+                }
-+                // custom paints handled by super.validatePipe() below
-+            }
-+        } else {
-+            if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) {
-+                if (graphicsDevice.isCapPresent(CAPS_AA_SHADER) &&
-+                    (sg2d.imageComp == CompositeType.SrcOverNoEa ||
-+                     sg2d.imageComp == CompositeType.SrcOver))
-+                {
-+                    if (!validated) {
-+                        super.validatePipe(sg2d);
-+                        validated = true;
-+                    }
-+                    PixelToParallelogramConverter aaConverter =
-+                        new PixelToParallelogramConverter(sg2d.shapepipe,
-+                                                          d3dAAPgramPipe,
-+                                                          1.0/8.0, 0.499,
-+                                                          false);
-+                    sg2d.drawpipe = aaConverter;
-+                    sg2d.fillpipe = aaConverter;
-+                    sg2d.shapepipe = aaConverter;
-+                } else if (sg2d.compositeState == sg2d.COMP_XOR) {
-+                    // install the solid pipes when AA and XOR are both enabled
-+                    txPipe = d3dTxRenderPipe;
-+                    nonTxPipe = d3dRenderPipe;
-+                }
-+            }
-+            // other cases handled by super.validatePipe() below
-+        }
- 
--    private D3DContext d3dContext;
-+        if (txPipe != null) {
-+            if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) {
-+                sg2d.drawpipe = txPipe;
-+                sg2d.fillpipe = txPipe;
-+            } else if (sg2d.strokeState != sg2d.STROKE_THIN) {
-+                sg2d.drawpipe = txPipe;
-+                sg2d.fillpipe = nonTxPipe;
-+            } else {
-+                sg2d.drawpipe = nonTxPipe;
-+                sg2d.fillpipe = nonTxPipe;
-+            }
-+            // Note that we use the transforming pipe here because it
-+            // will examine the shape and possibly perform an optimized
-+            // operation if it can be simplified.  The simplifications
-+            // will be valid for all STROKE and TRANSFORM types.
-+            sg2d.shapepipe = txPipe;
-+        } else {
-+            if (!validated) {
-+                super.validatePipe(sg2d);
-+            }
-+        }
- 
--    protected static D3DRenderer d3dPipe;
--    protected static PixelToShapeConverter d3dTxPipe;
--    protected static D3DTextRenderer d3dTextPipe;
--    protected static D3DDrawImage d3dDrawImagePipe;
-+        // install the text pipe based on our earlier decision
-+        sg2d.textpipe = textpipe;
- 
--    private native void initOps(int depth, int transparency);
-+        // always override the image pipe with the specialized D3D pipe
-+        sg2d.imagepipe = d3dImagePipe;
-+    }
- 
--    static {
--        if (WindowsFlags.isD3DEnabled()) {
--            D3DBlitLoops.register();
--            D3DMaskFill.register();
-+    @Override
-+    protected MaskFill getMaskFill(SunGraphics2D sg2d) {
-+        if (sg2d.paintState > sg2d.PAINT_ALPHACOLOR) {
-+            /*
-+             * We can only accelerate non-Color MaskFill operations if
-+             * all of the following conditions hold true:
-+             *   - there is an implementation for the given paintState
-+             *   - the current Paint can be accelerated for this destination
-+             *   - multitexturing is available (since we need to modulate
-+             *     the alpha mask texture with the paint texture)
-+             *
-+             * In all other cases, we return null, in which case the
-+             * validation code will choose a more general software-based loop.
-+             */
-+            if (!D3DPaints.isValid(sg2d) ||
-+                !graphicsDevice.isCapPresent(CAPS_MULTITEXTURE))
-+            {
-+                return null;
-+            }
-         }
-+        return super.getMaskFill(sg2d);
-+    }
- 
--        d3dPipe = new D3DRenderer();
--        d3dTxPipe = new PixelToShapeConverter(d3dPipe);
--        d3dTextPipe = new D3DTextRenderer();
--        d3dDrawImagePipe = new D3DDrawImage();
-+    @Override
-+    public boolean copyArea(SunGraphics2D sg2d,
-+                            int x, int y, int w, int h, int dx, int dy)
-+    {
-+        if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE &&
-+            sg2d.compositeState < sg2d.COMP_XOR)
-+        {
-+            x += sg2d.transX;
-+            y += sg2d.transY;
- 
--        if (GraphicsPrimitive.tracingEnabled()) {
--            d3dPipe = d3dPipe.traceWrapD3D();
--            d3dTextPipe = d3dTextPipe.traceWrap();
-+            d3dRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
-+
-+            return true;
-         }
-+        return false;
-     }
- 
-     @Override
--    public SurfaceDataProxy makeProxyFor(SurfaceData srcData) {
--        //D3D may be eliminated soon so no Proxy was created for it...
--        //return D3DSurfaceDataProxy.createProxy(srcData, graphicsConfig);
--        return SurfaceDataProxy.UNCACHED;
-+    public void flush() {
-+        D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+        rq.lock();
-+        try {
-+            RenderBuffer buf = rq.getBuffer();
-+            rq.ensureCapacityAndAlignment(12, 4);
-+            buf.putInt(FLUSH_SURFACE);
-+            buf.putLong(getNativeOps());
-+
-+            // this call is expected to complete synchronously, so flush now
-+            rq.flushNow();
-+        } finally {
-+            rq.unlock();
-+        }
-     }
- 
-     /**
--     * Non-public constructor.  Use createData() to create an object.
--     *
--     * This constructor is used to house the common construction
--     * code shared between the creation of D3DSurfaceData objects
--     * and subclasses of D3DSurfaceData (such as D3DBackBufferSD).
--     *
--     * It calls the common constructor in the parent, and then
--     * initializes other shared D3D data.
--     */
--    protected D3DSurfaceData(int width, int height,
--                             int d3dSurfaceType,
--                             SurfaceType sType, ColorModel cm,
--                             GraphicsConfiguration gc,
--                             Image image, int transparency)
-+     * Disposes the native resources associated with the given D3DSurfaceData
-+     * (referenced by the pData parameter).  This method is invoked from
-+     * the native Dispose() method from the Disposer thread when the
-+     * Java-level D3DSurfaceData object is about to go away.
-+     */
-+    static void dispose(long pData) {
-+        D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+        rq.lock();
-+        try {
-+            RenderBuffer buf = rq.getBuffer();
-+            rq.ensureCapacityAndAlignment(12, 4);
-+            buf.putInt(DISPOSE_SURFACE);
-+            buf.putLong(pData);
-+
-+            // this call is expected to complete synchronously, so flush now
-+            rq.flushNow();
-+        } finally {
-+            rq.unlock();
-+        }
-+    }
-+
-+    static void swapBuffers(D3DSurfaceData sd,
-+                            final int x1, final int y1,
-+                            final int x2, final int y2)
-     {
--        super(width, height, sType, cm, gc, image, transparency);
--        this.type = d3dSurfaceType;
-+        long pData = sd.getNativeOps();
-+        D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+        // swapBuffers can be called from the toolkit thread by swing, we
-+        // should detect this and prevent the deadlocks
-+        if (rq.isRenderQueueThread()) {
-+            if (!rq.tryLock()) {
-+                // if we could not obtain the lock, repaint the area
-+                // that was supposed to be swapped, and no-op this swap
-+                final Component target = (Component)sd.getPeer().getTarget();
-+                SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
-+                    public void run() {
-+                        target.repaint(x1, y1, x2, y2);
-+                    }
-+                });
-+                return;
-+            }
-+        } else {
-+            rq.lock();
-+        }
-+        try {
-+            RenderBuffer buf = rq.getBuffer();
-+            rq.ensureCapacityAndAlignment(28, 4);
-+            buf.putInt(SWAP_BUFFERS);
-+            buf.putLong(pData);
-+            buf.putInt(x1);
-+            buf.putInt(y1);
-+            buf.putInt(x2);
-+            buf.putInt(y2);
-+            rq.flushNow();
-+        } finally {
-+            rq.unlock();
-+        }
-     }
- 
-     /**
--     * Private constructor.  Use createData() to create an object.
--     *
--     * This constructor calls the common constructor above and then
--     * performs the specific initialization of the D3DSurface.
-+     * Returns destination Image associated with this SurfaceData.
-      */
--    private D3DSurfaceData(int width, int height,
--                           int d3dSurfaceType,
--                           SurfaceType sType, ColorModel cm,
--                           GraphicsConfiguration gc,
--                           Image image, int transparency,
--                           int screen)
--    {
--        this(width, height, d3dSurfaceType, sType, cm, gc, image, transparency);
--        pixelFormat = initSurface(width, height, screen,
--                                  null /*parent SurfaceData*/);
-+    public Object getDestination() {
-+        return offscreenImage;
-     }
- 
--    public static D3DSurfaceData createData(int width, int height,
--                                            int d3dSurfaceType,
--                                            ColorModel cm,
--                                            GraphicsConfiguration gc,
--                                            Image image)
--    {
--        Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
--        // After a display change ddInstance may not be
--        // recreated yet, and in this case isD3DEnabledOnDevice will
--        // return false, until someone attempted to recreate the
--        // primary.
--        if (!gd.isD3DEnabledOnDevice()) {
--            return null;
-+    public Rectangle getBounds() {
-+        if (type == FLIP_BACKBUFFER || type == WINDOW) {
-+            Rectangle r = peer.getBounds();
-+            r.x = r.y = 0;
-+            return r;
-+        } else {
-+            return new Rectangle(width, height);
-         }
-+    }
- 
--        return new D3DSurfaceData(width, height,
--                                  d3dSurfaceType,
--                                  getSurfaceType(gc, cm, d3dSurfaceType),
--                                  cm, gc, image,
--                                  cm.getTransparency(), gd.getScreen());
-+    public Rectangle getNativeBounds() {
-+        D3DRenderQueue rq = D3DRenderQueue.getInstance();
-+        // need to lock to make sure nativeWidth and Height are consistent
-+        // since they are set from the render thread from the native
-+        // level
-+        rq.lock();
-+        try {
-+            // REMIND: use xyoffsets?
-+            return new Rectangle(nativeWidth, nativeHeight);
-+        } finally {
-+            rq.unlock();
-+        }
-     }
- 
 -    int getPixelFormat() {
 -        return pixelFormat;
-+
-+    public GraphicsConfiguration getDeviceConfiguration() {
-+        return graphicsDevice.getDefaultConfiguration();
-     }
- 
+-    }
+-
 -    static SurfaceType getSurfaceType(GraphicsConfiguration gc,
 -                                      ColorModel cm,
 -                                      int d3dSurfaceType)
@@ -13732,15 +13738,7 @@
 -        if (d3dSurfaceType == D3D_TEXTURE_SURFACE) {
 -            // for non-rtt textures we have only one surface type
 -            return D3DTexture;
-+    public SurfaceData getReplacement() {
-+        return restoreContents(offscreenImage);
-+    }
-+
-+    private static D3DGraphicsConfig getGC(WComponentPeer peer) {
-+        GraphicsConfiguration gc;
-+        if (peer != null) {
-+            gc =  peer.getGraphicsConfiguration();
-         } else {
+-        } else {
 -            int pixelSize = cm.getPixelSize();
 -            Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
 -            int transparency = cm.getTransparency();
@@ -13777,7 +13775,16 @@
 -                        }
 -                    } else {
 -                        return useRTT ? ThreeByteBgrD3D_RTT : ThreeByteBgrD3D;
--                    }
++        protected void setElem(final int x, final int y, final int pixel,
++                               final SurfaceData sData)
++        {
++            D3DRenderQueue rq = D3DRenderQueue.getInstance();
++            rq.lock();
++            try {
++                rq.flushAndInvokeNow(new Runnable() {
++                    public void run() {
++                        dbSetPixelNative(sData.getNativeOps(), x, y, pixel);
+                     }
 -                case 15:
 -                    return useRTT ? Ushort555RgbD3D_RTT : Ushort555RgbD3D;
 -                case 16:
@@ -13794,37 +13801,124 @@
 -                                                              "depth: " +
 -                                                              cm.getPixelSize());
 -                }
--            }
-+            GraphicsEnvironment env =
-+                    GraphicsEnvironment.getLocalGraphicsEnvironment();
-+            GraphicsDevice gd = env.getDefaultScreenDevice();
-+            gc = gd.getDefaultConfiguration();
-         }
-+        return (gc instanceof D3DGraphicsConfig) ? (D3DGraphicsConfig)gc : null;
++                });
++                sData.markDirty();
++            } finally {
++                rq.unlock();
+             }
+         }
      }
  
 -    private native int initOffScreenSurface(long pCtx,
 -                                            long pData, long parentPdata,
 -                                            int width, int height,
 -                                            int type, int screen);
--
++    public synchronized Raster getRaster(int x, int y, int w, int h) {
++        if (wrn == null) {
++            DirectColorModel dcm = (DirectColorModel)getColorModel();
++            SampleModel smHw;
++            int dataType = 0;
++            int scanStride = width;
+ 
 -    protected int initSurface(int width, int height, int screen,
 -                              Win32SurfaceData parentData)
 -    {
 -        int pFormat = PF_INVALID;
-+    /**
-+     * Attempts to restore the surface by initializing the native data
-+     */
-+    void restoreSurface() {
-+        initSurface();
-+    }
++            if (dcm.getPixelSize() == 24 || dcm.getPixelSize() == 32) {
++                dataType = DataBuffer.TYPE_INT;
++            } else {
++                // 15, 16
++                dataType = DataBuffer.TYPE_USHORT;
++            }
  
 -        synchronized (D3DContext.LOCK) {
 -            long pData = getNativeOps();
 -            long pDataParent = 0L;
 -            if (parentData != null) {
 -                pDataParent = parentData.getNativeOps();
--            }
++            // note that we have to use the surface width and height here,
++            // not the passed w,h
++            smHw = new SinglePixelPackedSampleModel(dataType, width, height,
++                                                    scanStride, dcm.getMasks());
++            DataBuffer dbn = new D3DDataBufferNative(this, dataType,
++                                                     width, height);
++            wrn = WritableRasterNative.createNativeRaster(smHw, dbn);
++        }
++
++        return wrn;
++    }
++
++    /**
++     * For now, we can only render LCD text if:
++     *   - the pixel shaders are available, and
++     *   - blending is disabled, and
++     *   - the source color is opaque
++     */
++    public boolean canRenderLCDText(SunGraphics2D sg2d) {
++        return
++            graphicsDevice.isCapPresent(CAPS_LCD_SHADER) &&
++            sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
++            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR;
++    }
++
++    public void validatePipe(SunGraphics2D sg2d) {
++        TextPipe textpipe;
++        boolean validated = false;
++
++        // REMIND: the D3D pipeline doesn't support XOR!, more
++        // fixes will be needed below
++        if (sg2d.compositeState >= sg2d.COMP_XOR) {
++            super.validatePipe(sg2d);
++            sg2d.imagepipe = d3dImagePipe;
++            return;
++        }
++
++        // D3DTextRenderer handles both AA and non-AA text, but
++        // only works with the following modes:
++        // (Note: For LCD text we only enter this code path if
++        // canRenderLCDText() has already validated that the mode is
++        // CompositeType.SrcNoEa (opaque color), which will be subsumed
++        // by the CompositeType.SrcNoEa (any color) test below.)
++
++        if (/* CompositeType.SrcNoEa (any color) */
++            (sg2d.compositeState <= sg2d.COMP_ISCOPY &&
++             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR)        ||
++
++            /* CompositeType.SrcOver (any color) */
++            (sg2d.compositeState == sg2d.COMP_ALPHA    &&
++             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
++             (((AlphaComposite)sg2d.composite).getRule() ==
++              AlphaComposite.SRC_OVER))                       ||
++
++            /* CompositeType.Xor (any color) */
++            (sg2d.compositeState == sg2d.COMP_XOR &&
++             sg2d.paintState <= sg2d.PAINT_ALPHACOLOR))
++        {
++            textpipe = d3dTextPipe;
++        } else {
++            // do this to initialize textpipe correctly; we will attempt
++            // to override the non-text pipes below
++            super.validatePipe(sg2d);
++            textpipe = sg2d.textpipe;
++            validated = true;
++        }
++
++        PixelToParallelogramConverter txPipe = null;
++        D3DRenderer nonTxPipe = null;
++
++        if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON) {
++            if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) {
++                if (sg2d.compositeState <= sg2d.COMP_XOR) {
++                    txPipe = d3dTxRenderPipe;
++                    nonTxPipe = d3dRenderPipe;
++                }
++            } else if (sg2d.compositeState <= sg2d.COMP_ALPHA) {
++                if (D3DPaints.isValid(sg2d)) {
++                    txPipe = d3dTxRenderPipe;
++                    nonTxPipe = d3dRenderPipe;
++                }
++                // custom paints handled by super.validatePipe() below
+             }
 -            D3DContext d3dContext = getContext();
 -            long pCtx = d3dContext.getNativeContext();
 -            // native context could be 0 if the context is currently invalid,
@@ -13832,36 +13926,98 @@
 -            if (pCtx == 0) {
 -                d3dContext.reinitNativeContext();
 -                pCtx = d3dContext.getNativeContext();
--            }
++        } else {
++            if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) {
++                if (graphicsDevice.isCapPresent(CAPS_AA_SHADER) &&
++                    (sg2d.imageComp == CompositeType.SrcOverNoEa ||
++                     sg2d.imageComp == CompositeType.SrcOver))
++                {
++                    if (!validated) {
++                        super.validatePipe(sg2d);
++                        validated = true;
++                    }
++                    PixelToParallelogramConverter aaConverter =
++                        new PixelToParallelogramConverter(sg2d.shapepipe,
++                                                          d3dAAPgramPipe,
++                                                          1.0/8.0, 0.499,
++                                                          false);
++                    sg2d.drawpipe = aaConverter;
++                    sg2d.fillpipe = aaConverter;
++                    sg2d.shapepipe = aaConverter;
++                } else if (sg2d.compositeState == sg2d.COMP_XOR) {
++                    // install the solid pipes when AA and XOR are both enabled
++                    txPipe = d3dTxRenderPipe;
++                    nonTxPipe = d3dRenderPipe;
++                }
+             }
 -            if (pData != 0 && pCtx != 0) {
 -                pFormat = initOffScreenSurface(pCtx,
 -                                               pData, pDataParent,
 -                                               width, height, type, screen);
--            } else {
++            // other cases handled by super.validatePipe() below
++        }
++
++        if (txPipe != null) {
++            if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) {
++                sg2d.drawpipe = txPipe;
++                sg2d.fillpipe = txPipe;
++            } else if (sg2d.strokeState != sg2d.STROKE_THIN) {
++                sg2d.drawpipe = txPipe;
++                sg2d.fillpipe = nonTxPipe;
+             } else {
 -                // if the context can't be restored, give up for now.
 -                throw new InvalidPipeException("D3DSD.initSurface: pData " +
 -                                               "or pCtx is null");
--            }
--        }
++                sg2d.drawpipe = nonTxPipe;
++                sg2d.fillpipe = nonTxPipe;
++            }
++            // Note that we use the transforming pipe here because it
++            // will examine the shape and possibly perform an optimized
++            // operation if it can be simplified.  The simplifications
++            // will be valid for all STROKE and TRANSFORM types.
++            sg2d.shapepipe = txPipe;
++        } else {
++            if (!validated) {
++                super.validatePipe(sg2d);
+             }
+         }
 -        return pFormat;
-+    WComponentPeer getPeer() {
-+        return peer;
-     }
- 
-+    /**
-+     * We need to let the surface manager know that the surface is lost so
-+     * that for example BufferStrategy.contentsLost() returns correct result.
-+     * Normally the status of contentsLost is set in validate(), but in some
-+     * cases (like Swing's buffer per window) we intentionally don't call
-+     * validate from the toolkit thread but only check for the BS status.
-+     */
++
++        // install the text pipe based on our earlier decision
++        sg2d.textpipe = textpipe;
++
++        // always override the image pipe with the specialized D3D pipe
++        sg2d.imagepipe = d3dImagePipe;
+     }
+ 
      @Override
 -    public void validatePipe(SunGraphics2D sg2d) {
 -        // we don't support COMP_XOR yet..
 -        if (sg2d.compositeState < sg2d.COMP_XOR) {
 -            TextPipe textpipe;
 -            boolean validated = false;
--
++    protected MaskFill getMaskFill(SunGraphics2D sg2d) {
++        if (sg2d.paintState > sg2d.PAINT_ALPHACOLOR) {
++            /*
++             * We can only accelerate non-Color MaskFill operations if
++             * all of the following conditions hold true:
++             *   - there is an implementation for the given paintState
++             *   - the current Paint can be accelerated for this destination
++             *   - multitexturing is available (since we need to modulate
++             *     the alpha mask texture with the paint texture)
++             *
++             * In all other cases, we return null, in which case the
++             * validation code will choose a more general software-based loop.
++             */
++            if (!D3DPaints.isValid(sg2d) ||
++                !graphicsDevice.isCapPresent(CAPS_MULTITEXTURE))
++            {
++                return null;
++            }
++        }
++        return super.getMaskFill(sg2d);
++    }
+ 
 -            if (((sg2d.compositeState <= sg2d.COMP_ISCOPY &&
 -                  sg2d.paintState <= sg2d.PAINT_ALPHACOLOR) ||
 -                 (sg2d.compositeState == sg2d.COMP_ALPHA &&
@@ -13880,7 +14036,16 @@
 -                textpipe = sg2d.textpipe;
 -                validated = true;
 -            }
--
++    @Override
++    public boolean copyArea(SunGraphics2D sg2d,
++                            int x, int y, int w, int h, int dx, int dy)
++    {
++        if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE &&
++            sg2d.compositeState < sg2d.COMP_XOR)
++        {
++            x += sg2d.transX;
++            y += sg2d.transY;
+ 
 -            if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON &&
 -                sg2d.paintState <= sg2d.PAINT_ALPHACOLOR)
 -            {
@@ -13895,16 +14060,188 @@
 -            sg2d.textpipe = textpipe;
 -        } else {
 -            super.validatePipe(sg2d);
++            d3dRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
++
++            return true;
+         }
++        return false;
++    }
+ 
+-        // always override the image pipe with the specialized D3D pipe
+-        sg2d.imagepipe = d3dDrawImagePipe;
++    @Override
++    public void flush() {
++        D3DRenderQueue rq = D3DRenderQueue.getInstance();
++        rq.lock();
++        try {
++            RenderBuffer buf = rq.getBuffer();
++            rq.ensureCapacityAndAlignment(12, 4);
++            buf.putInt(FLUSH_SURFACE);
++            buf.putLong(getNativeOps());
++
++            // this call is expected to complete synchronously, so flush now
++            rq.flushNow();
++        } finally {
++            rq.unlock();
++        }
+     }
+ 
+     /**
+-     * Disables D3D acceleration on the surface manager of this surfaceData
+-     * object. This can happen when we encounter a hard error in rendering a D3D
+-     * primitive (for example, if we were unable to set a surface as D3D target
+-     * surface).
+-     * Upon next validation the SurfaceManager will create a non-D3D surface.
++     * Disposes the native resources associated with the given D3DSurfaceData
++     * (referenced by the pData parameter).  This method is invoked from
++     * the native Dispose() method from the Disposer thread when the
++     * Java-level D3DSurfaceData object is about to go away.
+      */
+-    public void disableD3D() {
+-        markSurfaceLost();
+-        SurfaceManager sMgr = SurfaceManager.getManager(image);
+-        if (sMgr instanceof WinVolatileSurfaceManager) {
+-            ((WinVolatileSurfaceManager)sMgr).setD3DAccelerationEnabled(false);
++    static void dispose(long pData) {
++        D3DRenderQueue rq = D3DRenderQueue.getInstance();
++        rq.lock();
++        try {
++            RenderBuffer buf = rq.getBuffer();
++            rq.ensureCapacityAndAlignment(12, 4);
++            buf.putInt(DISPOSE_SURFACE);
++            buf.putLong(pData);
++
++            // this call is expected to complete synchronously, so flush now
++            rq.flushNow();
++        } finally {
++            rq.unlock();
+         }
+     }
+ 
+-    @Override
+-    public boolean surfacePunted() {
+-        // Punting is disabled for D3D surfaces
+-        return false;
++    static void swapBuffers(D3DSurfaceData sd,
++                            final int x1, final int y1,
++                            final int x2, final int y2)
++    {
++        long pData = sd.getNativeOps();
++        D3DRenderQueue rq = D3DRenderQueue.getInstance();
++        // swapBuffers can be called from the toolkit thread by swing, we
++        // should detect this and prevent the deadlocks
++        if (rq.isRenderQueueThread()) {
++            if (!rq.tryLock()) {
++                // if we could not obtain the lock, repaint the area
++                // that was supposed to be swapped, and no-op this swap
++                final Component target = (Component)sd.getPeer().getTarget();
++                SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
++                    public void run() {
++                        target.repaint(x1, y1, x2, y2);
++                    }
++                });
++                return;
++            }
++        } else {
++            rq.lock();
++        }
++        try {
++            RenderBuffer buf = rq.getBuffer();
++            rq.ensureCapacityAndAlignment(28, 4);
++            buf.putInt(SWAP_BUFFERS);
++            buf.putLong(pData);
++            buf.putInt(x1);
++            buf.putInt(y1);
++            buf.putInt(x2);
++            buf.putInt(y2);
++            rq.flushNow();
++        } finally {
++            rq.unlock();
++        }
+     }
+ 
+-    D3DContext getContext() {
+-        return ((Win32GraphicsDevice)graphicsConfig.getDevice()).getD3DContext();
++    /**
++     * Returns destination Image associated with this SurfaceData.
++     */
++    public Object getDestination() {
++        return offscreenImage;
+     }
++
++    public Rectangle getBounds() {
++        if (type == FLIP_BACKBUFFER || type == WINDOW) {
++            Rectangle r = peer.getBounds();
++            r.x = r.y = 0;
++            return r;
++        } else {
++            return new Rectangle(width, height);
++        }
++    }
++
++    public Rectangle getNativeBounds() {
++        D3DRenderQueue rq = D3DRenderQueue.getInstance();
++        // need to lock to make sure nativeWidth and Height are consistent
++        // since they are set from the render thread from the native
++        // level
++        rq.lock();
++        try {
++            // REMIND: use xyoffsets?
++            return new Rectangle(nativeWidth, nativeHeight);
++        } finally {
++            rq.unlock();
++        }
++    }
++
++
++    public GraphicsConfiguration getDeviceConfiguration() {
++        return graphicsDevice.getDefaultConfiguration();
++    }
++
++    public SurfaceData getReplacement() {
++        return restoreContents(offscreenImage);
++    }
++
++    private static D3DGraphicsConfig getGC(WComponentPeer peer) {
++        GraphicsConfiguration gc;
++        if (peer != null) {
++            gc =  peer.getGraphicsConfiguration();
++        } else {
++            GraphicsEnvironment env =
++                    GraphicsEnvironment.getLocalGraphicsEnvironment();
++            GraphicsDevice gd = env.getDefaultScreenDevice();
++            gc = gd.getDefaultConfiguration();
++        }
++        return (gc instanceof D3DGraphicsConfig) ? (D3DGraphicsConfig)gc : null;
++    }
++
++    /**
++     * Attempts to restore the surface by initializing the native data
++     */
++    void restoreSurface() {
++        initSurface();
++    }
++
++    WComponentPeer getPeer() {
++        return peer;
++    }
++
++    /**
++     * We need to let the surface manager know that the surface is lost so
++     * that for example BufferStrategy.contentsLost() returns correct result.
++     * Normally the status of contentsLost is set in validate(), but in some
++     * cases (like Swing's buffer per window) we intentionally don't call
++     * validate from the toolkit thread but only check for the BS status.
++     */
++    @Override
 +    public void setSurfaceLost(boolean lost) {
 +        super.setSurfaceLost(lost);
 +        if (lost && offscreenImage != null) {
 +            SurfaceManager sm = SurfaceManager.getManager(offscreenImage);
 +            sm.acceleratedSurfaceLost();
-         }
-+    }
- 
--        // always override the image pipe with the specialized D3D pipe
--        sg2d.imagepipe = d3dDrawImagePipe;
++        }
++    }
++
 +    private static native long getNativeResourceNative(long sdops, int resType);
 +    /**
 +     * Returns a pointer to the native resource of specified {@code resType}
@@ -13932,25 +14269,15 @@
 +     */
 +    public long getNativeResource(int resType) {
 +        return getNativeResourceNative(getNativeOps(), resType);
-     }
- 
-     /**
--     * Disables D3D acceleration on the surface manager of this surfaceData
--     * object. This can happen when we encounter a hard error in rendering a D3D
--     * primitive (for example, if we were unable to set a surface as D3D target
--     * surface).
--     * Upon next validation the SurfaceManager will create a non-D3D surface.
++    }
++
++    /**
 +     * Class representing an on-screen d3d surface. Since d3d can't
 +     * render to the screen directly, it is implemented as a swap chain,
 +     * controlled by D3DScreenUpdateManager.
 +     *
 +     * @see D3DScreenUpdateManager
-      */
--    public void disableD3D() {
--        markSurfaceLost();
--        SurfaceManager sMgr = SurfaceManager.getManager(image);
--        if (sMgr instanceof WinVolatileSurfaceManager) {
--            ((WinVolatileSurfaceManager)sMgr).setD3DAccelerationEnabled(false);
++     */
 +    public static class D3DWindowSurfaceData extends D3DSurfaceData {
 +        StateTracker dirtyTracker;
 +
@@ -13962,14 +14289,8 @@
 +                  null, peer.getColorModel(), 1, SWAP_COPY, VSYNC_DEFAULT,
 +                  WINDOW);
 +            dirtyTracker = getStateTracker();
-         }
--    }
- 
--    @Override
--    public boolean surfacePunted() {
--        // Punting is disabled for D3D surfaces
--        return false;
--    }
++        }
++
 +        /**
 +         * {@inheritDoc}
 +         *
@@ -13983,9 +14304,7 @@
 +            ScreenUpdateManager mgr = ScreenUpdateManager.getInstance();
 +            return mgr.getReplacementScreenSurface(peer, this);
 +        }
- 
--    D3DContext getContext() {
--        return ((Win32GraphicsDevice)graphicsConfig.getDevice()).getD3DContext();
++
 +        /**
 +         * Returns destination Component associated with this SurfaceData.
 +         */
@@ -14031,7 +14350,7 @@
 +        public void markClean() {
 +            dirtyTracker = getStateTracker();
 +        }
-     }
++    }
 +
 +    /**
 +     * Updates the layered window with the contents of the surface.
@@ -14045,33 +14364,33 @@
 +    public static native boolean updateWindowAccelImpl(long pd3dsd, long pData,
 +                                                       int w, int h);
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceDataProxy.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,93 @@
 +/*
-+ * Copyright 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.  Sun designates this
++ * Copyright (c) 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -14142,9 +14461,9 @@
 +        return (bgColor == null || transparency == Transparency.OPAQUE);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DTextRenderer.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -14188,13 +14507,16 @@
 -                                              sg2d.getCompClip(), comp,
 -                                              null, sg2d.eargb,
 -                                              D3DContext.NO_CONTEXT_FLAGS);
+-
+-            doDrawGlyphList(dstData.getNativeOps(), pCtx,
+-                            sg2d.getCompClip(), gl);
+-        }
 +    D3DTextRenderer(RenderQueue rq) {
 +        super(rq);
-+    }
- 
--            doDrawGlyphList(dstData.getNativeOps(), pCtx,
--                            sg2d.getCompClip(), gl);
--        }
+     }
+ 
+-    public D3DTextRenderer traceWrap() {
+-        return new Tracer();
 +    @Override
 +    protected native void drawGlyphList(int numGlyphs, boolean usePositions,
 +                                        boolean subPixPos, boolean rgbOrder,
@@ -14212,17 +14534,15 @@
 +                                   D3DContext.NO_CONTEXT_FLAGS);
      }
  
--    public D3DTextRenderer traceWrap() {
--        return new Tracer();
-+    D3DTextRenderer traceWrap() {
-+        return new Tracer(this);
-     }
- 
 -    public static class Tracer extends D3DTextRenderer {
 -        @Override
 -        protected void doDrawGlyphList(long pData, long pCtx,
 -                                       Region clip, GlyphList gl)
 -        {
++    D3DTextRenderer traceWrap() {
++        return new Tracer(this);
++    }
++
 +    private static class Tracer extends D3DTextRenderer {
 +        Tracer(D3DTextRenderer d3dtr) {
 +            super(d3dtr.rq);
@@ -14234,33 +14554,33 @@
          }
      }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DVolatileSurfaceManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,230 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +package sun.java2d.d3d;
@@ -14468,9 +14788,9 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	2011-01-08 01:26:50.467202167 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -14758,9 +15078,9 @@
 +        AccelDeviceEventNotifier.removeListener(l);
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLSurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -14931,9 +15251,9 @@
 +                                                       WComponentPeer peer,
 +                                                       int w, int h);
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
@@ -15046,180 +15366,689 @@
 +        }
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/ScreenUpdateManager.java openjdk/jdk/src/windows/classes/sun/java2d/ScreenUpdateManager.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/ScreenUpdateManager.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/ScreenUpdateManager.java	2011-01-08 01:26:50.471202211 +0000
-@@ -0,0 +1,131 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+package sun.java2d;
-+
-+import java.awt.Color;
-+import java.awt.Font;
-+import java.awt.Graphics2D;
-+import sun.awt.Win32GraphicsConfig;
-+import sun.awt.windows.WComponentPeer;
-+import sun.java2d.d3d.D3DScreenUpdateManager;
-+import sun.java2d.windows.WindowsFlags;
-+
-+/**
-+ * This class handles the creation of on-screen surfaces and
-+ * corresponding graphics objects.
-+ *
-+ * By default it delegates the surface creation to the
-+ * particular GraphicsConfiguration classes.
-+ */
-+public class ScreenUpdateManager {
-+    private static ScreenUpdateManager theInstance;
-+
-+    protected ScreenUpdateManager() {
-+    }
-+
-+    /**
-+     * Creates a SunGraphics2D object for the surface,
-+     * given the parameters.
-+     *
-+     * @param sd surface data for which a graphics is to be created
-+     * @param peer peer which owns the surface
-+     * @param fgColor fg color to be used in the graphics
-+     * @param bgColor bg color to be used in the graphics
-+     * @param font font to be used in the graphics
-+     * @return a SunGraphics2D object for rendering to the passed surface
-+     */
-+    public synchronized Graphics2D createGraphics(SurfaceData sd,
-+            WComponentPeer peer, Color fgColor, Color bgColor, Font font)
-+    {
-+        return new SunGraphics2D(sd, fgColor, bgColor, font);
-+    }
-+
-+    /**
-+     * Creates and returns the surface for the peer. This surface becomes
-+     * managed by this manager. To remove the surface from the managed list
-+     * {@code}dropScreenSurface(SurfaceData){@code} will need to be called.
-+     *
-+     * The default implementation delegates surface creation
-+     * to the passed in GraphicsConfiguration object.
-+     *
-+     * @param gc graphics configuration for which the surface is to be created
-+     * @param peer peer for which the onscreen surface is to be created
-+     * @param bbNum number of back-buffers requested for this peer
-+     * @param isResize whether this surface is being created in response to
-+     * a component resize event
-+     * @return a SurfaceData to be used for on-screen rendering for this peer.
-+     * @see #dropScreenSurface(SurfaceData)
-+     */
-+    public SurfaceData createScreenSurface(Win32GraphicsConfig gc,
-+                                           WComponentPeer peer, int bbNum,
-+                                           boolean isResize)
-+    {
-+        return gc.createSurfaceData(peer, bbNum);
-+    }
-+
-+    /**
-+     * Drops the passed surface from the list of managed surfaces.
-+     *
-+     * Nothing happens if the surface wasn't managed by this manager.
-+     *
-+     * @param sd SurfaceData to be removed from the list of managed surfaces
-+     */
-+    public void dropScreenSurface(SurfaceData sd) {}
-+
-+    /**
-+     * Returns a replacement SurfaceData for the invalid passed one.
-+     *
-+     * This method should be used by SurfaceData's created by
-+     * the ScreenUpdateManager for providing replacement surfaces.
-+     *
-+     * @param peer to which the old surface belongs
-+     * @param oldsd the old (invalid) surface to get replaced
-+     * @return a replacement surface
-+     * @see sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData#getReplacement()
-+     * @see sun.java2d.windows.GDIWindowSurfaceData#getReplacement()
-+     */
-+    public SurfaceData getReplacementScreenSurface(WComponentPeer peer,
-+                                                   SurfaceData oldsd)
-+    {
-+        return peer.getSurfaceData();
-+    }
-+
-+    /**
-+     * Returns an (singleton) instance of the screen surfaces
-+     * manager class.
-+     * @return instance of onscreen surfaces manager
-+     */
-+    public static synchronized ScreenUpdateManager getInstance() {
-+        if (theInstance == null) {
-+            if (WindowsFlags.isD3DEnabled()) {
-+                theInstance = new D3DScreenUpdateManager();
-+            } else {
-+                theInstance = new ScreenUpdateManager();
-+            }
-+        }
-+        return theInstance;
-+    }
-+}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java openjdk/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java	2011-01-07 21:33:07.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/SurfaceManagerFactory.java	2011-01-08 01:26:50.471202211 +0000
-@@ -26,14 +26,13 @@
- package sun.java2d;
- 
- import java.awt.GraphicsConfiguration;
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/DDBlitLoops.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/DDBlitLoops.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,186 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2004, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.AlphaComposite;
+-import java.awt.Color;
+-import java.awt.Composite;
+-import java.awt.Font;
+-import java.awt.image.ColorModel;
+-import java.awt.image.WritableRaster;
 -import java.awt.image.BufferedImage;
-+import sun.awt.image.BufImgVolatileSurfaceManager;
- import sun.awt.image.SunVolatileImage;
--import sun.awt.image.SurfaceManager;
- import sun.awt.image.VolatileSurfaceManager;
-+import sun.java2d.d3d.D3DGraphicsConfig;
-+import sun.java2d.d3d.D3DVolatileSurfaceManager;
- import sun.java2d.opengl.WGLGraphicsConfig;
- import sun.java2d.opengl.WGLVolatileSurfaceManager;
--import sun.java2d.windows.WindowsFlags;
--import sun.java2d.windows.WinVolatileSurfaceManager;
- 
- /**
-  * This is a factory class with static methods for creating a
-@@ -55,10 +54,12 @@
-                               Object context)
-     {
-         GraphicsConfiguration gc = vImg.getGraphicsConfig();
--        if (gc instanceof WGLGraphicsConfig) {
-+        if (gc instanceof D3DGraphicsConfig) {
-+            return new D3DVolatileSurfaceManager(vImg, context);
-+        } else if (gc instanceof WGLGraphicsConfig) {
-             return new WGLVolatileSurfaceManager(vImg, context);
-         } else {
--            return new WinVolatileSurfaceManager(vImg, context);
-+            return new BufImgVolatileSurfaceManager(vImg, context);
-         }
-     }
- }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java	2011-01-08 01:26:50.471202211 +0000
+-import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.loops.GraphicsPrimitiveMgr;
+-import sun.java2d.loops.CompositeType;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.loops.Blit;
+-import sun.java2d.loops.BlitBg;
+-import sun.java2d.loops.FillRect;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.pipe.Region;
+-import sun.awt.image.BufImgSurfaceData;
+-
+-/**
+- * DDBlitLoops
+- *
+- * This class accelerates Blits between two DD surfaces of the same depth,
+- * using DirectDraw commands in native code to dispatch Blt calls to
+- * the video accelerator.
+- */
+-public class DDBlitLoops extends Blit {
+-
+-    public static void register()
+-    {
+-        GraphicsPrimitive[] primitives = {
+-            // opaque to opaque loops
+-
+-            // Note that we use the offscreen surfaceType for
+-            // this registry, but that both the onscreen and offscreen
+-            // DD types use the same DESC strings, so these loops will
+-            // be used whether the src/dest surfaces are onscreen or not
+-            new DDBlitLoops(Win32SurfaceData.IntRgbDD,
+-                            Win32SurfaceData.IntRgbDD, false),
+-            new DDBlitLoops(Win32SurfaceData.Ushort565RgbDD,
+-                            Win32SurfaceData.Ushort565RgbDD, false),
+-            new DDBlitLoops(Win32SurfaceData.IntRgbxDD,
+-                            Win32SurfaceData.IntRgbxDD, false),
+-            new DDBlitLoops(Win32SurfaceData.Ushort555RgbxDD,
+-                            Win32SurfaceData.Ushort555RgbxDD, false),
+-            new DDBlitLoops(Win32SurfaceData.Ushort555RgbDD,
+-                            Win32SurfaceData.Ushort555RgbDD, false),
+-            new DDBlitLoops(Win32SurfaceData.ByteIndexedOpaqueDD,
+-                            Win32SurfaceData.ByteIndexedOpaqueDD, false),
+-            new DDBlitLoops(Win32SurfaceData.ByteGrayDD,
+-                            Win32SurfaceData.ByteGrayDD, false),
+-            new DDBlitLoops(Win32SurfaceData.Index8GrayDD,
+-                            Win32SurfaceData.Index8GrayDD, false),
+-            new DDBlitLoops(Win32SurfaceData.ThreeByteBgrDD,
+-                            Win32SurfaceData.ThreeByteBgrDD, false),
+-
+-            // 1-bit transparent to opaque loops
+-            new DDBlitLoops(Win32SurfaceData.IntRgbDD_BM,
+-                            Win32SurfaceData.IntRgbDD, true),
+-            new DDBlitLoops(Win32SurfaceData.Ushort565RgbDD_BM,
+-                            Win32SurfaceData.Ushort565RgbDD, true),
+-            new DDBlitLoops(Win32SurfaceData.IntRgbxDD_BM,
+-                            Win32SurfaceData.IntRgbxDD, true),
+-            new DDBlitLoops(Win32SurfaceData.Ushort555RgbxDD_BM,
+-                            Win32SurfaceData.Ushort555RgbxDD, true),
+-            new DDBlitLoops(Win32SurfaceData.Ushort555RgbDD_BM,
+-                            Win32SurfaceData.Ushort555RgbDD, true),
+-            new DDBlitLoops(Win32SurfaceData.ByteIndexedDD_BM,
+-                            Win32SurfaceData.ByteIndexedOpaqueDD, true),
+-            new DDBlitLoops(Win32SurfaceData.ByteGrayDD_BM,
+-                            Win32SurfaceData.ByteGrayDD, true),
+-            new DDBlitLoops(Win32SurfaceData.Index8GrayDD_BM,
+-                            Win32SurfaceData.Index8GrayDD, true),
+-            new DDBlitLoops(Win32SurfaceData.ThreeByteBgrDD_BM,
+-                            Win32SurfaceData.ThreeByteBgrDD, true),
+-
+-            // any to 1-bit transparent bg loops
+-            new DelegateBlitBgLoop(Win32SurfaceData.IntRgbDD_BM,
+-                                   Win32SurfaceData.IntRgbDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.Ushort565RgbDD_BM,
+-                                   Win32SurfaceData.Ushort565RgbDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.IntRgbxDD_BM,
+-                                   Win32SurfaceData.IntRgbxDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.Ushort555RgbxDD_BM,
+-                                   Win32SurfaceData.Ushort555RgbxDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.Ushort555RgbDD_BM,
+-                                   Win32SurfaceData.Ushort555RgbDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.ByteIndexedDD_BM,
+-                                   Win32SurfaceData.ByteIndexedOpaqueDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.ByteGrayDD_BM,
+-                                   Win32SurfaceData.ByteGrayDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.Index8GrayDD_BM,
+-                                   Win32SurfaceData.Index8GrayDD),
+-            new DelegateBlitBgLoop(Win32SurfaceData.ThreeByteBgrDD_BM,
+-                                   Win32SurfaceData.ThreeByteBgrDD),
+-
+-        };
+-        GraphicsPrimitiveMgr.register(primitives);
+-    }
+-
+-    public DDBlitLoops(SurfaceType srcType, SurfaceType dstType, boolean over) {
+-        super(srcType,
+-              over ? CompositeType.SrcOverNoEa : CompositeType.SrcNoEa,
+-              dstType);
+-    }
+-
+-    /**
+-     * Blit
+-     * This native method is where all of the work happens in the
+-     * accelerated Blit.
+-     */
+-    public native void Blit(SurfaceData src, SurfaceData dst,
+-                            Composite comp, Region clip,
+-                            int sx, int sy, int dx, int dy, int w, int h);
+-
+-
+-    /**
+-     * BlitBg
+-     * This loop is used to render from Sw surface data
+-     * to the Hw one in AOSI.copyBackupToAccelerated.
+-     */
+-    static class DelegateBlitBgLoop extends BlitBg {
+-        SurfaceType dstType;
+-        private static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12);
+-
+-        public DelegateBlitBgLoop(SurfaceType realDstType, SurfaceType delegateDstType) {
+-            super(SurfaceType.Any, CompositeType.SrcNoEa, realDstType);
+-            this.dstType = delegateDstType;
+-        }
+-
+-        public void BlitBg(SurfaceData srcData, SurfaceData dstData,
+-                           Composite comp, Region clip, Color bgColor,
+-                           int srcx, int srcy, int dstx, int dsty, int width, int height)
+-        {
+-            ColorModel dstModel = dstData.getColorModel();
+-            WritableRaster wr =
+-                dstModel.createCompatibleWritableRaster(width, height);
+-            boolean isPremult = dstModel.isAlphaPremultiplied();
+-            BufferedImage bimg =
+-                new BufferedImage(dstModel, wr, isPremult, null);
+-            SurfaceData tmpData = BufImgSurfaceData.createData(bimg);
+-            SunGraphics2D sg2d = new SunGraphics2D(tmpData, bgColor, bgColor,
+-                                                   defaultFont);
+-            FillRect fillop = FillRect.locate(SurfaceType.AnyColor,
+-                                              CompositeType.SrcNoEa,
+-                                              tmpData.getSurfaceType());
+-            Blit combineop = Blit.getFromCache(srcData.getSurfaceType(),
+-                                               CompositeType.SrcOverNoEa,
+-                                               tmpData.getSurfaceType());
+-            Blit blitop = Blit.getFromCache(tmpData.getSurfaceType(),
+-                                            CompositeType.SrcNoEa, dstType);
+-            fillop.FillRect(sg2d, tmpData, 0, 0, width, height);
+-            combineop.Blit(srcData, tmpData, AlphaComposite.SrcOver, null,
+-                           srcx, srcy, 0, 0, width, height);
+-            blitop.Blit(tmpData, dstData, comp, clip,
+-                        0, 0, dstx, dsty, width, height);
+-        }
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/DDRenderer.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/DDRenderer.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,368 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.Composite;
+-import java.awt.Shape;
+-import java.awt.geom.Path2D;
+-import java.awt.geom.PathIterator;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.pipe.Region;
+-import sun.java2d.pipe.PixelDrawPipe;
+-import sun.java2d.pipe.PixelFillPipe;
+-import sun.java2d.pipe.ShapeDrawPipe;
+-import sun.java2d.pipe.SpanIterator;
+-import sun.java2d.loops.GraphicsPrimitive;
+-
+-/**
+- * DDRenderer
+- *
+- * This class accelerates rendering to a surface of type
+- * WinOffScreenSurfaceData.  The renderers in here are simply java wrappers
+- * around native methods that do the real work.
+- */
+-public class DDRenderer extends GDIRenderer {
+-
+-    //
+-    // Native implementations
+-    //
+-    native void doDrawLineDD(SurfaceData sData,
+-                             int color,
+-                             int x1, int y1, int x2, int y2);
+-    native void doFillRectDD(SurfaceData sData,
+-                             int color,
+-                             int left, int top,
+-                             int right, int bottom);
+-    native void doDrawRectDD(SurfaceData sData,
+-                             int color,
+-                             int x, int y, int w, int h);
+-
+-    //
+-    // Internal Java methods for rendering
+-    //
+-
+-    /**
+-     * Clip the given line to the clip bounds in sg2d.
+-     * Assume that the line passed in is given in the order of
+-     * x1 <= x2, y1 <= y2
+-     */
+-    private void clipAndDrawLine(SunGraphics2D sg2d,
+-                                 int x1, int y1, int x2, int y2)
+-    {
+-        // If any of these are true, the line lies outside of the
+-        // clip bounds
+-        Region clip = sg2d.getCompClip();
+-        int cx1 = clip.getLoX();
+-        int cy1 = clip.getLoY();
+-        int cx2 = clip.getHiX();
+-        int cy2 = clip.getHiY();
+-        // For each edge, clip the appropriate coordinate against
+-        // that edge.  We are only dealing with horizontal or vertical lines
+-        // for now, so there is no interpolation between points to
+-        // the proper clip coordinate.
+-        if (x1 <  cx1) x1 = cx1;
+-        if (y1 <  cy1) y1 = cy1;
+-        if (x2 >= cx2) x2 = cx2 - 1;
+-        if (y2 >= cy2) y2 = cy2 - 1;
+-        // If the start moved past the end (or vice versa),
+-        // then we are outside the clip.
+-        if (x1 <= x2 && y1 <= y2) {
+-            doDrawLineDD(sg2d.surfaceData, sg2d.pixel, x1, y1, x2, y2);
+-        }
+-    }
+-
+-    // REMIND: This is just a hack to get WIDE lines to honor the
+-    // necessary hinted pixelization rules.  This should be replaced
+-    // by a native FillSpans method or a getHintedStrokeGeneralPath()
+-    // method that could be filled by the doShape method more quickly.
+-    public void doFillSpans(SunGraphics2D sg2d, SpanIterator si) {
+-        int box[] = new int[4];
+-        SurfaceData sd = sg2d.surfaceData;
+-        while (si.nextSpan(box)) {
+-            doFillRectDD(sd, sg2d.pixel, box[0], box[1], box[2], box[3]);
+-        }
+-    }
+-
+-
+-    //
+-    // Java wrappers for the primitive renderers
+-    //
+-
+-    /**
+-     * drawLine draws a line between the pixel at x1, y1 and the
+-     * pixel at x2, y2 (including the last pixel).
+-     */
+-    public void drawLine(SunGraphics2D sg2d,
+-                         int x1, int y1, int x2, int y2)
+-    {
+-        // Note that we only handle horizontal or vertical lines through
+-        // this renderer.  This is because the implementation uses a fill
+-        // Blt through DirectDraw, which only works for rectangle shapes.
+-        if (x1 == x2 || y1 == y2) {
+-
+-            int transx1 = x1 + sg2d.transX;
+-            int transy1 = y1 + sg2d.transY;
+-            int transx2 = x2 + sg2d.transX;
+-            int transy2 = y2 + sg2d.transY;
+-            int t;
+-            // First, set the ordering of the line coordinates;
+-            // clipAndDrawLine() expects x1 < x2 and y1 < y2
+-            if (transx1 > transx2) {
+-                t = transx1;
+-                transx1 = transx2;
+-                transx2 = t;
+-            }
+-            if (transy1 > transy2) {
+-                t = transy1;
+-                transy1 = transy2;
+-                transy2 = t;
+-            }
+-            clipAndDrawLine(sg2d, transx1, transy1, transx2, transy2);
+-        }
+-        else {
+-            // Punt to our superclass renderer to render diagonal lines
+-            super.drawLine(sg2d, x1, y1, x2, y2);
+-        }
+-    }
+-
+-
+-    /**
+-     * fillRect filles a rect from the pixel at x, y to (but not including)
+-     * the pixel at (x + width), (y + height)
+-     */
+-    public void fillRect(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        int clipLeft, clipTop, clipRight, clipBottom;
+-
+-        // REMIND: This check should probably go in SunGraphics2D instead.
+-        if (width <= 0 || height <= 0) {
+-            return;
+-        }
+-
+-        // Here we clip the fill rect to the size of the clip bounds in sg2d.
+-        // The native code can then assume that it receives a non-empty, post-
+-        // clipped primitive.
+-        clipLeft = x + sg2d.transX;
+-        clipTop = y + sg2d.transY;
+-        clipRight = clipLeft + width;
+-        clipBottom = clipTop + height;
+-
+-        Region clip = sg2d.getCompClip();
+-
+-        // Clip each edge of the rect to the appropriate edge of the clip
+-        // bounds.
+-        if (clipLeft   < clip.getLoX()) clipLeft   = clip.getLoX();
+-        if (clipTop    < clip.getLoY()) clipTop    = clip.getLoY();
+-        if (clipRight  > clip.getHiX()) clipRight  = clip.getHiX();
+-        if (clipBottom > clip.getHiY()) clipBottom = clip.getHiY();
+-
+-        if (clipRight > clipLeft && clipBottom > clipTop) {
+-            doFillRectDD(sg2d.surfaceData, sg2d.pixel, clipLeft, clipTop,
+-                         clipRight, clipBottom);
+-        }
+-    }
+-
+-
+-    /**
+-     * draw a rectangle outline starting at x, y and going to the pixel
+-     * at (x + width), (y + width) (including the lower right pixel)
+-     */
+-    public void drawRect(SunGraphics2D sg2d,
+-                         int x, int y, int width, int height)
+-    {
+-        if (width < 2 || height < 2) {
+-            fillRect(sg2d, x, y, width+1, height+1);
+-            return;
+-        }
+-        int transx = x + sg2d.transX;
+-        int transy = y + sg2d.transY;
+-        Region clip = sg2d.getCompClip();
+-        if (!clip.encompassesXYWH(transx, transy, width+1, height+1)) {
+-            // Rect needs clipping - draw each edge separately, clipping
+-            // as we go.
+-            // Prefer longer horizontal lines if possible.
+-            clipAndDrawLine(sg2d, transx, transy,
+-                            transx + width, transy);
+-            clipAndDrawLine(sg2d, transx, transy + 1,
+-                            transx, transy + height - 1);
+-            clipAndDrawLine(sg2d, transx + width, transy + 1,
+-                            transx + width, transy + height - 1);
+-            clipAndDrawLine(sg2d, transx, transy + height,
+-                            transx + width, transy + height);
+-        } else {
+-            // No clipping needed - just call native method which draws
+-            // all edges in one method
+-            doDrawRectDD(sg2d.surfaceData, sg2d.pixel, transx, transy,
+-                         width, height);
+-        }
+-    }
+-
+-    @Override
+-    public native void devCopyArea(SurfaceData sData,
+-                                   int srcx, int srcy, int dx, int dy,
+-                                   int w, int h);
+-
+-    public DDRenderer traceWrapDD() {
+-        return new Tracer();
+-    }
+-
+-    public static class Tracer extends DDRenderer {
+-        void doDrawLine(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int x1, int y1, int x2, int y2)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawLine");
+-            super.doDrawLine(sData, clip, comp, color, x1, y1, x2, y2);
+-        }
+-        void doDrawRect(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int x, int y, int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawRect");
+-            super.doDrawRect(sData, clip, comp, color, x, y, w, h);
+-        }
+-        void doDrawRoundRect(SurfaceData sData,
+-                             Region clip, Composite comp, int color,
+-                             int x, int y, int w, int h,
+-                             int arcW, int arcH)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawRoundRect");
+-            super.doDrawRoundRect(sData, clip, comp, color,
+-                                  x, y, w, h, arcW, arcH);
+-        }
+-        void doDrawOval(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int x, int y, int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawOval");
+-            super.doDrawOval(sData, clip, comp, color, x, y, w, h);
+-        }
+-        void doDrawArc(SurfaceData sData,
+-                       Region clip, Composite comp, int color,
+-                       int x, int y, int w, int h,
+-                       int angleStart, int angleExtent)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawArc");
+-            super.doDrawArc(sData, clip, comp, color, x, y, w, h,
+-                            angleStart, angleExtent);
+-        }
+-        void doDrawPoly(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int transx, int transy,
+-                        int[] xpoints, int[] ypoints,
+-                        int npoints, boolean isclosed)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIDrawPoly");
+-            super.doDrawPoly(sData, clip, comp, color, transx, transy,
+-                             xpoints, ypoints, npoints, isclosed);
+-        }
+-        void doFillRect(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int x, int y, int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIFillRect");
+-            super.doFillRect(sData, clip, comp, color, x, y, w, h);
+-        }
+-        void doFillRoundRect(SurfaceData sData,
+-                             Region clip, Composite comp, int color,
+-                             int x, int y, int w, int h,
+-                             int arcW, int arcH)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIFillRoundRect");
+-            super.doFillRoundRect(sData, clip, comp, color,
+-                                  x, y, w, h, arcW, arcH);
+-        }
+-        void doFillOval(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int x, int y, int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIFillOval");
+-            super.doFillOval(sData, clip, comp, color, x, y, w, h);
+-        }
+-        void doFillArc(SurfaceData sData,
+-                       Region clip, Composite comp, int color,
+-                       int x, int y, int w, int h,
+-                       int angleStart, int angleExtent)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIFillArc");
+-            super.doFillArc(sData, clip, comp, color, x, y, w, h,
+-                            angleStart, angleExtent);
+-        }
+-        void doFillPoly(SurfaceData sData,
+-                        Region clip, Composite comp, int color,
+-                        int transx, int transy,
+-                        int[] xpoints, int[] ypoints,
+-                        int npoints)
+-        {
+-            GraphicsPrimitive.tracePrimitive("GDIFillPoly");
+-            super.doFillPoly(sData, clip, comp, color, transx, transy,
+-                             xpoints, ypoints, npoints);
+-        }
+-        void doShape(SurfaceData sData,
+-                     Region clip, Composite comp, int color,
+-                     int transX, int transY,
+-                     Path2D.Float p2df, boolean isfill)
+-        {
+-            GraphicsPrimitive.tracePrimitive(isfill
+-                                             ? "GDIFillShape"
+-                                             : "GDIDrawShape");
+-            super.doShape(sData, clip, comp, color,
+-                          transX, transY, p2df, isfill);
+-        }
+-        public void devCopyArea(SurfaceData sData,
+-                                int srcx, int srcy,
+-                                int dx, int dy,
+-                                int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("DXCopyArea");
+-            super.devCopyArea(sData, srcx, srcy, dx, dy, w, h);
+-        }
+-        void doDrawLineDD(SurfaceData sData,
+-                          int color,
+-                          int x1, int y1, int x2, int y2)
+-        {
+-            GraphicsPrimitive.tracePrimitive("DXDrawLine");
+-            super.doDrawLineDD(sData, color, x1, y1, x2, y2);
+-        }
+-        void doFillRectDD(SurfaceData sData,
+-                          int color,
+-                          int left, int top,
+-                          int right, int bottom)
+-        {
+-            GraphicsPrimitive.tracePrimitive("DXFillRect");
+-            super.doFillRectDD(sData, color, left, top, right, bottom);
+-        }
+-        void doDrawRectDD(SurfaceData sData,
+-                          int color,
+-                          int x, int y, int w, int h)
+-        {
+-            GraphicsPrimitive.tracePrimitive("DXDrawRect");
+-            super.doDrawRectDD(sData, color, x, y, w, h);
+-        }
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/DDScaleLoops.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/DDScaleLoops.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,114 +0,0 @@
+-/*
+- * Copyright (c) 2001, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.loops.GraphicsPrimitiveMgr;
+-import sun.java2d.loops.GraphicsPrimitiveProxy;
+-import sun.java2d.loops.CompositeType;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.loops.ScaledBlit;
+-import sun.java2d.pipe.Region;
+-import sun.java2d.SurfaceData;
+-import java.awt.Composite;
+-
+-/**
+- * DDScaleLoops
+- *
+- * This class accelerates ScaledBlits between two DirectDraw surfaces.  Since
+- * the onscreen surface is of that type and some of the offscreen surfaces
+- * may be of that type (if they were created in a SurfaceDataProxy), then
+- * this type of ScaledBlit will accelerated double-buffer copies between those
+- * two surfaces.
+-*/
+-public class DDScaleLoops extends ScaledBlit {
+-    private ScaledBlit swblit;
+-
+-    public static void register()
+-    {
+-        GraphicsPrimitive[] primitives = {
+-            new DDScaleLoops(Win32SurfaceData.IntRgbDD),
+-            new DDScaleLoops(Win32SurfaceData.Ushort565RgbDD),
+-            new DDScaleLoops(Win32SurfaceData.IntRgbxDD),
+-            new DDScaleLoops(Win32SurfaceData.Ushort555RgbxDD),
+-            new DDScaleLoops(Win32SurfaceData.Ushort555RgbDD),
+-            new DDScaleLoops(Win32SurfaceData.ByteIndexedOpaqueDD),
+-            new DDScaleLoops(Win32SurfaceData.ThreeByteBgrDD)
+-        };
+-        GraphicsPrimitiveMgr.register(primitives);
+-    }
+-
+-    public DDScaleLoops(SurfaceType surfType) {
+-        super(surfType, CompositeType.SrcNoEa, surfType);
+-    }
+-
+-    /**
+-     * Scale
+-     * This native method is where all of the work happens in the
+-     * accelerated ScaledBlit for the scaling case.
+-     */
+-    public native void Scale(SurfaceData src, SurfaceData dst,
+-                             Composite comp, int sx, int sy,
+-                             int dx, int dy, int sw, int sh,
+-                             int dw, int dh);
+-
+-    public void Scale(SurfaceData src, SurfaceData dst,
+-                      Composite comp, Region clip,
+-                      int sx1, int sy1,
+-                      int sx2, int sy2,
+-                      double dx1, double dy1,
+-                      double dx2, double dy2)
+-    {
+-        // REMIND: We can still do it if the clip equals the device
+-        // bounds for a destination window, but this logic rejects
+-        // that case...
+-        int dx = (int) Math.round(dx1);
+-        int dy = (int) Math.round(dy1);
+-        int dw = (int) Math.round(dx2) - dx;
+-        int dh = (int) Math.round(dy2) - dy;
+-        if (clip.encompassesXYWH(dx, dy, dw, dh)) {
+-            // Note that this rounding creates inaccuracies, but these
+-            // loops are disabled by default until a user specifically
+-            // enables them so this rounding behavior can be one of
+-            // the drawbacks that the user accepts when enabling this
+-            // non-standard feature.
+-            // If we should ever want to turn them on by default then
+-            // we will need to decide what better handling to put here.
+-            Scale(src, dst, comp, sx1, sy1, dx, dy, sx2-sx1, sy2-sy1, dw, dh);
+-        } else {
+-            if (swblit == null) {
+-                // REMIND: This assumes that the DD surface types are
+-                // directly derived from a non-DD type that has a loop.
+-                swblit = ScaledBlit.getFromCache(getSourceType().getSuperType(),
+-                                                 getCompositeType(),
+-                                                 getDestType().getSuperType());
+-            }
+-            swblit.Scale(src, dst, comp, clip,
+-                         sx1, sy1, sx2, sy2,
+-                         dx1, dy1, dx2, dy2);
+-        }
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/GDIBlitLoops.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIBlitLoops.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
@@ -15258,9 +16087,9 @@
          };
          GraphicsPrimitiveMgr.register(primitives);
      }
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,354 @@
 +/*
 + * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -15616,9 +16445,1823 @@
 +        return peer;
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java openjdk/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java
---- openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/Win32OffScreenSurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/Win32OffScreenSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,459 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-import java.awt.GraphicsConfiguration;
+-import java.awt.Image;
+-import java.awt.Rectangle;
+-import java.awt.Transparency;
+-import java.awt.color.ColorSpace;
+-import java.awt.image.ColorModel;
+-import java.awt.image.ComponentColorModel;
+-import java.awt.image.DirectColorModel;
+-import java.awt.image.IndexColorModel;
+-import java.awt.image.Raster;
+-
+-import sun.awt.SunHints;
+-import sun.awt.Win32GraphicsConfig;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.awt.image.SurfaceManager;
+-import sun.awt.image.SunVolatileImage;
+-import sun.awt.image.WritableRasterNative;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.SurfaceDataProxy;
+-import sun.java2d.loops.CompositeType;
+-import sun.java2d.pipe.PixelToShapeConverter;
+-import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.loops.RenderLoops;
+-import sun.java2d.pipe.Region;
+-
+-/**
+- * Win32OffScreenSurfaceData
+- *
+- * This class implements a hardware-accelerated video memory surface.  It uses
+- * a custom renderer (DDRenderer) to render via DirectDraw into the
+- * surface and uses a custom Blit loop (DDBlitLoops) to copy between
+- * two hardware-accelerated surfaces (including the screen).
+- */
+-public class Win32OffScreenSurfaceData extends SurfaceData {
+-
+-    protected int width;
+-    protected int height;
+-    protected int transparency;
+-
+-    protected GraphicsConfiguration graphicsConfig;
+-    protected Image image;
+-    protected RenderLoops solidloops;
+-    private boolean ddSurfacePunted = false;
+-
+-    private static native void initIDs();
+-
+-    static {
+-        initIDs();
+-        // REMIND: This isn't really thought-out; if the user doesn't have or
+-        // doesn't want ddraw then we should not even have this surface type
+-        // in the loop
+-        if (WindowsFlags.isDDEnabled() && WindowsFlags.isDDOffscreenEnabled()) {
+-            if (WindowsFlags.isDDBlitEnabled()) {
+-                // Register out hardware-accelerated Blit loops
+-                DDBlitLoops.register();
+-            }
+-            if (WindowsFlags.isDDScaleEnabled()) {
+-                DDScaleLoops.register();
+-            }
+-        }
+-    }
+-
+-    public static SurfaceType getSurfaceType(ColorModel cm, int transparency) {
+-        boolean transparent = (transparency == Transparency.BITMASK);
+-        switch (cm.getPixelSize()) {
+-        case 32:
+-        case 24:
+-            if (cm instanceof DirectColorModel) {
+-                if (((DirectColorModel)cm).getRedMask() == 0xff0000) {
+-                    return transparent ? Win32SurfaceData.IntRgbDD_BM :
+-                                         Win32SurfaceData.IntRgbDD;
+-                } else {
+-                    return transparent ? Win32SurfaceData.IntRgbxDD_BM :
+-                                         Win32SurfaceData.IntRgbxDD;
+-                }
+-            } else {
+-                return transparent ? Win32SurfaceData.ThreeByteBgrDD_BM :
+-                                     Win32SurfaceData.ThreeByteBgrDD;
+-            }
+-        case 15:
+-            return transparent ? Win32SurfaceData.Ushort555RgbDD_BM :
+-                                 Win32SurfaceData.Ushort555RgbDD;
+-        case 16:
+-            if ((cm instanceof DirectColorModel) &&
+-                (((DirectColorModel)cm).getBlueMask() == 0x3e))
+-            {
+-                return transparent ? Win32SurfaceData.Ushort555RgbxDD_BM :
+-                                     Win32SurfaceData.Ushort555RgbxDD;
+-            } else {
+-                return transparent ? Win32SurfaceData.Ushort565RgbDD_BM :
+-                                     Win32SurfaceData.Ushort565RgbDD;
+-            }
+-        case 8:
+-            if (cm.getColorSpace().getType() == ColorSpace.TYPE_GRAY &&
+-                cm instanceof ComponentColorModel) {
+-                return transparent ? Win32SurfaceData.ByteGrayDD_BM :
+-                                     Win32SurfaceData.ByteGrayDD;
+-            } else if (cm instanceof IndexColorModel &&
+-                       isOpaqueGray((IndexColorModel)cm)) {
+-                return transparent ? Win32SurfaceData.Index8GrayDD_BM :
+-                                     Win32SurfaceData.Index8GrayDD;
+-            } else {
+-                return transparent ? Win32SurfaceData.ByteIndexedDD_BM :
+-                                     Win32SurfaceData.ByteIndexedOpaqueDD;
+-            }
+-        default:
+-            throw new sun.java2d.InvalidPipeException("Unsupported bit " +
+-                                                      "depth: " +
+-                                                      cm.getPixelSize());
+-        }
+-    }
+-
+-    @Override
+-    public SurfaceDataProxy makeProxyFor(SurfaceData srcData) {
+-        Win32GraphicsConfig wgc = (Win32GraphicsConfig) graphicsConfig;
+-        return Win32SurfaceDataProxy.createProxy(srcData, wgc);
+-    }
+-
+-    public static Win32OffScreenSurfaceData
+-        createData(int width, int height,
+-                   ColorModel cm, Win32GraphicsConfig gc,
+-                   Image image, int transparency)
+-    {
+-        // Win32OSD doesn't support acceleration of translucent images
+-        if (transparency == Transparency.TRANSLUCENT) {
+-            return null;
+-        }
+-
+-
+-        Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
+-        if (!gd.isOffscreenAccelerationEnabled())
+-        {
+-            // If acceleration for this type of image is disabled on this
+-            // device, do not create an accelerated surface type
+-            return null;
+-        }
+-
+-        return new Win32OffScreenSurfaceData(width, height,
+-                                             getSurfaceType(cm, transparency),
+-                                             cm, gc, image, transparency,
+-                                             gd.getScreen());
+-    }
+-
+-    protected static DDRenderer ddPipe;
+-    protected static PixelToShapeConverter ddTxPipe;
+-
+-    static {
+-        ddPipe = new DDRenderer();
+-        if (GraphicsPrimitive.tracingEnabled()) {
+-            ddPipe = ddPipe.traceWrapDD();
+-        }
+-        ddTxPipe = new PixelToShapeConverter(ddPipe);
+-    }
+-
+-    public void validatePipe(SunGraphics2D sg2d) {
+-        if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON &&
+-            sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
+-            sg2d.compositeState <= sg2d.COMP_ISCOPY &&
+-            sg2d.clipState != sg2d.CLIP_SHAPE &&
+-            transparency != Transparency.TRANSLUCENT)
+-        {
+-            PixelToShapeConverter txPipe;
+-            DDRenderer nontxPipe;
+-            txPipe    = ddTxPipe;
+-            nontxPipe = ddPipe;
+-            sg2d.imagepipe = imagepipe;
+-            if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) {
+-                sg2d.drawpipe = txPipe;
+-                sg2d.fillpipe = txPipe;
+-            } else if (sg2d.strokeState != sg2d.STROKE_THIN){
+-                sg2d.drawpipe = txPipe;
+-                sg2d.fillpipe = nontxPipe;
+-            } else {
+-                sg2d.drawpipe = nontxPipe;
+-                sg2d.fillpipe = nontxPipe;
+-            }
+-            sg2d.shapepipe = nontxPipe;
+-            switch (sg2d.textAntialiasHint) {
+-
+-            case SunHints.INTVAL_TEXT_ANTIALIAS_DEFAULT:
+-                /* equate DEFAULT to OFF which it is for us */
+-            case SunHints.INTVAL_TEXT_ANTIALIAS_OFF:
+-                sg2d.textpipe = solidTextRenderer;
+-                break;
+-
+-            case SunHints.INTVAL_TEXT_ANTIALIAS_ON:
+-                sg2d.textpipe = aaTextRenderer;
+-                break;
+-
+-            default:
+-                switch (sg2d.getFontInfo().aaHint) {
+-
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_HRGB:
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_VRGB:
+-                    sg2d.textpipe = lcdTextRenderer;
+-                    break;
+-
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_ON:
+-                    sg2d.textpipe = aaTextRenderer;
+-                    break;
+-
+-                default:
+-                    sg2d.textpipe = solidTextRenderer;
+-                }
+-            }
+-            // This is needed for AA text.
+-            // Note that even a SolidTextRenderer can dispatch AA text
+-            // if a GlyphVector overrides the AA setting.
+-            sg2d.loops = solidloops;
+-        } else {
+-            super.validatePipe(sg2d);
+-        }
+-    }
+-
+-    public static boolean isDDScaleEnabled() {
+-        return WindowsFlags.isDDScaleEnabled();
+-    }
+-
+-    private WritableRasterNative wrn = null;
+-    public synchronized Raster getRaster(int x, int y, int w, int h) {
+-        if (wrn == null) {
+-            wrn = WritableRasterNative.createNativeRaster(getColorModel(),
+-                                                          this,
+-                                                          width, height);
+-            if (wrn == null) {
+-                throw new InternalError("Unable to create native raster");
+-            }
+-        }
+-
+-        return wrn;
+-    }
+-
+-    public RenderLoops getRenderLoops(SunGraphics2D sg2d) {
+-        if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
+-            sg2d.compositeState <= sg2d.COMP_ISCOPY)
+-        {
+-            return solidloops;
+-        }
+-        return super.getRenderLoops(sg2d);
+-    }
+-
+-    public GraphicsConfiguration getDeviceConfiguration() {
+-        return graphicsConfig;
+-    }
+-
+-    /**
+-     * Initializes the native Ops pointer.
+-     */
+-    private native void initOps(int depth, int transparency);
+-
+-    /**
+-     * This native method creates the offscreen surface in video memory and
+-     * (if necessary) initializes DirectDraw
+-     */
+-    private native void initSurface(int depth, int width, int height,
+-                                    int screen,
+-                                    boolean isVolatile,
+-                                    int transparency);
+-
+-    public native void restoreSurface();
+-
+-    /**
+-     * Non-public constructor.  Use createData() to create an object.
+-     *
+-     * This constructor is used to house the common construction
+-     * code shared between the creation of Win32OSSD objects
+-     * and subclasses of Win32OSSD (such as D3DSurfaceData
+-     * and WinBackBufferSurfaceData).
+-     *
+-     * It calls the common constructor in the parent, and then
+-     * initializes other shared Win32 data.
+-     */
+-    protected Win32OffScreenSurfaceData(int width, int height,
+-                                        SurfaceType sType, ColorModel cm,
+-                                        GraphicsConfiguration gc,
+-                                        Image image, int transparency)
+-    {
+-        super(sType, cm);
+-        this.width = width;
+-        this.height = height;
+-        this.graphicsConfig = gc;
+-        this.image = image;
+-        this.transparency = transparency;
+-        this.solidloops =
+-            ((Win32GraphicsConfig)graphicsConfig).getSolidLoops(sType);
+-        initOps(cm.getPixelSize(), transparency);
+-    }
+-
+-    /**
+-     * Private constructor.  Use createData() to create an object.
+-     *
+-     * This constructor calls the common constructor above and then
+-     * performs the specific initialization of the Win32Surface.
+-     */
+-    private Win32OffScreenSurfaceData(int width, int height,
+-                                      SurfaceType sType, ColorModel cm,
+-                                      Win32GraphicsConfig gc,
+-                                      Image image, int transparency,
+-                                      int screen)
+-    {
+-        this(width, height, sType, cm, gc, image, transparency);
+-        initSurface(cm.getPixelSize(), width, height, screen,
+-                    (image instanceof SunVolatileImage), transparency);
+-        setBlitProxyKey(gc.getProxyKey());
+-    }
+-
+-    /**
+-     * Need this since the surface data is created with
+-     * the color model of the target GC, which is always
+-     * opaque. But in SunGraphics2D.blitSD we choose loops
+-     * based on the transparency on the source SD, so
+-     * we could choose wrong loop (blit instead of blitbg,
+-     * for example, which will cause problems in transparent
+-     * case).
+-     */
+-    public int getTransparency() {
+-        return transparency;
+-    }
+-
+-    /**
+-     * When someone asks for a new surface data, we punt to our
+-     * container image which will attempt to restore the contents
+-     * of this surface or, failing that, will return null.
+-     */
+-    public SurfaceData getReplacement() {
+-        return restoreContents(image);
+-    }
+-
+-    public Rectangle getBounds() {
+-        return new Rectangle(width, height);
+-    }
+-
+-    protected native void nativeInvalidate();
+-
+-    public void invalidate() {
+-        if (isValid()) {
+-            synchronized (this) {
+-                wrn = null;
+-            }
+-            nativeInvalidate();
+-            super.invalidate();
+-        }
+-    }
+-
+-    public native void setTransparentPixel(int pixel);
+-
+-    public native void flush();
+-
+-    /**
+-     * Returns true if the native representation of this image has been
+-     * moved into ddraw system memory.  This happens when many reads
+-     * or read-modify-write operations are requested of that surface.
+-     * If we have moved that surface into system memory, we should note that
+-     * here so that someone wanting to copy something to this surface will
+-     * take that into account during that copy.
+-     */
+-    public boolean surfacePunted() {
+-        return ddSurfacePunted;
+-    }
+-
+-    protected void markSurfaceLost() {
+-        synchronized (this) {
+-            wrn = null;
+-        }
+-        setSurfaceLost(true);
+-        if (image != null) {
+-            // Inform the Volatile that it lost its accelerated surface
+-            SurfaceManager sMgr = SurfaceManager.getManager(image);
+-            sMgr.acceleratedSurfaceLost();
+-        }
+-    }
+-
+-    /**
+-     * This method is called from the native code if an unrecoverable
+-     * error has been detected.
+-     *
+-     * Marks the surface lost, and notifies the surface manager
+-     * that the DirectDraw acceleration for the corresponding image
+-     * should be disabled.
+-     */
+-    protected void disableDD() {
+-        markSurfaceLost();
+-        if (image != null) {
+-            SurfaceManager sMgr = SurfaceManager.getManager(image);
+-            // REMIND: yes, this is not pretty; the accelerationEnabled property
+-            // should be pulled up to SurfaceManager some day.
+-            if (sMgr instanceof WinVolatileSurfaceManager) {
+-                ((WinVolatileSurfaceManager)sMgr).setAccelerationEnabled(false);
+-            }
+-        }
+-        setBlitProxyKey(null);
+-    }
+-
+-    /**
+-     * Returns destination Image associated with this SurfaceData.
+-     */
+-    public Object getDestination() {
+-        return image;
+-    }
+-
+-    @Override
+-    public boolean copyArea(SunGraphics2D sg2d,
+-                            int x, int y, int w, int h, int dx, int dy)
+-    {
+-        CompositeType comptype = sg2d.imageComp;
+-        if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE &&
+-            sg2d.clipState != sg2d.CLIP_SHAPE &&
+-            (CompositeType.SrcOverNoEa.equals(comptype) ||
+-             CompositeType.SrcNoEa.equals(comptype)))
+-        {
+-            x += sg2d.transX;
+-            y += sg2d.transY;
+-            int dstx1 = x + dx;
+-            int dsty1 = y + dy;
+-            int dstx2 = dstx1 + w;
+-            int dsty2 = dsty1 + h;
+-            Region clip = sg2d.getCompClip();
+-            if (dstx1 < clip.getLoX()) dstx1 = clip.getLoX();
+-            if (dsty1 < clip.getLoY()) dsty1 = clip.getLoY();
+-            if (dstx2 > clip.getHiX()) dstx2 = clip.getHiX();
+-            if (dsty2 > clip.getHiY()) dsty2 = clip.getHiY();
+-            if (dstx1 < dstx2 && dsty1 < dsty2) {
+-                ddPipe.devCopyArea(this, dstx1 - dx, dsty1 - dy,
+-                                   dx, dy,
+-                                   dstx2 - dstx1, dsty2 - dsty1);
+-            }
+-            return true;
+-        }
+-        return false;
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/Win32SurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/Win32SurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,507 +0,0 @@
+-/*
+- * Copyright (c) 1999, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.Rectangle;
+-import java.awt.GraphicsConfiguration;
+-import java.awt.color.ColorSpace;
+-import java.awt.image.ColorModel;
+-import java.awt.image.ComponentColorModel;
+-import java.awt.image.DirectColorModel;
+-import java.awt.image.IndexColorModel;
+-import java.awt.image.Raster;
+-
+-import sun.awt.SunHints;
+-import sun.awt.Win32GraphicsConfig;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.awt.image.PixelConverter;
+-import sun.awt.windows.WComponentPeer;
+-import sun.awt.windows.WFileDialogPeer;
+-import sun.awt.windows.WPrintDialogPeer;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.SurfaceDataProxy;
+-import sun.java2d.pipe.Region;
+-import sun.java2d.pipe.PixelToShapeConverter;
+-import sun.java2d.loops.GraphicsPrimitive;
+-import sun.java2d.loops.SurfaceType;
+-import sun.java2d.loops.CompositeType;
+-import sun.java2d.loops.RenderLoops;
+-import sun.java2d.loops.XORComposite;
+-
+-public class Win32SurfaceData extends SurfaceData {
+-    WComponentPeer peer;
+-    private Win32GraphicsConfig graphicsConfig;
+-    private RenderLoops solidloops;
+-
+-    // GDI onscreen surface type
+-    public static final String
+-        DESC_GDI                = "GDI";
+-
+-    // DDraw offscreen surface type names
+-    public static final String
+-        DESC_INT_RGB_DD         = "Integer RGB DirectDraw";
+-
+-    public static final String
+-        DESC_INT_RGBx_DD        = "Integer RGBx DirectDraw";
+-
+-    public static final String
+-        DESC_USHORT_565_RGB_DD  = "Short 565 RGB DirectDraw";
+-
+-    public static final String
+-        DESC_USHORT_555_RGBx_DD = "Short 555 RGBx DirectDraw";
+-
+-    public static final String
+-        DESC_USHORT_555_RGB_DD  = "Short 555 RGB DirectDraw";
+-
+-    public static final String
+-        DESC_BYTE_INDEXED_OPAQUE_DD
+-                                = "8-bit Indexed (Opaque) DirectDraw";
+-
+-    public static final String
+-        DESC_BYTE_GRAY_DD       = "Byte Gray DirectDraw";
+-
+-    public static final String
+-        DESC_INDEX8_GRAY_DD     = "Index8 Gray DirectDraw";
+-
+-    public static final String
+-        DESC_3BYTE_BGR_DD       = "3 Byte BGR DirectDraw";
+-
+-    // Surface types with 1-bit transparency
+-    public static final String
+-        DESC_INT_RGB_DD_BM      = "Integer RGB DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_INT_RGBx_DD_BM     = "Integer RGBx DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_USHORT_565_RGB_DD_BM
+-                                = "Short 565 RGB DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_USHORT_555_RGBx_DD_BM
+-                                = "Short 555 RGBx DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_USHORT_555_RGB_DD_BM
+-                                = "Short 555 RGB DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_3BYTE_BGR_DD_BM    = "3 Byte BGR DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_BYTE_INDEXED_DD_BM = "8-bit Indexed DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_BYTE_GRAY_DD_BM    = "Byte Gray DirectDraw with 1 bit transp";
+-
+-    public static final String
+-        DESC_INDEX8_GRAY_DD_BM  = "Index8 Gray DirectDraw with 1 bit transp";
+-
+-
+-    // Gdi (screen) surface types
+-
+-    // Generic GDI surface type - used for registering all loops
+-    public static final SurfaceType AnyGdi =
+-        SurfaceType.IntRgb.deriveSubType(DESC_GDI);
+-
+-    public static final SurfaceType IntRgbGdi =
+-        SurfaceType.IntRgb.deriveSubType(DESC_GDI);
+-
+-    public static final SurfaceType Ushort565RgbGdi =
+-        SurfaceType.Ushort565Rgb.deriveSubType(DESC_GDI);
+-
+-    public static final SurfaceType Ushort555RgbGdi =
+-        SurfaceType.Ushort555Rgb.deriveSubType(DESC_GDI);
+-
+-    public static final SurfaceType ThreeByteBgrGdi =
+-        SurfaceType.ThreeByteBgr.deriveSubType(DESC_GDI);
+-
+-    // DDraw offscreen surface types
+-    public static final SurfaceType IntRgbDD =
+-        SurfaceType.IntRgb.deriveSubType(DESC_INT_RGB_DD);
+-
+-    public static final SurfaceType IntRgbxDD =
+-        SurfaceType.IntRgbx.deriveSubType(DESC_INT_RGBx_DD);
+-
+-    public static final SurfaceType Ushort565RgbDD =
+-        SurfaceType.Ushort565Rgb.deriveSubType(DESC_USHORT_565_RGB_DD);
+-
+-    public static final SurfaceType Ushort555RgbxDD =
+-        SurfaceType.Ushort555Rgbx.deriveSubType(DESC_USHORT_555_RGBx_DD);
+-
+-    public static final SurfaceType Ushort555RgbDD =
+-        SurfaceType.Ushort555Rgb.deriveSubType(DESC_USHORT_555_RGB_DD);
+-
+-    public static final SurfaceType ByteIndexedOpaqueDD =
+-        SurfaceType.ByteIndexedOpaque.deriveSubType(DESC_BYTE_INDEXED_OPAQUE_DD);
+-
+-    public static final SurfaceType ByteGrayDD =
+-        SurfaceType.ByteGray.deriveSubType(DESC_BYTE_GRAY_DD);
+-
+-    public static final SurfaceType Index8GrayDD =
+-        SurfaceType.Index8Gray.deriveSubType(DESC_INDEX8_GRAY_DD);
+-
+-    public static final SurfaceType ThreeByteBgrDD =
+-        SurfaceType.ThreeByteBgr.deriveSubType(DESC_3BYTE_BGR_DD);
+-
+-    // DDraw onscreen surface types (derive from Gdi surfaces)
+-    public static final SurfaceType IntRgbDDscreen =
+-        IntRgbGdi.deriveSubType(DESC_INT_RGB_DD);
+-
+-    public static final SurfaceType Ushort565RgbDDscreen =
+-        Ushort565RgbGdi.deriveSubType(DESC_USHORT_565_RGB_DD);
+-
+-    public static final SurfaceType Ushort555RgbDDscreen =
+-        Ushort555RgbGdi.deriveSubType(DESC_USHORT_555_RGB_DD);
+-
+-    public static final SurfaceType ThreeByteBgrDDscreen =
+-        ThreeByteBgrGdi.deriveSubType(DESC_3BYTE_BGR_DD);
+-
+-    // These screen types will not be handled as GDI surfaces
+-    // (we can do dithering to 8-bit surfaces faster than
+-    // GDI, so do not use GDI Blits to indexed surfaces.
+-    // And Rgbx surfaces are documented to not work with
+-    // GDI, so do not use GDI for that surface type either)
+-    public static final SurfaceType IntRgbxDDscreen = IntRgbxDD;
+-
+-    public static final SurfaceType Ushort555RgbxDDscreen = Ushort555RgbxDD;
+-
+-    public static final SurfaceType ByteIndexedOpaqueDDscreen =
+-        ByteIndexedOpaqueDD;
+-
+-    public static final SurfaceType ByteGrayDDscreen = ByteGrayDD;
+-
+-    public static final SurfaceType Index8GrayDDscreen = Index8GrayDD;
+-
+-    // Surface types with 1-bit transparency
+-    public static final SurfaceType IntRgbDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_INT_RGB_DD_BM,
+-                                         PixelConverter.Xrgb.instance);
+-
+-    public static final SurfaceType IntRgbxDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_INT_RGBx_DD_BM,
+-                                         PixelConverter.Rgbx.instance);
+-
+-    public static final SurfaceType Ushort565RgbDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_USHORT_565_RGB_DD_BM,
+-                                         PixelConverter.Ushort565Rgb.instance);
+-
+-    public static final SurfaceType Ushort555RgbxDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_USHORT_555_RGBx_DD_BM,
+-                                         PixelConverter.Ushort555Rgbx.instance);
+-
+-    public static final SurfaceType Ushort555RgbDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_USHORT_555_RGB_DD_BM,
+-                                         PixelConverter.Ushort555Rgb.instance);
+-
+-    public static final SurfaceType ByteIndexedDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_BYTE_INDEXED_DD_BM);
+-
+-    public static final SurfaceType ByteGrayDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_BYTE_GRAY_DD_BM);
+-
+-    public static final SurfaceType Index8GrayDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_INDEX8_GRAY_DD_BM);
+-
+-    public static final SurfaceType ThreeByteBgrDD_BM =
+-        SurfaceType.Custom.deriveSubType(DESC_3BYTE_BGR_DD_BM,
+-                                         PixelConverter.Xrgb.instance);
+-
+-    private static native void initIDs(Class xorComp);
+-
+-    static {
+-        initIDs(XORComposite.class);
+-        if (WindowsFlags.isGdiBlitEnabled()) {
+-            // Register our gdi Blit loops
+-            GDIBlitLoops.register();
+-        }
+-    }
+-
+-    public static SurfaceType getSurfaceType(ColorModel cm) {
+-        // REMIND: If ddraw not available, set sType to non-ddraw surface type
+-        switch (cm.getPixelSize()) {
+-        case 32:
+-        case 24:
+-            if (cm instanceof DirectColorModel) {
+-                if (((DirectColorModel)cm).getRedMask() == 0xff0000) {
+-                    return IntRgbDDscreen;
+-                } else {
+-                    return IntRgbxDDscreen;
+-                }
+-            } else {
+-                return ThreeByteBgrDDscreen;
+-            }
+-        case 15:
+-            return Ushort555RgbDDscreen;
+-        case 16:
+-            if ((cm instanceof DirectColorModel) &&
+-                (((DirectColorModel)cm).getBlueMask() == 0x3e))
+-            {
+-                return Ushort555RgbxDDscreen;
+-            } else {
+-                return Ushort565RgbDDscreen;
+-            }
+-        case 8:
+-            if (cm.getColorSpace().getType() == ColorSpace.TYPE_GRAY &&
+-                cm instanceof ComponentColorModel) {
+-                return ByteGrayDDscreen;
+-            } else if (cm instanceof IndexColorModel &&
+-                       isOpaqueGray((IndexColorModel)cm)) {
+-                return Index8GrayDDscreen;
+-            } else {
+-                return ByteIndexedOpaqueDDscreen;
+-            }
+-        default:
+-            throw new sun.java2d.InvalidPipeException("Unsupported bit " +
+-                                                      "depth: " +
+-                                                      cm.getPixelSize());
+-        }
+-    }
+-
+-    @Override
+-    public SurfaceDataProxy makeProxyFor(SurfaceData srcData) {
+-        // If D3D is enabled then we might have D3D capabilities, but
+-        // that pipeline is going away soon so we will not bother
+-        // creating the D3DProxy needed to manage those.  For now we
+-        // will just use DDraw cached surfaces in all cases.
+-        return Win32SurfaceDataProxy.createProxy(srcData, graphicsConfig);
+-    }
+-
+-    public static Win32SurfaceData createData(WComponentPeer peer,
+-                                            int numBuffers)
+-    {
+-        SurfaceType sType = getSurfaceType(peer.getDeviceColorModel());
+-        return new Win32SurfaceData(peer, sType, numBuffers);
+-    }
+-
+-
+-    public Raster getRaster(int x, int y, int w, int h) {
+-        throw new InternalError("not implemented yet");
+-    }
+-
+-    protected static GDIRenderer gdiPipe;
+-    protected static PixelToShapeConverter gdiTxPipe;
+-
+-    static {
+-        gdiPipe = new GDIRenderer();
+-        if (GraphicsPrimitive.tracingEnabled()) {
+-            gdiPipe = gdiPipe.traceWrap();
+-        }
+-        gdiTxPipe = new PixelToShapeConverter(gdiPipe);
+-    }
+-
+-    public void validatePipe(SunGraphics2D sg2d) {
+-        if (sg2d.antialiasHint != SunHints.INTVAL_ANTIALIAS_ON &&
+-            sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
+-            (sg2d.compositeState <= sg2d.COMP_ISCOPY ||
+-             sg2d.compositeState == sg2d.COMP_XOR))
+-        {
+-            if (sg2d.clipState == sg2d.CLIP_SHAPE) {
+-                // Do this to init textpipe correctly; we will override the
+-                // other non-text pipes below
+-                // REMIND: we should clean this up eventually instead of
+-                // having this work duplicated.
+-                super.validatePipe(sg2d);
+-            } else {
+-                switch (sg2d.textAntialiasHint) {
+-
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_DEFAULT:
+-                    /* equate DEFAULT to OFF which it is for us */
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_OFF:
+-                    sg2d.textpipe = solidTextRenderer;
+-                    break;
+-
+-                case SunHints.INTVAL_TEXT_ANTIALIAS_ON:
+-                    sg2d.textpipe = aaTextRenderer;
+-                    break;
+-
+-                default:
+-                    switch (sg2d.getFontInfo().aaHint) {
+-
+-                    case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_HRGB:
+-                    case SunHints.INTVAL_TEXT_ANTIALIAS_LCD_VRGB:
+-                        sg2d.textpipe = lcdTextRenderer;
+-                        break;
+-
+-                    case SunHints.INTVAL_TEXT_ANTIALIAS_ON:
+-                        sg2d.textpipe = aaTextRenderer;
+-                        break;
+-
+-                    default:
+-                        sg2d.textpipe = solidTextRenderer;
+-                    }
+-                }
+-            }
+-            sg2d.imagepipe = imagepipe;
+-            if (sg2d.transformState >= sg2d.TRANSFORM_TRANSLATESCALE) {
+-                sg2d.drawpipe = gdiTxPipe;
+-                sg2d.fillpipe = gdiTxPipe;
+-            } else if (sg2d.strokeState != sg2d.STROKE_THIN){
+-                sg2d.drawpipe = gdiTxPipe;
+-                sg2d.fillpipe = gdiPipe;
+-            } else {
+-                sg2d.drawpipe = gdiPipe;
+-                sg2d.fillpipe = gdiPipe;
+-            }
+-            sg2d.shapepipe = gdiPipe;
+-            // This is needed for AA text.
+-            // Note that even a SolidTextRenderer can dispatch AA text
+-            // if a GlyphVector overrides the AA setting.
+-            // We use getRenderLoops() rather than setting solidloops
+-            // directly so that we get the appropriate loops in XOR mode.
+-            sg2d.loops = getRenderLoops(sg2d);
+-        } else {
+-            super.validatePipe(sg2d);
+-        }
+-    }
+-
+-    public RenderLoops getRenderLoops(SunGraphics2D sg2d) {
+-        if (sg2d.paintState <= sg2d.PAINT_ALPHACOLOR &&
+-            sg2d.compositeState <= sg2d.COMP_ISCOPY)
+-        {
+-            return solidloops;
+-        }
+-        return super.getRenderLoops(sg2d);
+-    }
+-
+-    public GraphicsConfiguration getDeviceConfiguration() {
+-        return graphicsConfig;
+-    }
+-
+-    /**
+-     * Initializes the native Ops pointer.
+-     */
+-    private native void initOps(WComponentPeer peer, int depth, int redMask,
+-                                int greenMask, int blueMask, int numBuffers,
+-                                int screen);
+-
+-    public Win32SurfaceData(WComponentPeer peer, SurfaceType sType,
+-                            int numBuffers)
+-    {
+-        super(sType, peer.getDeviceColorModel());
+-        ColorModel cm = peer.getDeviceColorModel();
+-        this.peer = peer;
+-        int rMask = 0, gMask = 0, bMask = 0;
+-        int depth;
+-        switch (cm.getPixelSize()) {
+-        case 32:
+-        case 24:
+-            if (cm instanceof DirectColorModel) {
+-                depth = 32;
+-            } else {
+-                depth = 24;
+-            }
+-            break;
+-        default:
+-            depth = cm.getPixelSize();
+-        }
+-        if (cm instanceof DirectColorModel) {
+-            DirectColorModel dcm = (DirectColorModel)cm;
+-            rMask = dcm.getRedMask();
+-            gMask = dcm.getGreenMask();
+-            bMask = dcm.getBlueMask();
+-        }
+-        this.graphicsConfig =
+-            (Win32GraphicsConfig) peer.getGraphicsConfiguration();
+-        this.solidloops = graphicsConfig.getSolidLoops(sType);
+-        if (peer instanceof WFileDialogPeer ||
+-            peer instanceof WPrintDialogPeer )
+-        {
+-            // REMIND: Awful hack.  The right fix for this problem
+-            // would be for these type of Peers to not even use a
+-            // Win32SurfaceData object since they never do any
+-            // rendering.  Or they could actually implement the
+-            // functionality needed in initOps.  But this seems
+-            // to work for now.  See bug 4391928 for more info.
+-            return;
+-        }
+-        Win32GraphicsDevice gd =
+-            (Win32GraphicsDevice)graphicsConfig.getDevice();
+-        initOps(peer, depth, rMask, gMask, bMask, numBuffers, gd.getScreen());
+-        setBlitProxyKey(graphicsConfig.getProxyKey());
+-    }
+-
+-    public SurfaceData getReplacement() {
+-        return peer.getSurfaceData();
+-    }
+-
+-    public Rectangle getBounds() {
+-        Rectangle r = peer.getBounds();
+-        r.x = r.y = 0;
+-        return r;
+-    }
+-
+-    public boolean copyArea(SunGraphics2D sg2d,
+-                            int x, int y, int w, int h, int dx, int dy)
+-    {
+-        CompositeType comptype = sg2d.imageComp;
+-        if (sg2d.transformState < sg2d.TRANSFORM_TRANSLATESCALE &&
+-            sg2d.clipState != sg2d.CLIP_SHAPE &&
+-            (CompositeType.SrcOverNoEa.equals(comptype) ||
+-             CompositeType.SrcNoEa.equals(comptype)))
+-        {
+-            x += sg2d.transX;
+-            y += sg2d.transY;
+-            int dstx1 = x + dx;
+-            int dsty1 = y + dy;
+-            int dstx2 = dstx1 + w;
+-            int dsty2 = dsty1 + h;
+-            Region clip = sg2d.getCompClip();
+-            if (dstx1 < clip.getLoX()) dstx1 = clip.getLoX();
+-            if (dsty1 < clip.getLoY()) dsty1 = clip.getLoY();
+-            if (dstx2 > clip.getHiX()) dstx2 = clip.getHiX();
+-            if (dsty2 > clip.getHiY()) dsty2 = clip.getHiY();
+-            if (dstx1 < dstx2 && dsty1 < dsty2) {
+-                gdiPipe.devCopyArea(this, dstx1 - dx, dsty1 - dy,
+-                                    dx, dy,
+-                                    dstx2 - dstx1, dsty2 - dsty1);
+-            }
+-            return true;
+-        }
+-        return false;
+-    }
+-
+-    private native void invalidateSD();
+-    public void invalidate() {
+-        if (isValid()) {
+-            invalidateSD();
+-            super.invalidate();
+-            //peer.invalidateBackBuffer();
+-        }
+-    }
+-
+-    // This gets called when restoring the back buffer
+-    public native void restoreSurface();
+-    public native void flip(SurfaceData data);
+-
+-    /**
+-     * Returns destination Component associated with this SurfaceData.
+-     */
+-    public Object getDestination() {
+-        return peer.getTarget();
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/Win32SurfaceDataProxy.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/Win32SurfaceDataProxy.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,434 +0,0 @@
+-/*
+- * Copyright (c) 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.Color;
+-import java.awt.Transparency;
+-import java.awt.Rectangle;
+-import java.awt.image.ColorModel;
+-import java.awt.image.IndexColorModel;
+-import java.awt.image.DirectColorModel;
+-import java.awt.image.BufferedImage;
+-import java.awt.image.DataBuffer;
+-import java.awt.image.DataBufferInt;
+-
+-import sun.awt.Win32GraphicsConfig;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.awt.image.BufImgSurfaceData;
+-import sun.awt.image.SunWritableRaster;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.SurfaceDataProxy;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.StateTracker;
+-import sun.java2d.InvalidPipeException;
+-import sun.java2d.loops.CompositeType;
+-
+-/**
+- * The proxy class contains the logic for when to replace a
+- * SurfaceData with a cached X11 Pixmap and the code to create
+- * the accelerated surfaces.
+- */
+-public abstract class Win32SurfaceDataProxy extends SurfaceDataProxy {
+-    /**
+-     * Represents the maximum size (width * height) of an image that we should
+-     * scan for an unused color.  Any image larger than this would probably
+-     * require too much computation time.
+-     */
+-    private static final int MAX_SIZE = 65536;
+-
+-    public static SurfaceDataProxy createProxy(SurfaceData srcData,
+-                                               Win32GraphicsConfig dstConfig)
+-    {
+-        Win32GraphicsDevice wgd =
+-            (Win32GraphicsDevice) dstConfig.getDevice();
+-        if (!wgd.isDDEnabledOnDevice() ||
+-            srcData instanceof Win32SurfaceData ||
+-            srcData instanceof Win32OffScreenSurfaceData)
+-        {
+-            // If they are not on the same screen then we could cache the
+-            // blit by returning an instance of Opaque below, but this
+-            // only happens for VolatileImage blits to the wrong screen
+-            // which we make no promises on so we just punt to UNCACHED...
+-            return UNCACHED;
+-        }
+-
+-        ColorModel srcCM = srcData.getColorModel();
+-        int srcTransparency = srcCM.getTransparency();
+-
+-        if (srcTransparency == Transparency.OPAQUE) {
+-            return new Opaque(dstConfig);
+-        } else if (srcTransparency == Transparency.BITMASK) {
+-            if (Bitmask.isCompatible(srcCM, srcData)) {
+-                return new Bitmask(dstConfig);
+-            }
+-        }
+-
+-        return UNCACHED;
+-    }
+-
+-    int srcTransparency;
+-    Win32GraphicsConfig wgc;
+-
+-    public Win32SurfaceDataProxy(Win32GraphicsConfig wgc,
+-                                 int srcTransparency)
+-    {
+-        this.wgc = wgc;
+-        this.srcTransparency = srcTransparency;
+-        activateDisplayListener();
+-    }
+-
+-    @Override
+-    public SurfaceData validateSurfaceData(SurfaceData srcData,
+-                                           SurfaceData cachedData,
+-                                           int w, int h)
+-    {
+-        if (cachedData == null ||
+-            !cachedData.isValid() ||
+-            cachedData.isSurfaceLost())
+-        {
+-            // use the device's color model for ddraw surfaces
+-            ColorModel dstScreenCM = wgc.getDeviceColorModel();
+-            try {
+-                cachedData =
+-                    Win32OffScreenSurfaceData.createData(w, h,
+-                                                         dstScreenCM,
+-                                                         wgc, null,
+-                                                         srcTransparency);
+-            } catch (InvalidPipeException e) {
+-                Win32GraphicsDevice wgd = (Win32GraphicsDevice) wgc.getDevice();
+-                if (!wgd.isDDEnabledOnDevice()) {
+-                    invalidate();
+-                    flush();
+-                    return null;
+-                }
+-            }
+-        }
+-        return cachedData;
+-    }
+-
+-    /**
+-     * Proxy for opaque source images.
+-     */
+-    public static class Opaque extends Win32SurfaceDataProxy {
+-        static int TXMAX =
+-            (WindowsFlags.isDDScaleEnabled()
+-             ? SunGraphics2D.TRANSFORM_TRANSLATESCALE
+-             : SunGraphics2D.TRANSFORM_ANY_TRANSLATE);
+-
+-        public Opaque(Win32GraphicsConfig wgc) {
+-            super(wgc, Transparency.OPAQUE);
+-        }
+-
+-        @Override
+-        public boolean isSupportedOperation(SurfaceData srcData,
+-                                            int txtype,
+-                                            CompositeType comp,
+-                                            Color bgColor)
+-        {
+-            // we save a read from video memory for compositing
+-            // operations by copying from the buffered image sd
+-            return (txtype <= TXMAX &&
+-                    (CompositeType.SrcOverNoEa.equals(comp) ||
+-                     CompositeType.SrcNoEa.equals(comp)));
+-        }
+-    }
+-
+-    /**
+-     * Proxy for bitmask transparent source images.
+-     * This proxy can accelerate unscaled SrcOver copies with no bgColor.
+-     *
+-     * Note that this proxy plays some games with returning the srcData
+-     * from the validate method.  It needs to do this since the conditions
+-     * for caching an accelerated copy depend on many factors that can
+-     * change over time, including:
+-     *
+-     * - the depth of the display
+-     * - the availability of a transparent pixel
+-     */
+-    public static class Bitmask extends Win32SurfaceDataProxy {
+-        /**
+-         * Tests a source image ColorModel and SurfaceData to
+-         * see if they are of an appropriate size and type to
+-         * perform our transparent pixel searches.
+-         *
+-         * Note that some dynamic factors may occur which prevent
+-         * us from finding or using a transparent pixel.  These
+-         * are detailed above in the class comments.  We do not
+-         * test those conditions here, but rely on the Bitmask
+-         * proxy to verify those conditions on the fly.
+-         */
+-        public static boolean isCompatible(ColorModel srcCM,
+-                                           SurfaceData srcData)
+-        {
+-            if (srcCM instanceof IndexColorModel) {
+-                return true;
+-            } else if (srcCM instanceof DirectColorModel) {
+-                return isCompatibleDCM((DirectColorModel) srcCM, srcData);
+-            }
+-
+-            return false;
+-        }
+-
+-        /**
+-         * Tests a given DirectColorModel to make sure it is
+-         * compatible with the assumptions we make when scanning
+-         * a DCM image for a transparent pixel.
+-         */
+-        public static boolean isCompatibleDCM(DirectColorModel dcm,
+-                                              SurfaceData srcData)
+-        {
+-            // The BISD restriction is because we need to
+-            // examine the pixels to find a tranparent color
+-            if (!(srcData instanceof BufImgSurfaceData)) {
+-                return false;
+-            }
+-
+-            // The size restriction prevents us from wasting too
+-            // much time scanning large images for unused pixel values.
+-            Rectangle bounds = srcData.getBounds();
+-            // Using division instead of multiplication avoids overflow
+-            if (bounds.width <= 0 ||
+-                MAX_SIZE / bounds.width < bounds.height)
+-            {
+-                return false;
+-            }
+-
+-            // Below we use the pixels from the data buffer to map
+-            // directly to pixel values using the dstData.pixelFor()
+-            // method so the pixel format must be compatible with
+-            // ARGB or we could end up with bad results.  We assume
+-            // here that the destination is opaque and so only the
+-            // red, green, and blue masks matter.
+-            // These new checks for RGB masks are more correct,
+-            // but potentially reject the acceleration of some images
+-            // that we used to allow just because we cannot prove
+-            // that they will work OK.  If we ever had an INT_BGR
+-            // image for instance, would that have really failed here?
+-            // 565 and 555 screens will both keep equal numbers of
+-            // bits of red and blue, but will differ in the amount of
+-            // green they keep so INT_BGR might be safe, but if anyone
+-            // ever created an INT_RBG image then 555 and 565 might
+-            // differ in whether they thought a transparent pixel
+-            // was available.  Also, are there any other strange
+-            // screen formats where bizarre orderings of the RGB
+-            // would cause the tests below to make mistakes?
+-            return ((dcm.getPixelSize() == 25) &&
+-                    (dcm.getTransferType() == DataBuffer.TYPE_INT) &&
+-                    (dcm.getRedMask()   == 0x00ff0000) &&
+-                    (dcm.getGreenMask() == 0x0000ff00) &&
+-                    (dcm.getBlueMask()  == 0x000000ff));
+-        }
+-
+-        int transPixel;
+-        Color transColor;
+-
+-        // The real accelerated surface - only used when we can find
+-        // a transparent color.
+-        SurfaceData accelData;
+-
+-        public Bitmask(Win32GraphicsConfig wgc) {
+-            super(wgc, Transparency.BITMASK);
+-        }
+-
+-        @Override
+-        public boolean isSupportedOperation(SurfaceData srcData,
+-                                            int txtype,
+-                                            CompositeType comp,
+-                                            Color bgColor)
+-        {
+-            // We have accelerated loops only for blits with SrcOverNoEa
+-            // (no blit bg loops or blit loops with SrcNoEa)
+-            return (CompositeType.SrcOverNoEa.equals(comp) &&
+-                    bgColor == null &&
+-                    txtype < SunGraphics2D.TRANSFORM_TRANSLATESCALE);
+-        }
+-
+-        /**
+-         * Note that every time we update the surface we may or may
+-         * not find a transparent pixel depending on what was modified
+-         * in the source image since the last time we looked.
+-         * Our validation method saves the accelerated surface aside
+-         * in a different field so we can switch back and forth between
+-         * the accelerated version and null depending on whether we
+-         * find a transparent pixel.
+-         * Note that we also override getRetryTracker() and return a
+-         * tracker that tracks the source pixels so that we do not
+-         * try to revalidate until there are new pixels to be scanned.
+-         */
+-        @Override
+-        public SurfaceData validateSurfaceData(SurfaceData srcData,
+-                                               SurfaceData cachedData,
+-                                               int w, int h)
+-        {
+-            // Evaluate the dest screen pixel size every time
+-            ColorModel dstScreenCM = wgc.getDeviceColorModel();
+-            if (dstScreenCM.getPixelSize() <= 8) {
+-                return null;
+-            }
+-            accelData = super.validateSurfaceData(srcData, accelData, w, h);
+-            return (accelData != null &&
+-                    findTransparentPixel(srcData, accelData))
+-                ? accelData
+-                : null;
+-        }
+-
+-        @Override
+-        public StateTracker getRetryTracker(SurfaceData srcData) {
+-            // If we failed to validate, it is permanent until the
+-            // next change to srcData...
+-            return srcData.getStateTracker();
+-        }
+-
+-        @Override
+-        public void updateSurfaceData(SurfaceData srcData,
+-                                      SurfaceData dstData,
+-                                      int w, int h)
+-        {
+-            updateSurfaceDataBg(srcData, dstData, w, h, transColor);
+-        }
+-
+-        /**
+-         * Invoked when the cached surface should be dropped.
+-         * Overrides the base class implementation so we can invalidate
+-         * the accelData field instead of the cachedSD field.
+-         */
+-        @Override
+-        public synchronized void flush() {
+-            SurfaceData accelData = this.accelData;
+-            if (accelData != null) {
+-                this.accelData = null;
+-                accelData.flush();
+-            }
+-            super.flush();
+-        }
+-
+-        /**
+-         * The following constants determine the size of the histograms
+-         * used when searching for an unused color
+-         */
+-        private static final int ICM_HISTOGRAM_SIZE = 256;
+-        private static final int ICM_HISTOGRAM_MASK = ICM_HISTOGRAM_SIZE - 1;
+-        private static final int DCM_HISTOGRAM_SIZE = 1024;
+-        private static final int DCM_HISTOGRAM_MASK = DCM_HISTOGRAM_SIZE - 1;
+-
+-        /**
+-         * Attempts to find an unused pixel value in the image and if
+-         * successful, sets up the DirectDraw surface so that it uses
+-         * this value as its color key.
+-         */
+-        public boolean findTransparentPixel(SurfaceData srcData,
+-                                            SurfaceData accelData)
+-        {
+-            ColorModel srcCM = srcData.getColorModel();
+-            boolean success = false;
+-
+-            if (srcCM instanceof IndexColorModel) {
+-                success = findUnusedPixelICM((IndexColorModel) srcCM,
+-                                             accelData);
+-            } else if (srcCM instanceof DirectColorModel) {
+-                success = findUnusedPixelDCM((BufImgSurfaceData) srcData,
+-                                             accelData);
+-            }
+-
+-            if (success) {
+-                int rgb = accelData.rgbFor(transPixel);
+-                transColor = new Color(rgb);
+-                Win32OffScreenSurfaceData wossd =
+-                    (Win32OffScreenSurfaceData) accelData;
+-                wossd.setTransparentPixel(transPixel);
+-            } else {
+-                transColor = null;
+-            }
+-            return success;
+-        }
+-
+-        /**
+-         * Attempts to find an unused pixel value in the color map of an
+-         * IndexColorModel.  If successful, it returns that value (in the
+-         * ColorModel of the destination surface) or null otherwise.
+-         */
+-        private boolean findUnusedPixelICM(IndexColorModel icm,
+-                                           SurfaceData accelData) {
+-            int mapsize = icm.getMapSize();
+-            int[] histogram = new int[ICM_HISTOGRAM_SIZE];
+-            int[] cmap = new int[mapsize];
+-            icm.getRGBs(cmap);
+-
+-            // load up the histogram
+-            for (int i = 0; i < mapsize; i++) {
+-                int pixel = accelData.pixelFor(cmap[i]);
+-                histogram[pixel & ICM_HISTOGRAM_MASK]++;
+-            }
+-
+-            // find an empty histo-bucket
+-            for (int j = 0; j < histogram.length; j++) {
+-                if (histogram[j] == 0) {
+-                    transPixel = j;
+-                    return true;
+-                }
+-            }
+-
+-            return false;
+-        }
+-
+-        /**
+-         * Attempts to find an unused pixel value in an image with a
+-         * 25-bit DirectColorModel and a DataBuffer of TYPE_INT.
+-         * If successful, it returns that value (in the ColorModel
+-         * of the destination surface) or null otherwise.
+-         */
+-        private boolean findUnusedPixelDCM(BufImgSurfaceData bisd,
+-                                           SurfaceData accelData)
+-        {
+-            BufferedImage bimg = (BufferedImage) bisd.getDestination();
+-            DataBufferInt db =
+-                (DataBufferInt) bimg.getRaster().getDataBuffer();
+-            int[] pixels = SunWritableRaster.stealData(db, 0);
+-            int[] histogram = new int[DCM_HISTOGRAM_SIZE];
+-
+-            // load up the histogram
+-            // REMIND: we could possibly make this faster by keeping track
+-            // of the unique colors found, and only doing a pixelFor()
+-            // when we come across a new unique color
+-            // REMIND: We are assuming pixels are in ARGB format.  Is that
+-            // a safe assumption here?
+-            for (int i = 0; i < pixels.length; i++) {
+-                int pixel = accelData.pixelFor(pixels[i]);
+-                histogram[pixel & DCM_HISTOGRAM_MASK]++;
+-            }
+-
+-            // find an empty histo-bucket
+-            for (int j = 0; j < histogram.length; j++) {
+-                if (histogram[j] == 0) {
+-                    transPixel = j;
+-                    return true;
+-                }
+-            }
+-
+-            return false;
+-        }
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/WinBackBuffer.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/WinBackBuffer.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,101 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.Component;
+-import java.awt.GraphicsConfiguration;
+-import java.awt.ImageCapabilities;
+-import java.awt.image.ColorModel;
+-import java.awt.image.VolatileImage;
+-import sun.awt.image.SurfaceManager;
+-import sun.awt.image.SunVolatileImage;
+-import sun.awt.image.VolatileSurfaceManager;
+-import sun.java2d.SurfaceData;
+-
+-import sun.java2d.d3d.D3DBackBufferSurfaceData;
+-
+-public class WinBackBuffer extends SunVolatileImage {
+-
+-    /**
+-     * Create an image for an attached surface
+-     */
+-    public WinBackBuffer(Component c, Win32SurfaceData parentData) {
+-        super(c, c.getWidth(), c.getHeight(), parentData);
+-    }
+-
+-    @Override
+-    protected VolatileSurfaceManager createSurfaceManager(Object context,
+-                                                          ImageCapabilities caps)
+-    {
+-        return new WinBackBufferSurfaceManager(this, context);
+-    }
+-
+-    public Win32OffScreenSurfaceData getHWSurfaceData() {
+-        SurfaceData sd = SurfaceData.getPrimarySurfaceData(this);
+-        return (sd instanceof Win32OffScreenSurfaceData) ?
+-            (Win32OffScreenSurfaceData)sd : null;
+-    }
+-
+-    private class WinBackBufferSurfaceManager
+-        extends WinVolatileSurfaceManager
+-    {
+-        public WinBackBufferSurfaceManager(SunVolatileImage vImg,
+-                                           Object context)
+-        {
+-            super(vImg, context);
+-        }
+-
+-        protected Win32OffScreenSurfaceData createAccelSurface() {
+-            GraphicsConfiguration gc = vImg.getGraphicsConfig();
+-            ColorModel cm = getDeviceColorModel();
+-            Win32SurfaceData parent = (Win32SurfaceData)context;
+-
+-            Win32OffScreenSurfaceData ret =
+-                D3DBackBufferSurfaceData.createData(vImg.getWidth(),
+-                                                    vImg.getHeight(),
+-                                                    cm, gc, vImg, parent);
+-            if (ret == null) {
+-                ret = WinBackBufferSurfaceData.createData(vImg.getWidth(),
+-                                                          vImg.getHeight(),
+-                                                          cm, gc, vImg, parent);
+-            }
+-            return ret;
+-        }
+-
+-        /**
+-         * Removes this surface manager from the display change listeners.
+-         * Since the user don't have access to the VolatileImage
+-         * representing the backbuffer, we know that nobody but us
+-         * can call it. And we do it when the backbuffer is replaced.
+-         */
+-        public void flush() {
+-            sun.awt.Win32GraphicsEnvironment ge =
+-                    (sun.awt.Win32GraphicsEnvironment)
+-                    java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
+-            ge.removeDisplayChangedListener(this);
+-        }
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/WinBackBufferSurfaceData.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/WinBackBufferSurfaceData.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,71 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.GraphicsConfiguration;
+-import java.awt.Image;
+-import java.awt.Transparency;
+-import java.awt.image.ColorModel;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.java2d.loops.SurfaceType;
+-
+-public class WinBackBufferSurfaceData extends Win32OffScreenSurfaceData {
+-
+-    private Win32SurfaceData parentData;
+-
+-    /**
+-     * Private constructor.  Use createData() to create an object.
+-     */
+-    private WinBackBufferSurfaceData(int width, int height,
+-                                     SurfaceType sType, ColorModel cm,
+-                                     GraphicsConfiguration gc,
+-                                     Image image, int screen,
+-                                     Win32SurfaceData parentData)
+-    {
+-        super(width, height, sType, cm, gc, image, Transparency.OPAQUE);
+-        this.parentData = parentData;
+-        initSurface(cm.getPixelSize(), width, height, screen, parentData);
+-    }
+-
+-    private native void initSurface(int depth, int width, int height,
+-                                    int screen, Win32SurfaceData parentData);
+-
+-    public void restoreSurface() {
+-        parentData.restoreSurface();
+-    }
+-
+-    public static WinBackBufferSurfaceData
+-        createData(int width, int height,
+-                   ColorModel cm, GraphicsConfiguration gc, Image image,
+-                   Win32SurfaceData parentData)
+-    {
+-        Win32GraphicsDevice gd = (Win32GraphicsDevice)gc.getDevice();
+-        SurfaceType sType = getSurfaceType(cm, Transparency.OPAQUE);
+-        return new WinBackBufferSurfaceData(width, height, sType,
+-                                            cm, gc, image,
+-                                            gd.getScreen(), parentData);
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/WinVolatileSurfaceManager.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/WinVolatileSurfaceManager.java	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,218 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-package sun.java2d.windows;
+-
+-import java.awt.Color;
+-import java.awt.Component;
+-import java.awt.GraphicsConfiguration;
+-import java.awt.GraphicsEnvironment;
+-import java.awt.ImageCapabilities;
+-import java.awt.Transparency;
+-import java.awt.image.ColorModel;
+-import sun.awt.DisplayChangedListener;
+-import sun.awt.Win32GraphicsConfig;
+-import sun.awt.Win32GraphicsDevice;
+-import sun.awt.Win32GraphicsEnvironment;
+-import sun.awt.image.SunVolatileImage;
+-import sun.awt.image.VolatileSurfaceManager;
+-import sun.java2d.SunGraphics2D;
+-import sun.java2d.SurfaceData;
+-import sun.java2d.d3d.D3DSurfaceData;
+-
+-/**
+- * Windows platform implementation of the VolatileSurfaceManager class.
+- * Th superclass implementation handles the case of surface loss due
+- * to displayChange or other events.  This class attempts to create
+- * and use a hardware-based SurfaceData object (Win32OffScreenSurfaceData).
+- * If this object cannot be created or re-created as necessary, the
+- * class falls back to a software-based SurfaceData object
+- * (BufImgSurfaceData) that will be used until the hardware-based
+- * SurfaceData can be restored.
+- */
+-public class WinVolatileSurfaceManager
+-    extends VolatileSurfaceManager
+-{
+-    private boolean accelerationEnabled;
+-
+-    /**
+-     * Controls whether the manager should attempt to create a
+-     * D3DSurfaceData to accelerate the image.
+-     *
+-     * The default is the value of accelerationEnabled, but the value could
+-     * change during the life of this SurfaceManager.
+-     */
+-    private boolean d3dAccelerationEnabled;
+-
+-    public WinVolatileSurfaceManager(SunVolatileImage vImg, Object context) {
+-        super(vImg, context);
+-
+-        /* We enable acceleration only if all of the following are true:
+-         * - ddraw is enabled
+-         * - ddraw offscreen surfaces are enabled
+-         * - Either:
+-         *    - the image is opaque OR
+-         *    - the image is translucent and translucency acceleration
+-         *      is enabled on this device
+-         * There is no acceleration for bitmask images yet because the
+-         * process to convert transparent pixels into ddraw colorkey
+-         * values is not worth the effort and time.  We should eventually
+-         * accelerate transparent images the same way we do translucent
+-         * ones; through translucent textures (transparent pixels would
+-         * simply have an alpha of 0).
+-         */
+-        Win32GraphicsDevice gd =
+-            (Win32GraphicsDevice)vImg.getGraphicsConfig().getDevice();
+-        accelerationEnabled =
+-            WindowsFlags.isDDEnabled() &&
+-            WindowsFlags.isDDOffscreenEnabled() &&
+-            (vImg.getTransparency() == Transparency.OPAQUE);
+-        // REMIND: we don't really accelerate non-opaque VIs yet,
+-        // since we'll need RTT for that
+-//          ||
+-//           ((vImg.getTransparency() == Transparency.TRANSLUCENT) &&
+-//            WindowsFlags.isTranslucentAccelerationEnabled() &&
+-//            gd.isD3DEnabledOnDevice()));
+-
+-        d3dAccelerationEnabled = accelerationEnabled;
+-    }
+-
+-    protected SurfaceData createAccelSurface() {
+-        int transparency = vImg.getTransparency();
+-        ColorModel cm;
+-        Win32GraphicsConfig gc = (Win32GraphicsConfig) vImg.getGraphicsConfig();
+-        if (transparency != Transparency.TRANSLUCENT) {
+-            // REMIND: This will change when we accelerate bitmask VImages.
+-            // Currently, we can only reach here if the image is either
+-            // opaque or translucent
+-            cm = getDeviceColorModel();
+-        } else {
+-            cm = gc.getColorModel(Transparency.TRANSLUCENT);
+-        }
+-
+-        // createData will return null if the device doesnt support d3d surfaces
+-        SurfaceData ret = null;
+-        // avoid pulling in D3D classes unless d3d is enabled on the device
+-        if (d3dAccelerationEnabled &&
+-            ((Win32GraphicsDevice)gc.getDevice()).isD3DEnabledOnDevice())
+-        {
+-            try {
+-                ret =
+-                    D3DSurfaceData.createData(vImg.getWidth(), vImg.getHeight(),
+-                                              D3DSurfaceData.D3D_PLAIN_SURFACE,
+-                                              cm, gc, vImg);
+-            } catch (sun.java2d.InvalidPipeException e) {
+-                // exception is ignored, ret will be null so code
+-                // below will create a non-d3d surface
+-            }
+-        }
+-
+-        if (ret == null) {
+-            ret =  Win32OffScreenSurfaceData.createData(vImg.getWidth(),
+-                                                        vImg.getHeight(),
+-                                                        cm, gc, vImg,
+-                                                        transparency);
+-        }
+-        return ret;
+-    }
+-
+-    public boolean isAccelerationEnabled() {
+-        return accelerationEnabled;
+-    }
+-
+-    /**
+-     *
+-     * @param enabled if true, enable both DirectDraw and Direct3D
+-     * acceleration for this surface manager, disable both if false
+-     */
+-    public void setAccelerationEnabled(boolean enabled) {
+-        if (enabled != accelerationEnabled) {
+-            sdCurrent = getBackupSurface();
+-            sdAccel = null;
+-            accelerationEnabled = enabled;
+-        }
+-        d3dAccelerationEnabled = enabled;
+-    }
+-
+-    /**
+-     * Controls whether this surface manager should attempt to accelerate
+-     * the image using the Direct3D pipeline.
+-     *
+-     * If the state changes, sdCurrent will be reset to a backup surface,
+-     * and sdAccel will be nulled out so that a new surface is created
+-     * during the following validation.
+-     *
+-     * @param enabled if true, enable d3d acceleration for this SM,
+-     * disable otherwise.
+-     */
+-    public void setD3DAccelerationEnabled(boolean enabled) {
+-        if (enabled != d3dAccelerationEnabled) {
+-            sdCurrent = getBackupSurface();
+-            sdAccel = null;
+-            d3dAccelerationEnabled = enabled;
+-        }
+-    }
+-
+-
+-    /**
+-     * Create a vram-based SurfaceData object
+-     */
+-    public sun.java2d.SurfaceData initAcceleratedSurface() {
+-        SurfaceData sData;
+-
+-        try {
+-            sData = createAccelSurface();
+-        } catch (sun.java2d.InvalidPipeException e) {
+-            // Problems during creation.  Don't propagate the exception, just
+-            // set the hardware surface data to null; the software surface
+-            // data will be used in the meantime
+-            sData = null;
+-        }
+-        return sData;
+-    }
+-
+-    /**
+-     * Called from Win32OffScreenSurfaceData to notify us that our
+-     * accelerated surface has been lost.
+-     */
+-    public SurfaceData restoreContents() {
+-        acceleratedSurfaceLost();
+-        return super.restoreContents();
+-    }
+-
+-    protected ColorModel getDeviceColorModel() {
+-        Win32GraphicsConfig gc = (Win32GraphicsConfig)vImg.getGraphicsConfig();
+-        return gc.getDeviceColorModel();
+-    }
+-
+-    /**
+-     * Called from superclass to force restoration of this surface
+-     * during the validation process.  The method calls into the
+-     * hardware SurfaceData object to force the restore.
+-     */
+-    protected void restoreAcceleratedSurface() {
+-        ((Win32OffScreenSurfaceData)sdAccel).restoreSurface();
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/classes/sun/java2d/windows/WindowsFlags.java
+--- openjdk/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/classes/sun/java2d/windows/WindowsFlags.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -15861,26 +18504,28 @@
      public static boolean isD3DEnabled() {
          return d3dEnabled;
      }
-@@ -424,12 +304,12 @@
+@@ -424,14 +304,14 @@
          return d3dSet;
      }
  
--    public static boolean isD3DVerbose() {
--        return d3dVerbose;
 +    public static boolean isD3DOnScreenEnabled() {
 +        return d3dOnScreenEnabled;
++    }
++
+     public static boolean isD3DVerbose() {
+         return d3dVerbose;
      }
  
 -    public static int getD3DTexBpp() {
 -        return d3dTexBpp;
-+    public static boolean isD3DVerbose() {
-+        return d3dVerbose;
-     }
- 
+-    }
+-
      public static boolean isGdiBlitEnabled() {
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBadHardware.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBadHardware.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBadHardware.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBadHardware.h	2011-01-08 01:26:50.471202211 +0000
+         return gdiBlitEnabled;
+     }
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DBadHardware.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBadHardware.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,122 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -16004,9 +18649,9 @@
 +};
 +
 +#endif // D3DBADHARDWARE_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -16023,19 +18668,19 @@
  #include "jlong.h"
 -#include <sun_java2d_d3d_D3DBlitLoops.h>
 -#include "ddrawUtils.h"
--#include "GraphicsPrimitiveMgr.h"
--#include "Region.h"
- 
--#include "D3DUtils.h"
--#include "D3DContext.h"
++
 +#include "D3DPipeline.h"
 +
 +#include "SurfaceData.h"
 +#include "D3DBlitLoops.h"
 +#include "D3DRenderQueue.h"
- #include "D3DSurfaceData.h"
-+#include "GraphicsPrimitiveMgr.h"
-+
++#include "D3DSurfaceData.h"
+ #include "GraphicsPrimitiveMgr.h"
+-#include "Region.h"
+ 
+-#include "D3DUtils.h"
+-#include "D3DContext.h"
+-#include "D3DSurfaceData.h"
 +#include "IntArgb.h"
 +#include "IntArgbPre.h"
 +#include "IntRgb.h"
@@ -16071,26 +18716,24 @@
 -     jint hint,
 -     jint sx1, jint sy1, jint sx2, jint sy2,
 -     jfloat dx1, jfloat dy1, jfloat dx2, jfloat dy2)
--{
++SurfaceData_IntersectBounds(SurfaceDataBounds *dst, SurfaceDataBounds *src)
+ {
 -    static J2DLVERTEX quadVerts[4] = {
 -        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
 -        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
 -        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
 -        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f }
 -    };
--
--    J2dTraceLn(J2D_TRACE_INFO, "D3DBlitLoops_doTransform");
--    J2dTraceLn4(J2D_TRACE_VERBOSE, "  sx1=%-4d sy1=%-4d sx2=%-4d sy2=%-4d ",
--                sx1, sy1, sx2, sy2);
-+SurfaceData_IntersectBounds(SurfaceDataBounds *dst, SurfaceDataBounds *src)
-+{
 +    int t;
 +    GETMAX(dst->x1, src->x1);
 +    GETMAX(dst->y1, src->y1);
 +    GETMIN(dst->x2, src->x2);
 +    GETMIN(dst->y2, src->y2);
 +}
-+
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DBlitLoops_doTransform");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE, "  sx1=%-4d sy1=%-4d sx2=%-4d sy2=%-4d ",
+-                sx1, sy1, sx2, sy2);
 +JNIEXPORT void JNICALL
 +SurfaceData_IntersectBoundsXYXY(SurfaceDataBounds *bounds,
 +                                jint x1, jint y1, jint x2, jint y2)
@@ -16164,7 +18807,11 @@
 -                "  dx1=%4f dy1=%4f dx2=%4f dy2=%4f", dx1, dy1, dx2, dy2);
 +                " rect={%-4d, %-4d, %-4d, %-4d}",
 +                r.left, r.top, r.right, r.bottom);
-+
+ 
+-    if (sx2 <= sx1 || sy2 <= sy1 || dx2 <= dx1 || dy2 <= dy1) {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "D3DBlitLoops_doTransform: invalid dimensions");
+-        return;
 +    res = pSurface->LockRect(&lockedRect, &r, D3DLOCK_NOSYSLOCK);
 +    RETURN_STATUS_IF_FAILED(res);
 +    pSurface->GetDesc(&desc);
@@ -16175,8 +18822,7 @@
 +    srcInfo.bounds.x2 = srcWidth;
 +    srcInfo.bounds.y2 = srcHeight;
 +    srcInfo.scanStride = lockedRect.Pitch;
- 
--    if (sx2 <= sx1 || sy2 <= sy1 || dx2 <= dx1 || dy2 <= dy1) {
++
 +    void *pSrcBase = lockedRect.pBits;
 +    void *pDstBase = PtrCoord(pDstInfo->rasBase,
 +                              dstx, pDstInfo->pixelStride,
@@ -16217,11 +18863,24 @@
 +            J2dRlsTraceLn1(J2D_TRACE_ERROR,
 +                "D3DBL_CopySurfaceToIntArgbImage: unknown format %d",
 +                desc.Format);
-+    }
-+
+     }
+ 
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    if (d3dc == NULL) {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "D3DBlitLoops_doTransform: null device context");
+-        return;
+-    }
+-    Win32SDOps *srcOps = (Win32SDOps *)jlong_to_ptr(pSrcData);
+-    Win32SDOps *dstOps = (Win32SDOps *)jlong_to_ptr(pDstData);
 +    return pSurface->UnlockRect();
 +}
-+
+ 
+-    if (!srcOps->ddInstance || !dstOps->ddInstance) {
+-        // Some situations can cause us to fail on primary
+-        // creation, resulting in null lpSurface and null ddInstance
+-        // for a Win32Surface object.. Just noop this call in that case.
+-        return;
 +D3DPIPELINE_API HRESULT
 +D3DBL_CopyImageToIntXrgbSurface(SurfaceDataRasInfo *pSrcInfo,
 +                                int srctype,
@@ -16250,11 +18909,23 @@
 +    {
 +        dwLockFlags |= D3DLOCK_DISCARD;
 +        pR = NULL;
-+    }
-+
+     }
+ 
+-    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-    DDrawSurface *ddSrcSurface = srcOps->lpSurface;
+-    if (ddTargetSurface == NULL || ddSrcSurface == NULL) {
+-        return;
+-    }
+-    ddTargetSurface->GetExclusiveAccess();
+-    d3dc->GetExclusiveAccess();
 +    res = pDstSurface->LockRect(&lockedRect, pR, dwLockFlags);
 +    RETURN_STATUS_IF_FAILED(res);
-+
+ 
+-    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-    if (d3dDevice == NULL) {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return;
 +    ZeroMemory(&dstInfo, sizeof(SurfaceDataRasInfo));
 +    // dstInfo.bounds.x1 = 0;
 +    // dstInfo.bounds.y1 = 0;
@@ -16318,11 +18989,20 @@
 +            J2dRlsTraceLn1(J2D_TRACE_ERROR,
 +                           "D3DBL_CopyImageToIntXrgbSurface: unknown type %d",
 +                           srctype);
-+    }
-+
+     }
+ 
+-    float tw = (float)ddSrcSurface->GetDXSurface()->GetWidth();
+-    float th = (float)ddSrcSurface->GetDXSurface()->GetHeight();
+-    float tx1 = ((float)sx1) / tw;
+-    float ty1 = ((float)sy1) / th;
+-    float tx2 = ((float)sx2) / tw;
+-    float ty2 = ((float)sy2) / th;
 +    return pDstSurface->UnlockRect();
 +}
-+
+ 
+-    D3DU_INIT_VERTEX_QUAD(quadVerts, dx1, dy1, dx2, dy2,
+-                          d3dc->blitPolygonPixel,
+-                          tx1, ty1, tx2, ty2);
 +/**
 + * Inner loop used for copying a source "render-to" D3D "Surface" to a
 + * destination D3D "Surface".  Note that the same surface can
@@ -16341,7 +19021,13 @@
 +                        jint dx1, jint dy1, jint dx2, jint dy2)
 +{
 +    IDirect3DSurface9 *pSrc, *pDst;
-+
+ 
+-    if (hint == D3DSD_XFORM_BILINEAR) {
+-        d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR);
+-        d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_LINEAR);
+-    } else if (hint == D3DSD_XFORM_NEAREST_NEIGHBOR) {
+-        d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_POINT);
+-        d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_POINT);
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DBlitSurfaceToSurface");
 +
 +    RETURN_STATUS_IF_NULL(srcOps->pResource, E_FAIL);
@@ -16373,11 +19059,23 @@
 +        SurfaceData_IntersectBoundsXYXY(&dstBounds,
 +                                        clipRect.left, clipRect.top,
 +                                        clipRect.right, clipRect.bottom);
-+    }
-+
+     }
+ 
+-    HRESULT res;
+-    D3DU_PRIM2_LOOP_BEGIN(res, srcOps, dstOps);
+-    if (SUCCEEDED(res = d3dc->BeginScene(STATE_BLITOP))) {
+-        DXSurface *dxSurface = ddSrcSurface->GetDXSurface();
+-        if (SUCCEEDED(res = d3dc->SetTexture(dxSurface)))
+-        {
+-            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_J2DLVERTEX,
+-                                           quadVerts, 4, 0);
+-        }
+-        d3dc->EndScene(res);
 +    if (dstBounds.x1 != dx1) {
 +        sx1 += (int)((dstBounds.x1 - dx1) * (sw / dw));
-+    }
+     }
+-    D3DU_PRIM2_LOOP_END(env, res, srcOps, dstOps,
+-                        "DrawPrimitive(D3DPT_TRIANGLEFAN)");
 +    if (dstBounds.y1 != dy1) {
 +        sy1 += (int)((dstBounds.y1 - dy1) * (sh / dh));
 +    }
@@ -16387,7 +19085,9 @@
 +    if (dstBounds.y2 != dy2) {
 +        sy2 += (int)((dstBounds.y2 - dy2) * (sh / dh));
 +    }
-+
+ 
+-    d3dc->ReleaseExclusiveAccess();
+-    ddTargetSurface->ReleaseExclusiveAccess();
 +    // check if the rects are empty (StretchRect will fail if so)
 +    if (dstBounds.x1 >= dstBounds.x2 || dstBounds.y1 >= dstBounds.y2 ||
 +        sx1 >= sx2 || sy1 >= sy2)
@@ -16399,8 +19099,8 @@
 +    RECT dstRect = { dstBounds.x1, dstBounds.y1, dstBounds.x2, dstBounds.y2 };
 +
 +    return pd3dDevice->StretchRect(pSrc, &srcRect, pDst, &dstRect, hint);
-+}
-+
+ }
+ 
 +/**
 + * A convenience method for issuing DrawTexture calls depending on the
 + * hint. See detailed explanation below.
@@ -16485,7 +19185,7 @@
 +                                           tx1, ty1, tx2, ty2);
 +    }
 +    return res;
-+}
+ }
 +
 +/**
 + * Inner loop used for copying a source D3D "Texture" to a destination
@@ -16711,9 +19411,7 @@
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DBlitLoops_IsoBlit");
 +
 +    if (sw <= 0 || sh <= 0 || dw <= 0 || dh <= 0) {
-         J2dTraceLn(J2D_TRACE_WARNING,
--                   "D3DBlitLoops_doTransform: invalid dimensions");
--        return;
++        J2dTraceLn(J2D_TRACE_WARNING,
 +                   "D3DBlitLoops_IsoBlit: invalid dimensions");
 +        return E_FAIL;
 +    }
@@ -16794,7 +19492,7 @@
 +                                                 dx1, dy1, dx2, dy2);
 +            }
 +        }
-     }
++    }
 +    return res;
 +}
 +
@@ -16823,58 +19521,13 @@
 +    jint lockFlags = SD_LOCK_READ;
 +
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DBlitLoops_Blit");
- 
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    if (d3dc == NULL) {
++
 +    if (sw <= 0 || sh <= 0 || dw <= 0 || dh <= 0 || srctype < 0) {
-         J2dTraceLn(J2D_TRACE_WARNING,
--                   "D3DBlitLoops_doTransform: null device context");
--        return;
++        J2dTraceLn(J2D_TRACE_WARNING,
 +                   "D3DBlitLoops_Blit: invalid dimensions or srctype");
 +        return E_FAIL;
-     }
--    Win32SDOps *srcOps = (Win32SDOps *)jlong_to_ptr(pSrcData);
--    Win32SDOps *dstOps = (Win32SDOps *)jlong_to_ptr(pDstData);
- 
--    if (!srcOps->ddInstance || !dstOps->ddInstance) {
--        // Some situations can cause us to fail on primary
--        // creation, resulting in null lpSurface and null ddInstance
--        // for a Win32Surface object.. Just noop this call in that case.
--        return;
--    }
--
--    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--    DDrawSurface *ddSrcSurface = srcOps->lpSurface;
--    if (ddTargetSurface == NULL || ddSrcSurface == NULL) {
--        return;
--    }
--    ddTargetSurface->GetExclusiveAccess();
--    d3dc->GetExclusiveAccess();
--
--    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--    if (d3dDevice == NULL) {
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--        return;
--    }
--
--    float tw = (float)ddSrcSurface->GetDXSurface()->GetWidth();
--    float th = (float)ddSrcSurface->GetDXSurface()->GetHeight();
--    float tx1 = ((float)sx1) / tw;
--    float ty1 = ((float)sy1) / th;
--    float tx2 = ((float)sx2) / tw;
--    float ty2 = ((float)sy2) / th;
--
--    D3DU_INIT_VERTEX_QUAD(quadVerts, dx1, dy1, dx2, dy2,
--                          d3dc->blitPolygonPixel,
--                          tx1, ty1, tx2, ty2);
--
--    if (hint == D3DSD_XFORM_BILINEAR) {
--        d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_LINEAR);
--        d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_LINEAR);
--    } else if (hint == D3DSD_XFORM_NEAREST_NEIGHBOR) {
--        d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_POINT);
--        d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_POINT);
++    }
++
 +    RETURN_STATUS_IF_NULL(srcOps, E_FAIL);
 +    RETURN_STATUS_IF_NULL(dstOps, E_FAIL);
 +    RETURN_STATUS_IF_NULL(d3dc, E_FAIL);
@@ -16892,16 +19545,8 @@
 +        J2dTraceLn(J2D_TRACE_WARNING,
 +                   "D3DBlitLoops_Blit: could not acquire lock");
 +        return E_FAIL;
-     }
- 
--    HRESULT res;
--    D3DU_PRIM2_LOOP_BEGIN(res, srcOps, dstOps);
--    if (SUCCEEDED(res = d3dc->BeginScene(STATE_BLITOP))) {
--        DXSurface *dxSurface = ddSrcSurface->GetDXSurface();
--        if (SUCCEEDED(res = d3dc->SetTexture(dxSurface)))
--        {
--            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_J2DLVERTEX,
--                                           quadVerts, 4, 0);
++    }
++
 +    if (srcInfo.bounds.x2 > srcInfo.bounds.x1 &&
 +        srcInfo.bounds.y2 > srcInfo.bounds.y1)
 +    {
@@ -16944,12 +19589,9 @@
 +                                                 sx1, sy1, sx2, sy2,
 +                                                 dx1, dy1, dx2, dy2);
 +            }
-         }
--        d3dc->EndScene(res);
++        }
 +        SurfaceData_InvokeRelease(env, srcOps, &srcInfo);
-     }
--    D3DU_PRIM2_LOOP_END(env, res, srcOps, dstOps,
--                        "DrawPrimitive(D3DPT_TRIANGLEFAN)");
++    }
 +    SurfaceData_InvokeUnlock(env, srcOps, &srcInfo);
 +    return res;
 +}
@@ -17033,9 +19675,7 @@
 +            // to get the whole thing (50% is pulled out of a hat)
 +            BOOL fullRead = ((width * height) >= (srcw * srch * 0.5f));
 +            UINT lockSrcX = 0, lockSrcY = 0;
- 
--    d3dc->ReleaseExclusiveAccess();
--    ddTargetSurface->ReleaseExclusiveAccess();
++
 +            if (fullRead) {
 +                // read whole surface into a sysmem surface
 +                lockSrcX = srcx;
@@ -17079,8 +19719,8 @@
 +    }
 +    SurfaceData_InvokeUnlock(env, dstOps, &dstInfo);
 +    return res;
- }
- 
++}
++
 +HRESULT
 +D3DBlitLoops_CopyArea(JNIEnv *env,
 +                      D3DContext *d3dc, D3DSDOps *dstOps,
@@ -17195,34 +19835,34 @@
 +        }
 +    }
 +    return res;
- }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.h	2011-01-08 01:26:50.471202211 +0000
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DBlitLoops.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBlitLoops.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,89 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DBlitLoops_h_Included
@@ -17289,33 +19929,33 @@
 +                      jint dx, jint dy);
 +
 +#endif /* D3DBlitLoops_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,306 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include <jlong.h>
@@ -17599,33 +20239,33 @@
 +    // disable the lookup table on texture unit 1
 +    return d3dc->SetTexture(NULL, 1);
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.h	2011-01-08 01:26:50.471202211 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DBufImgOps.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DBufImgOps.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,78 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DBufImgOps_h_Included
@@ -17681,9 +20321,9 @@
 +HRESULT D3DBufImgOps_DisableLookupOp(D3DContext *oglc);
 +
 +#endif /* D3DBufImgOps_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DContext.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -17711,15 +20351,15 @@
 -#include "WindowsFlags.h"
 -
 -#include "Win32SurfaceData.h"
--#include "D3DSurfaceData.h"
++#include "D3DContext.h"
+ #include "D3DSurfaceData.h"
 -#include "D3DUtils.h"
- #include "D3DContext.h"
+-#include "D3DContext.h"
 -#include "D3DRuntimeTest.h"
 -
 -#include "IntDcm.h"
 -#include "IntArgb.h"
 -#include "Region.h"
-+#include "D3DSurfaceData.h"
 +#include "D3DBufImgOps.h"
 +#include "D3DPaints.h"
 +#include "D3DRenderQueue.h"
@@ -17752,10 +20392,21 @@
 -        d3dContext = NULL;
 -    }
 -    return d3dContext;
--}
--
++    ZeroMemory(m, sizeof(D3DMATRIX));
++    m->_11 =  2.0f/width;
++    m->_22 = -2.0f/height;
++    m->_33 =  0.5f;
++    m->_44 =  1.0f;
++
++    m->_41 = -1.0f;
++    m->_42 =  1.0f;
++    m->_43 =  0.5f;
+ }
+ 
 -D3DContext::D3DContext(DDraw *ddObject, DXObject* dxObject)
--{
++void
++D3DUtils_SetIdentityMatrix(D3DMATRIX *m)
+ {
 -    GetExclusiveAccess();
 -    J2dRlsTraceLn(J2D_TRACE_INFO, "D3DContext::D3DContext");
 -    J2dTraceLn2(J2D_TRACE_VERBOSE, "  ddObject=0x%d dxObject=0x%x",
@@ -17770,37 +20421,12 @@
 -    deviceCaps = J2D_D3D_FAILURE;
 -    bBeginScenePending = FALSE;
 -    jD3DContext = NULL;
-+    ZeroMemory(m, sizeof(D3DMATRIX));
-+    m->_11 =  2.0f/width;
-+    m->_22 = -2.0f/height;
-+    m->_33 =  0.5f;
-+    m->_44 =  1.0f;
-+
-+    m->_41 = -1.0f;
-+    m->_42 =  1.0f;
-+    m->_43 =  0.5f;
-+}
- 
+-
 -    this->dxObject = dxObject;
 -    this->ddObject = ddObject;
-+void
-+D3DUtils_SetIdentityMatrix(D3DMATRIX *m)
-+{
-+    m->_12 = m->_13 = m->_14 = m->_21 = m->_23 = m->_24 = 0.0f;
-+    m->_31 = m->_32 = m->_34 = m->_41 = m->_42 = m->_43 = 0.0f;
-+    m->_11 = m->_22 = m->_33 = m->_44 = 1.0f;
-+}
- 
+-
 -    if (SUCCEEDED(dxObject->CreateD3DObject(&d3dObject))) {
-+// the following methods are copies of the AffineTransform's class
-+// corresponding methods, with these changes to the indexes:
-+// 00 -> 11
-+// 11 -> 22
-+// 01 -> 21
-+// 10 -> 12
-+// 02 -> 41
-+// 12 -> 42
- 
+-
 -        // The device type we choose to use doesn't change over time
 -        pDeviceGUID = D3DUtils_SelectDeviceGUID(d3dObject);
 -        if (pDeviceGUID) {
@@ -17812,13 +20438,54 @@
 -                          "D3CCoD3DContext::D3DContext: Can't find "\
 -                          "suitable D3D device");
 -        }
+-    } else {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "D3DContext::D3DContext: Can't "\
+-                      "create IDirect3D7 interface");
+-    }
+-
+-    compState = sun_java2d_SunGraphics2D_COMP_ISCOPY;
+-    extraAlpha = 1.0f;
+-    colorPixel = 0xffffffff;
+-
+-    ReleaseExclusiveAccess();
++    m->_12 = m->_13 = m->_14 = m->_21 = m->_23 = m->_24 = 0.0f;
++    m->_31 = m->_32 = m->_34 = m->_41 = m->_42 = m->_43 = 0.0f;
++    m->_11 = m->_22 = m->_33 = m->_44 = 1.0f;
+ }
+ 
+-void D3DContext::SetJavaContext(JNIEnv *env, jobject newD3Dc) {
+-    GetExclusiveAccess();
++// the following methods are copies of the AffineTransform's class
++// corresponding methods, with these changes to the indexes:
++// 00 -> 11
++// 11 -> 22
++// 01 -> 21
++// 10 -> 12
++// 02 -> 41
++// 12 -> 42
+ 
+-    // Only bother if the new D3DContext object is different
+-    // from the one we already have reference to.
+-    if (env->IsSameObject(newD3Dc, jD3DContext) == FALSE) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "D3DContext:SetJavaContext: "\
+-                   "setting new java context object");
+-        // invalidate the old context, since we've got a new one
+-        InvalidateIfTarget(env, ddTargetSurface);
 +void
 +D3DUtils_2DConcatenateM(D3DMATRIX *m, D3DMATRIX *m1)
 +{
 +    float M0, M1;
 +    float T00, T10, T01, T11;
 +    float T02, T12;
-+
+ 
+-        if (jD3DContext != NULL) {
+-            env->DeleteWeakGlobalRef(jD3DContext);
+-        }
+-        // set the new java-level context object
+-        jD3DContext = env->NewWeakGlobalRef(newD3Dc);
+-    }
+-    ReleaseExclusiveAccess();
 +    T00 = m1->_11; T01 = m1->_21; T02 = m1->_41;
 +    T10 = m1->_12; T11 = m1->_22; T12 = m1->_42;
 +
@@ -17833,8 +20500,10 @@
 +    m->_12  = T00 * M0 + T10 * M1;
 +    m->_22  = T01 * M0 + T11 * M1;
 +    m->_42 += T02 * M0 + T12 * M1;
-+}
-+
+ }
+ 
+-void D3DContext::Release3DDevice() {
+-    GetExclusiveAccess();
 +#ifdef UPDATE_TX
 +
 +void
@@ -17895,21 +20564,14 @@
 +    if (fabs(det) < 0.0000000001f) {
 +        *px = 0.0f;
 +        *py = 0.0f;
-     } else {
--        J2dRlsTraceLn(J2D_TRACE_ERROR,
--                      "D3DContext::D3DContext: Can't "\
--                      "create IDirect3D7 interface");
++    } else {
 +        *px = (x * m->_22 - y * m->_21) / det;
 +        *py = (y * m->_11 - x * m->_12) / det;
-     }
-+}
- 
--    compState = sun_java2d_SunGraphics2D_COMP_ISCOPY;
--    extraAlpha = 1.0f;
--    colorPixel = 0xffffffff;
++    }
++}
++
 +#endif // UPDATE_TX
- 
--    ReleaseExclusiveAccess();
++
 +static void
 +D3DContext_DisposeShader(jlong programID)
 +{
@@ -17919,10 +20581,8 @@
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_DisposeShader");
 +
 +    SAFE_RELEASE(shader);
- }
- 
--void D3DContext::SetJavaContext(JNIEnv *env, jobject newD3Dc) {
--    GetExclusiveAccess();
++}
++
 +// static
 +HRESULT
 +D3DContext::CreateInstance(IDirect3D9 *pd3d9, UINT adapter, D3DContext **ppCtx)
@@ -17935,14 +20595,7 @@
 +    }
 +    return res;
 +}
- 
--    // Only bother if the new D3DContext object is different
--    // from the one we already have reference to.
--    if (env->IsSameObject(newD3Dc, jD3DContext) == FALSE) {
--        J2dTraceLn(J2D_TRACE_VERBOSE, "D3DContext:SetJavaContext: "\
--                   "setting new java context object");
--        // invalidate the old context, since we've got a new one
--        InvalidateIfTarget(env, ddTargetSurface);
++
 +D3DContext::D3DContext(IDirect3D9 *pd3d, UINT adapter)
 +{
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::D3DContext");
@@ -17970,9 +20623,7 @@
 +    pGrayscaleGlyphCache= NULL;
 +    lcdTextProgram = NULL;
 +    aaPgramProgram = NULL;
- 
--        if (jD3DContext != NULL) {
--            env->DeleteWeakGlobalRef(jD3DContext);
++
 +    contextCaps = CAPS_EMPTY;
 +    bBeginScenePending = FALSE;
 +
@@ -18012,18 +20663,13 @@
 +        if (pSyncRTRes != NULL) {
 +            pResourceMgr->ReleaseResource(pSyncRTRes);
 +            pSyncRTRes = NULL;
-         }
--        // set the new java-level context object
--        jD3DContext = env->NewWeakGlobalRef(newD3Dc);
++        }
 +        pResourceMgr->ReleaseDefPoolResources();
-     }
--    ReleaseExclusiveAccess();
++    }
 +    ZeroMemory(lastTexture, sizeof(lastTexture));
 +    ZeroMemory(lastTextureColorState, sizeof(lastTextureColorState));
- }
- 
--void D3DContext::Release3DDevice() {
--    GetExclusiveAccess();
++}
++
 +void D3DContext::ReleaseContextResources()
 +{
      J2dTraceLn1(J2D_TRACE_INFO,
@@ -18041,20 +20687,33 @@
 -    // later.
 -    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
 -    InvalidateIfTarget(env, ddTargetSurface);
--
++    D3DPipelineManager::NotifyAdapterEventListeners(devCaps.AdapterOrdinal,
++                                                    DEVICE_DISPOSED);
+ 
 -    // We don't need to release it since we didn't create it
 -    ddTargetSurface = NULL;
--
++    // dispose shader lists
++    ShaderList_Dispose(&convolvePrograms);
++    ShaderList_Dispose(&rescalePrograms);
++    ShaderList_Dispose(&lookupPrograms);
++    ShaderList_Dispose(&basicGradPrograms);
++    ShaderList_Dispose(&linearGradPrograms);
++    ShaderList_Dispose(&radialGradPrograms);
+ 
 -    // disable the use of this context until we ensure the capabilities
 -    // of the new device and run the tests
 -    deviceCaps = J2D_D3D_FAILURE;
--
++    SAFE_DELETE(pLCDGlyphCache);
++    SAFE_DELETE(pGrayscaleGlyphCache);
+ 
 -    if (lpMaskTexture != NULL) {
 -        lpMaskTexture->Release();
 -        delete lpMaskTexture;
 -        lpMaskTexture = NULL;
 -    }
--
++    SAFE_RELEASE(lcdTextProgram);
++    SAFE_RELEASE(aaPgramProgram);
+ 
 -    // reset the depth buffer format
 -    memset(&depthBufferFormat, 0, sizeof(depthBufferFormat));
 -
@@ -18070,23 +20729,6 @@
 -        d3dDevice = NULL;
 -    }
 -    ReleaseExclusiveAccess();
-+    D3DPipelineManager::NotifyAdapterEventListeners(devCaps.AdapterOrdinal,
-+                                                    DEVICE_DISPOSED);
-+
-+    // dispose shader lists
-+    ShaderList_Dispose(&convolvePrograms);
-+    ShaderList_Dispose(&rescalePrograms);
-+    ShaderList_Dispose(&lookupPrograms);
-+    ShaderList_Dispose(&basicGradPrograms);
-+    ShaderList_Dispose(&linearGradPrograms);
-+    ShaderList_Dispose(&radialGradPrograms);
-+
-+    SAFE_DELETE(pLCDGlyphCache);
-+    SAFE_DELETE(pGrayscaleGlyphCache);
-+
-+    SAFE_RELEASE(lcdTextProgram);
-+    SAFE_RELEASE(aaPgramProgram);
-+
 +    SAFE_DELETE(pVCacher);
 +    SAFE_DELETE(pMaskCache);
 +    SAFE_DELETE(pResourceMgr);
@@ -18137,9 +20779,6 @@
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZENABLE, D3DZB_FALSE);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_COLORVERTEX, FALSE);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_STENCILENABLE, FALSE);
--
--    d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_POINT);
--    d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_POINT);
 +    pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
 +    pd3dDevice->SetRenderState(D3DRS_SPECULARENABLE, FALSE);
 +    pd3dDevice->SetRenderState(D3DRS_LIGHTING,  FALSE);
@@ -18148,7 +20787,9 @@
 +    pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, D3DZB_FALSE);
 +    pd3dDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE);
 +    pd3dDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE);
-+
+ 
+-    d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_POINT);
+-    d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_POINT);
 +    // set the default texture addressing mode
 +    pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
 +    pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
@@ -18334,22 +20975,10 @@
 +            newParams.BackBufferHeight = 0;
 +        }
 +        res = ConfigureContext(&newParams);
-     }
-+    return res;
-+}
- 
--    Release3DDevice();
--
--    // Create a temp surface so we can use it when creating a device
--    DXSurface *target = NULL;
--    if (FAILED(res = CreateSurface(NULL, 10, 10, 32, TR_OPAQUE,
--                                   D3D_PLAIN_SURFACE|D3D_RENDER_TARGET,
--                                   &target, NULL)))
--    {
--        DebugPrintDirectDrawError(res,
--                                  "D3DContext::CreateAndTestD3DDevice: "\
--                                  "can't create scratch surface");
--        return res;
++    }
++    return res;
++}
++
 +HRESULT
 +D3DContext::ConfigureContext(D3DPRESENT_PARAMETERS *pNewParams)
 +{
@@ -18365,13 +20994,23 @@
 +
 +        pd3dObject->GetAdapterDisplayMode(adapterOrdinal, &dm);
 +        pNewParams->BackBufferFormat = dm.Format;
-+    }
-+
+     }
+ 
+-    Release3DDevice();
 +    stencilFormat =
 +        D3DPipelineManager::GetInstance()->GetMatchingDepthStencilFormat(
 +            adapterOrdinal,
 +            pNewParams->BackBufferFormat, pNewParams->BackBufferFormat);
-+
+ 
+-    // Create a temp surface so we can use it when creating a device
+-    DXSurface *target = NULL;
+-    if (FAILED(res = CreateSurface(NULL, 10, 10, 32, TR_OPAQUE,
+-                                   D3D_PLAIN_SURFACE|D3D_RENDER_TARGET,
+-                                   &target, NULL)))
+-    {
+-        DebugPrintDirectDrawError(res,
+-                                  "D3DContext::CreateAndTestD3DDevice: "\
+-                                  "can't create scratch surface");
 +    pNewParams->EnableAutoDepthStencil = TRUE;
 +    pNewParams->AutoDepthStencilFormat = stencilFormat;
 +
@@ -18414,19 +21053,8 @@
 +            ReleaseContextResources();
 +            SAFE_RELEASE(pd3dDevice);
 +        }
-     }
- 
--    if (FAILED(res = d3dObject->CreateDevice(*pDeviceGUID,
--                                             target->GetDDSurface(),
--                                             &d3dDevice)))
--    {
--        DebugPrintDirectDrawError(res,
--                                  "D3DContext::CreateAndTestD3DDevice: "\
--                                  "error creating d3d device");
--    } else if (FAILED(res = InitD3DDevice(d3dDevice))) {
--        DebugPrintDirectDrawError(res,
--                                  "D3DContext::CreateAndTestD3DDevice: "\
--                                  "error initializing D3D device");
++    }
++
 +    if (pd3dDevice != NULL) {
 +        J2dTraceLn(J2D_TRACE_VERBOSE, "  resetting the device");
 +
@@ -18447,13 +21075,7 @@
 +        J2dRlsTraceLn1(J2D_TRACE_INFO,
 +            "D3DContext::ConfigureContext: successfully reset device: %d",
 +            adapterOrdinal);
-     } else {
--        J2dRlsTraceLn(J2D_TRACE_VERBOSE,
--                      "D3DContext::CreateAndTestD3DDevice: "\
--                      "D3D device creation/initialization successful");
--        // the device is successfully created and initialized,
--        // now run some tests on it
--        deviceCaps = TestD3DDevice(ddObject, this, dxCaps);
++    } else {
 +        D3DCAPS9 d3dCaps;
 +        DWORD dwBehaviorFlags;
 +
@@ -18505,12 +21127,8 @@
 +            "D3DContext::ConfigureContext: successfully created device: %d",
 +            adapterOrdinal);
 +        bIsHWRasterizer = (devType == D3DDEVTYPE_HAL);
-     }
- 
--    // We can safely dispose the scratch surface here
--    if (target != NULL) {
--        target->Release();
--        delete target;
++    }
++
 +    curParams = *pNewParams;
 +    // during the creation of the device d3d modifies this field, we reset
 +    // it back to 0
@@ -18518,19 +21136,236 @@
 +
 +    if (FAILED(res = InitDevice(pd3dDevice))) {
 +        ReleaseContextResources();
+         return res;
+     }
+ 
+-    if (FAILED(res = d3dObject->CreateDevice(*pDeviceGUID,
+-                                             target->GetDDSurface(),
+-                                             &d3dDevice)))
+-    {
+-        DebugPrintDirectDrawError(res,
+-                                  "D3DContext::CreateAndTestD3DDevice: "\
+-                                  "error creating d3d device");
+-    } else if (FAILED(res = InitD3DDevice(d3dDevice))) {
+-        DebugPrintDirectDrawError(res,
+-                                  "D3DContext::CreateAndTestD3DDevice: "\
+-                                  "error initializing D3D device");
+-    } else {
+-        J2dRlsTraceLn(J2D_TRACE_VERBOSE,
+-                      "D3DContext::CreateAndTestD3DDevice: "\
+-                      "D3D device creation/initialization successful");
+-        // the device is successfully created and initialized,
+-        // now run some tests on it
+-        deviceCaps = TestD3DDevice(ddObject, this, dxCaps);
++    res = InitContextCaps();
++
++    return res;
++}
++
++HRESULT
++D3DContext::InitContext()
++{
++    J2dRlsTraceLn1(J2D_TRACE_INFO, "D3DContext::InitContext device %d",
++                   adapterOrdinal);
++
++    D3DPRESENT_PARAMETERS params;
++    ZeroMemory(&params, sizeof(D3DPRESENT_PARAMETERS));
++
++    params.hDeviceWindow = 0;
++    params.Windowed = TRUE;
++    params.BackBufferCount = 1;
++    params.BackBufferFormat = D3DFMT_UNKNOWN;
++    params.SwapEffect = D3DSWAPEFFECT_DISCARD;
++    params.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
++
++    return ConfigureContext(&params);
++}
++
++HRESULT
++D3DContext::Sync()
++{
++    HRESULT res = S_OK;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::Sync");
++
++    if (pSyncQuery != NULL) {
++        J2dTrace(J2D_TRACE_VERBOSE, "  flushing the device queue..");
++        while (S_FALSE ==
++               (res = pSyncQuery->GetData(NULL, 0, D3DGETDATA_FLUSH))) ;
++        J2dTrace(J2D_TRACE_VERBOSE, ".. done\n");
++    }
++    if (pSyncRTRes != NULL) {
++        D3DLOCKED_RECT lr;
++        IDirect3DSurface9 *pSurface = pSyncRTRes->GetSurface();
++        if (SUCCEEDED(pSurface->LockRect(&lr, NULL, D3DLOCK_NOSYSLOCK))) {
++            pSurface->UnlockRect();
++        }
++    }
++    return res;
++}
++
++HRESULT
++D3DContext::SaveState()
++{
++    HRESULT res;
++
++    RETURN_STATUS_IF_NULL(pd3dDevice, S_OK);
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::SaveState");
++
++    FlushVertexQueue();
++    UpdateState(STATE_CHANGE);
++
++    if (pStateBlock != NULL) {
++        J2dTraceLn(J2D_TRACE_WARNING,
++                   "D3DContext::SaveState: existing state block!");
++        SAFE_RELEASE(pStateBlock);
+     }
+ 
+-    // We can safely dispose the scratch surface here
+-    if (target != NULL) {
+-        target->Release();
+-        delete target;
++    if (SUCCEEDED(res =
++            pd3dDevice->CreateStateBlock(D3DSBT_ALL, &pStateBlock)))
++    {
++        J2dTraceLn(J2D_TRACE_VERBOSE, "  created state block");
++    } else {
++        J2dTraceLn(J2D_TRACE_WARNING,
++                   "D3DContext::SaveState: failed to create state block");
++    }
++    ZeroMemory(lastTexture, sizeof(lastTexture));
++
++    return res;
++}
++
++HRESULT
++D3DContext::RestoreState()
++{
++    HRESULT res = S_OK;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::RestoreState");
++
++    FlushVertexQueue();
++    UpdateState(STATE_CHANGE);
++
++    if (pStateBlock != NULL) {
++        if (SUCCEEDED(res = pStateBlock->Apply())) {
++            J2dTraceLn(J2D_TRACE_VERBOSE, "  restored device state");
++        } else {
++            J2dTraceLn(J2D_TRACE_WARNING,
++                       "D3DContext::RestoreState: failed to restore state");
++        }
++        SAFE_RELEASE(pStateBlock);
++    } else {
++        J2dTraceLn(J2D_TRACE_WARNING,
++                   "D3DContext::RestoreState: empty state block!");
++    }
++    ZeroMemory(lastTexture, sizeof(lastTexture));
++
++    return res;
++}
++
++#define POINT_FILTER_CAP (D3DPTFILTERCAPS_MAGFPOINT|D3DPTFILTERCAPS_MINFPOINT)
++#define LINEAR_FILTER_CAP (D3DPTFILTERCAPS_MAGFLINEAR|D3DPTFILTERCAPS_MINFLINEAR)
++
++BOOL
++D3DContext::IsStretchRectFilteringSupported(D3DTEXTUREFILTERTYPE fType)
++{
++    if (fType == D3DTEXF_POINT) {
++        return ((devCaps.StretchRectFilterCaps & POINT_FILTER_CAP) != 0);
++    }
++    if (fType == D3DTEXF_LINEAR) {
++        return ((devCaps.StretchRectFilterCaps & LINEAR_FILTER_CAP) != 0);
++    }
++    return FALSE;
++}
++
++BOOL
++D3DContext::IsTextureFilteringSupported(D3DTEXTUREFILTERTYPE fType)
++{
++    if (fType == D3DTEXF_POINT) {
++        return ((devCaps.TextureFilterCaps & POINT_FILTER_CAP) != 0);
++    }
++    if (fType == D3DTEXF_LINEAR) {
++        return ((devCaps.TextureFilterCaps & LINEAR_FILTER_CAP) != 0);
++    }
++    return FALSE;
++}
++
++BOOL
++D3DContext::IsTextureFormatSupported(D3DFORMAT format, DWORD usage)
++{
++    HRESULT hr = pd3dObject->CheckDeviceFormat(adapterOrdinal,
++                                               devCaps.DeviceType,
++                                               curParams.BackBufferFormat,
++                                               usage,
++                                               D3DRTYPE_TEXTURE,
++                                               format);
++    return SUCCEEDED( hr );
++}
++
++BOOL
++D3DContext::IsDepthStencilBufferOk(D3DSURFACE_DESC *pTargetDesc)
++{
++    IDirect3DSurface9 *pStencil;
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::IsDepthStencilBufferOk");
++
++    if (SUCCEEDED(pd3dDevice->GetDepthStencilSurface(&pStencil))) {
++        D3DSURFACE_DESC descStencil;
++        pStencil->GetDesc(&descStencil);
++        pStencil->Release();
++
++        D3DDISPLAYMODE dm;
++        return
++            (SUCCEEDED(pd3dDevice->GetDisplayMode(0, &dm)) &&
++             pTargetDesc->Width <= descStencil.Width &&
++             pTargetDesc->Height <= descStencil.Height &&
++             SUCCEEDED(pd3dObject->CheckDepthStencilMatch(
++                   adapterOrdinal,
++                   devCaps.DeviceType,
++                   dm.Format, pTargetDesc->Format,
++                   descStencil.Format)));
++    }
++    J2dTraceLn(J2D_TRACE_VERBOSE,
++        "  current stencil buffer is not compatible with new Render Target");
++
++    return false;
++}
++
++
++
++HRESULT
++D3DContext::InitDepthStencilBuffer(D3DSURFACE_DESC *pTargetDesc)
++{
++    HRESULT res;
++    IDirect3DSurface9 *pBB;
++    D3DDISPLAYMODE dm;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::InitDepthStencilBuffer");
++
++    if (FAILED(res = pd3dDevice->GetDisplayMode(0, &dm))) {
 +        return res;
-     }
- 
-+    res = InitContextCaps();
-+
++    }
++
++    D3DFORMAT newFormat =
++        D3DPipelineManager::GetInstance()->GetMatchingDepthStencilFormat(
++            adapterOrdinal, dm.Format, pTargetDesc->Format);
++
++    res = pd3dDevice->CreateDepthStencilSurface(
++        pTargetDesc->Width, pTargetDesc->Height,
++        newFormat, D3DMULTISAMPLE_NONE, 0, false, &pBB, 0);
++    if (SUCCEEDED(res)) {
++        res = pd3dDevice->SetDepthStencilSurface(pBB);
++        pBB->Release();
+     }
+ 
      return res;
  }
  
 -void
 -D3DContext::CreateD3DDevice()
-+HRESULT
-+D3DContext::InitContext()
- {
+-{
 -    GetExclusiveAccess();
 -    J2dRlsTraceLn(J2D_TRACE_INFO, "D3DContext::CreateD3DDevice");
 -    // this is a weird way of getting a handle on the ddInstance
@@ -18582,41 +21417,7 @@
 -        } else {
 -            J2dRlsTraceLn(J2D_TRACE_ERROR,
 -                          "CreateD3DDevice: tests FAILED, d3d disabled.");
-+    J2dRlsTraceLn1(J2D_TRACE_INFO, "D3DContext::InitContext device %d",
-+                   adapterOrdinal);
-+
-+    D3DPRESENT_PARAMETERS params;
-+    ZeroMemory(&params, sizeof(D3DPRESENT_PARAMETERS));
-+
-+    params.hDeviceWindow = 0;
-+    params.Windowed = TRUE;
-+    params.BackBufferCount = 1;
-+    params.BackBufferFormat = D3DFMT_UNKNOWN;
-+    params.SwapEffect = D3DSWAPEFFECT_DISCARD;
-+    params.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
-+
-+    return ConfigureContext(&params);
-+}
-+
-+HRESULT
-+D3DContext::Sync()
-+{
-+    HRESULT res = S_OK;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::Sync");
-+
-+    if (pSyncQuery != NULL) {
-+        J2dTrace(J2D_TRACE_VERBOSE, "  flushing the device queue..");
-+        while (S_FALSE ==
-+               (res = pSyncQuery->GetData(NULL, 0, D3DGETDATA_FLUSH))) ;
-+        J2dTrace(J2D_TRACE_VERBOSE, ".. done\n");
-+    }
-+    if (pSyncRTRes != NULL) {
-+        D3DLOCKED_RECT lr;
-+        IDirect3DSurface9 *pSurface = pSyncRTRes->GetSurface();
-+        if (SUCCEEDED(pSurface->LockRect(&lr, NULL, D3DLOCK_NOSYSLOCK))) {
-+            pSurface->UnlockRect();
-         }
+-        }
 -        // REMIND: the first time the context initialization fails,
 -        // deviceUseD3D is set to FALSE in DDrawObjectStruct, and because of
 -        // this we never attempt to initialize it again later.
@@ -18632,245 +21433,45 @@
 -                       "CreateD3DDevice: tests PASSED, "\
 -                       "d3d enabled (forced: %s).",
 -                       forceD3DUsage ? "yes" : "no");
-     }
+-    }
 -
 -    ReleaseExclusiveAccess();
-+    return res;
- }
+-}
  
  HRESULT
 -D3DContext::SetRenderTarget(DDrawSurface *ddSurface)
-+D3DContext::SaveState()
++D3DContext::SetRenderTarget(IDirect3DSurface9 *pSurface)
  {
 -    static D3DVIEWPORT7 vp = { 0, 0, 0, 0, 0.0f, 1.0f };
--    static D3DMATRIX tx;
+     static D3DMATRIX tx;
 -    BOOL bSetProjectionMatrix = FALSE;
 -    HRESULT res = DDERR_GENERIC;
 -    GetExclusiveAccess();
 +    HRESULT res;
++    D3DSURFACE_DESC descNew;
++    IDirect3DSurface9 *pCurrentTarget;
  
 -    J2dTraceLn2(J2D_TRACE_INFO,
 -                "D3DContext::SetRenderTarget: old=0x%x new=0x%x",
 -                ddTargetSurface, ddSurface);
-+    RETURN_STATUS_IF_NULL(pd3dDevice, S_OK);
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::SaveState");
-+
-+    FlushVertexQueue();
-+    UpdateState(STATE_CHANGE);
++    J2dTraceLn1(J2D_TRACE_INFO,
++                "D3DContext::SetRenderTarget: pSurface=0x%x",
++                pSurface);
  
 -    ddTargetSurface = NULL;
-+    if (pStateBlock != NULL) {
-+        J2dTraceLn(J2D_TRACE_WARNING,
-+                   "D3DContext::SaveState: existing state block!");
-+        SAFE_RELEASE(pStateBlock);
-+    }
++    RETURN_STATUS_IF_NULL(pd3dDevice, E_FAIL);
++    RETURN_STATUS_IF_NULL(pSurface, E_FAIL);
  
 -    DXSurface *dxSurface = NULL;
 -    if (d3dDevice == NULL || ddSurface == NULL ||
 -        (dxSurface = ddSurface->GetDXSurface()) == NULL)
-+    if (SUCCEEDED(res =
-+            pd3dDevice->CreateStateBlock(D3DSBT_ALL, &pStateBlock)))
-     {
+-    {
 -        ReleaseExclusiveAccess();
 -        J2dTraceLn3(J2D_TRACE_WARNING,
 -                    "D3DContext::SetRenderTarget invalid state:"\
 -                    "d3dDevice=0x%x ddSurface=0x%x dxSurface=0x%x",
 -                    d3dDevice, ddSurface, dxSurface);
 -        return res;
-+        J2dTraceLn(J2D_TRACE_VERBOSE, "  created state block");
-+    } else {
-+        J2dTraceLn(J2D_TRACE_WARNING,
-+                   "D3DContext::SaveState: failed to create state block");
-     }
-+    ZeroMemory(lastTexture, sizeof(lastTexture));
- 
--    if (FAILED(res = ddSurface->IsLost())) {
--        ReleaseExclusiveAccess();
--        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
--                                  "target surface (and/or depth buffer) lost");
--        return res;
-+    return res;
-+}
-+
-+HRESULT
-+D3DContext::RestoreState()
-+{
-+    HRESULT res = S_OK;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::RestoreState");
-+
-+    FlushVertexQueue();
-+    UpdateState(STATE_CHANGE);
-+
-+    if (pStateBlock != NULL) {
-+        if (SUCCEEDED(res = pStateBlock->Apply())) {
-+            J2dTraceLn(J2D_TRACE_VERBOSE, "  restored device state");
-+        } else {
-+            J2dTraceLn(J2D_TRACE_WARNING,
-+                       "D3DContext::RestoreState: failed to restore state");
-+        }
-+        SAFE_RELEASE(pStateBlock);
-+    } else {
-+        J2dTraceLn(J2D_TRACE_WARNING,
-+                   "D3DContext::RestoreState: empty state block!");
-     }
-+    ZeroMemory(lastTexture, sizeof(lastTexture));
- 
--    ForceEndScene();
-+    return res;
-+}
- 
--    if (FAILED(res = d3dDevice->SetRenderTarget(dxSurface->GetDDSurface(), 0)))
--    {
--        ReleaseExclusiveAccess();
--        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
--                                  "error setting render target");
--        return res;
-+#define POINT_FILTER_CAP (D3DPTFILTERCAPS_MAGFPOINT|D3DPTFILTERCAPS_MINFPOINT)
-+#define LINEAR_FILTER_CAP (D3DPTFILTERCAPS_MAGFLINEAR|D3DPTFILTERCAPS_MINFLINEAR)
-+
-+BOOL
-+D3DContext::IsStretchRectFilteringSupported(D3DTEXTUREFILTERTYPE fType)
-+{
-+    if (fType == D3DTEXF_POINT) {
-+        return ((devCaps.StretchRectFilterCaps & POINT_FILTER_CAP) != 0);
-     }
-+    if (fType == D3DTEXF_LINEAR) {
-+        return ((devCaps.StretchRectFilterCaps & LINEAR_FILTER_CAP) != 0);
-+    }
-+    return FALSE;
-+}
- 
--    int width = dxSurface->GetWidth();
--    int height = dxSurface->GetHeight();
--    // set the projection matrix if the the dimensions of the new
--    // rendertarget are different from the old one.
--    if (FAILED(d3dDevice->GetViewport(&vp)) ||
--        (int)vp.dwWidth != width  || (int)vp.dwHeight != height)
--    {
--        bSetProjectionMatrix = TRUE;
-+BOOL
-+D3DContext::IsTextureFilteringSupported(D3DTEXTUREFILTERTYPE fType)
-+{
-+    if (fType == D3DTEXF_POINT) {
-+        return ((devCaps.TextureFilterCaps & POINT_FILTER_CAP) != 0);
-+    }
-+    if (fType == D3DTEXF_LINEAR) {
-+        return ((devCaps.TextureFilterCaps & LINEAR_FILTER_CAP) != 0);
-     }
-+    return FALSE;
-+}
- 
--    vp.dwX = vp.dwY = 0;
--    vp.dwWidth  = width;
--    vp.dwHeight = height;
--    vp.dvMinZ = 0.0f;
--    vp.dvMaxZ = 1.0f;
--
--    if (FAILED(res = d3dDevice->SetViewport(&vp))) {
--        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
--                                  "error setting viewport");
--        ReleaseExclusiveAccess();
--        return res;
-+BOOL
-+D3DContext::IsTextureFormatSupported(D3DFORMAT format, DWORD usage)
-+{
-+    HRESULT hr = pd3dObject->CheckDeviceFormat(adapterOrdinal,
-+                                               devCaps.DeviceType,
-+                                               curParams.BackBufferFormat,
-+                                               usage,
-+                                               D3DRTYPE_TEXTURE,
-+                                               format);
-+    return SUCCEEDED( hr );
-+}
-+
-+BOOL
-+D3DContext::IsDepthStencilBufferOk(D3DSURFACE_DESC *pTargetDesc)
-+{
-+    IDirect3DSurface9 *pStencil;
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::IsDepthStencilBufferOk");
-+
-+    if (SUCCEEDED(pd3dDevice->GetDepthStencilSurface(&pStencil))) {
-+        D3DSURFACE_DESC descStencil;
-+        pStencil->GetDesc(&descStencil);
-+        pStencil->Release();
-+
-+        D3DDISPLAYMODE dm;
-+        return
-+            (SUCCEEDED(pd3dDevice->GetDisplayMode(0, &dm)) &&
-+             pTargetDesc->Width <= descStencil.Width &&
-+             pTargetDesc->Height <= descStencil.Height &&
-+             SUCCEEDED(pd3dObject->CheckDepthStencilMatch(
-+                   adapterOrdinal,
-+                   devCaps.DeviceType,
-+                   dm.Format, pTargetDesc->Format,
-+                   descStencil.Format)));
-     }
-+    J2dTraceLn(J2D_TRACE_VERBOSE,
-+        "  current stencil buffer is not compatible with new Render Target");
-+
-+    return false;
-+}
- 
--    if (bSetProjectionMatrix) {
--        D3DUtils_SetOrthoMatrixOffCenterLH(&tx, (float)width, (float)height);
--        res = d3dDevice->SetTransform(D3DTRANSFORMSTATE_PROJECTION, &tx);
-+
-+
-+HRESULT
-+D3DContext::InitDepthStencilBuffer(D3DSURFACE_DESC *pTargetDesc)
-+{
-+    HRESULT res;
-+    IDirect3DSurface9 *pBB;
-+    D3DDISPLAYMODE dm;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::InitDepthStencilBuffer");
-+
-+    if (FAILED(res = pd3dDevice->GetDisplayMode(0, &dm))) {
-+        return res;
-     }
- 
-+    D3DFORMAT newFormat =
-+        D3DPipelineManager::GetInstance()->GetMatchingDepthStencilFormat(
-+            adapterOrdinal, dm.Format, pTargetDesc->Format);
-+
-+    res = pd3dDevice->CreateDepthStencilSurface(
-+        pTargetDesc->Width, pTargetDesc->Height,
-+        newFormat, D3DMULTISAMPLE_NONE, 0, false, &pBB, 0);
-     if (SUCCEEDED(res)) {
--        ddTargetSurface = ddSurface;
--        J2dTraceLn1(J2D_TRACE_VERBOSE,
--                    "D3DContext::SetRenderTarget: succeeded, "\
--                    "new target=0x%x", ddTargetSurface);
--    } else {
--        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: failed");
-+        res = pd3dDevice->SetDepthStencilSurface(pBB);
-+        pBB->Release();
-     }
- 
--    ReleaseExclusiveAccess();
-     return res;
- }
- 
-+
- HRESULT
--D3DContext::SetTransform(jobject xform,
--                         jdouble m00, jdouble m10,
-+D3DContext::SetRenderTarget(IDirect3DSurface9 *pSurface)
-+{
-+    static D3DMATRIX tx;
-+    HRESULT res;
-+    D3DSURFACE_DESC descNew;
-+    IDirect3DSurface9 *pCurrentTarget;
-+
-+    J2dTraceLn1(J2D_TRACE_INFO,
-+                "D3DContext::SetRenderTarget: pSurface=0x%x",
-+                pSurface);
-+
-+    RETURN_STATUS_IF_NULL(pd3dDevice, E_FAIL);
-+    RETURN_STATUS_IF_NULL(pSurface, E_FAIL);
-+
 +    pSurface->GetDesc(&descNew);
 +
 +    if (SUCCEEDED(res = pd3dDevice->GetRenderTarget(0, &pCurrentTarget))) {
@@ -18891,7 +21492,7 @@
 +            }
 +        }
 +        SAFE_RELEASE(pCurrentTarget);
-+    }
+     }
 +    // we set the transform even if the render target didn't change;
 +    // this is because in some cases (fs mode) we use the default SwapChain of
 +    // the device, and its render target will be the same as the device's, and
@@ -18901,12 +21502,69 @@
 +                       (float)descNew.Width,
 +                       (float)descNew.Height);
 +    pd3dDevice->SetTransform(D3DTS_PROJECTION, &tx);
-+
+ 
+-    if (FAILED(res = ddSurface->IsLost())) {
+-        ReleaseExclusiveAccess();
+-        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
+-                                  "target surface (and/or depth buffer) lost");
+-        return res;
+-    }
+-
+-    ForceEndScene();
+-
+-    if (FAILED(res = d3dDevice->SetRenderTarget(dxSurface->GetDDSurface(), 0)))
+-    {
+-        ReleaseExclusiveAccess();
+-        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
+-                                  "error setting render target");
+-        return res;
+-    }
+-
+-    int width = dxSurface->GetWidth();
+-    int height = dxSurface->GetHeight();
+-    // set the projection matrix if the the dimensions of the new
+-    // rendertarget are different from the old one.
+-    if (FAILED(d3dDevice->GetViewport(&vp)) ||
+-        (int)vp.dwWidth != width  || (int)vp.dwHeight != height)
+-    {
+-        bSetProjectionMatrix = TRUE;
+-    }
+-
+-    vp.dwX = vp.dwY = 0;
+-    vp.dwWidth  = width;
+-    vp.dwHeight = height;
+-    vp.dvMinZ = 0.0f;
+-    vp.dvMaxZ = 1.0f;
+-
+-    if (FAILED(res = d3dDevice->SetViewport(&vp))) {
+-        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: "\
+-                                  "error setting viewport");
+-        ReleaseExclusiveAccess();
+-        return res;
+-    }
+-
+-    if (bSetProjectionMatrix) {
+-        D3DUtils_SetOrthoMatrixOffCenterLH(&tx, (float)width, (float)height);
+-        res = d3dDevice->SetTransform(D3DTRANSFORMSTATE_PROJECTION, &tx);
+-    }
+-
+-    if (SUCCEEDED(res)) {
+-        ddTargetSurface = ddSurface;
+-        J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                    "D3DContext::SetRenderTarget: succeeded, "\
+-                    "new target=0x%x", ddTargetSurface);
+-    } else {
+-        DebugPrintDirectDrawError(res, "D3DContext::SetRenderTarget: failed");
+-    }
+-
+-    ReleaseExclusiveAccess();
 +    J2dTraceLn1(J2D_TRACE_VERBOSE, "  current render target=0x%x", pSurface);
-+    return res;
-+}
-+
-+HRESULT
+     return res;
+ }
+ 
+ HRESULT
+-D3DContext::SetTransform(jobject xform,
+-                         jdouble m00, jdouble m10,
 +D3DContext::ResetTransform()
 +{
 +    HRESULT res = S_OK;
@@ -18941,20 +21599,16 @@
 -    if (d3dDevice == NULL) {
 -        ReleaseExclusiveAccess();
 -        return DDERR_GENERIC;
-+    if (pd3dDevice == NULL) {
-+        return E_FAIL;
-     }
+-    }
 -    HRESULT res = D3D_OK;
 -    D3DMATRIX tx;
- 
+-
 -    if (xform == NULL) {
 -        J2dTraceLn(J2D_TRACE_VERBOSE, "  disabling transform");
 -        D3DUtils_SetIdentityMatrix(&tx);
 -    } else {
 -        J2dTraceLn(J2D_TRACE_VERBOSE, "  enabling transform");
-+    // no need for state change, just flush the queue
-+    FlushVertexQueue();
- 
+-
 -        // copy values from AffineTransform object into native matrix array
 -        memset(&tx, 0, sizeof(D3DMATRIX));
 -        tx._11 = (float)m00;
@@ -18967,6 +21621,17 @@
 -        // when we don't do texture mapping or use D3DPT_LINESTRIP.
 -        tx._41 = (float)m02-0.5f;
 -        tx._42 = (float)m12-0.5f;
+-
+-        tx._33 = 1.0f;
+-        tx._44 = 1.0f;
++    if (pd3dDevice == NULL) {
++        return E_FAIL;
+     }
+ 
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "  setting new tx matrix");
++    // no need for state change, just flush the queue
++    FlushVertexQueue();
++
 +    // In order to correctly map texels to pixels we need to
 +    // adjust geometry by -0.5f in the transformed space.
 +    // In order to do that we first create a translated matrix
@@ -18987,10 +21652,7 @@
 +    tx1._22 = (float)m11;
 +    tx1._41 = (float)m02;
 +    tx1._42 = (float)m12;
- 
--        tx._33 = 1.0f;
--        tx._44 = 1.0f;
--    }
++
 +    tx1._33 = 1.0f;
 +    tx1._44 = 1.0f;
 +
@@ -18998,12 +21660,11 @@
 +    tx._41 = -0.5f;
 +    tx._42 = -0.5f;
 +    D3DUtils_2DConcatenateM(&tx, &tx1);
- 
--    J2dTraceLn(J2D_TRACE_VERBOSE, "  setting new tx matrix");
++
      J2dTraceLn4(J2D_TRACE_VERBOSE,
                  "  %5f %5f %5f %5f", tx._11, tx._12, tx._13, tx._14);
      J2dTraceLn4(J2D_TRACE_VERBOSE,
-@@ -547,651 +972,518 @@
+@@ -547,103 +972,134 @@
                  "  %5f %5f %5f %5f", tx._31, tx._32, tx._33, tx._34);
      J2dTraceLn4(J2D_TRACE_VERBOSE,
                  "  %5f %5f %5f %5f", tx._41, tx._42, tx._43, tx._44);
@@ -19011,13 +21672,12 @@
 -        DebugPrintDirectDrawError(res, "D3DContext::SetTransform failed");
 +    if (FAILED(res = pd3dDevice->SetTransform(D3DTS_WORLD, &tx))) {
 +        DebugPrintD3DError(res, "D3DContext::SetTransform failed");
-     }
++    }
 +    bIsIdentityTx = FALSE;
- 
--    ReleaseExclusiveAccess();
-     return res;
- }
- 
++
++    return res;
++}
++
 +HRESULT
 +D3DContext::SetRectClip(int x1, int y1, int x2, int y2)
 +{
@@ -19049,8 +21709,9 @@
 +        J2dTraceLn(J2D_TRACE_VERBOSE,
 +                   "  disabling clip (== render target dimensions)");
 +        return pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);
-+    }
-+
+     }
+ 
+-    ReleaseExclusiveAccess();
 +    // clip to the dimensions of the target surface, otherwise
 +    // SetScissorRect will fail
 +    if (x1 < 0)                 x1 = 0;
@@ -19069,9 +21730,9 @@
 +                       x1, y1, x2, y2);
 +    }
 +
-+    return res;
-+}
-+
+     return res;
+ }
+ 
 +HRESULT
 +D3DContext::ResetClip()
 +{
@@ -19138,7 +21799,9 @@
 -#endif // USE_SINGLE_VERTEX_FORMAT
 -    };
 -    static J2DXY_HEXA spanVx[MAX_CACHED_SPAN_VX_NUM];
--
++    HRESULT res = S_OK;
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::BeginShapeClip");
+ 
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::SetClip");
 -    J2dTraceLn5(J2D_TRACE_VERBOSE,
 -                "  x1=%-4d y1=%-4d x2=%-4d y2=%-4d isRect=%-2d",
@@ -19149,16 +21812,18 @@
 -        ReleaseExclusiveAccess();
 -        return DDERR_GENERIC;
 -    }
-+    HRESULT res = S_OK;
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::BeginShapeClip");
- 
 +    UpdateState(STATE_CHANGE);
  
++    pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);
+ 
 -    // Must do EndScene prior to setting a new clip, otherwise the
 -    // primitives which are already in the pipeline will be rendered with
 -    // the new clip when we do EndScene.
 -    ForceEndScene();
-+    pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, FALSE);
++    // save alpha blending state
++    pd3dDevice->GetRenderState(D3DRS_ALPHABLENDENABLE, &dwAlphaSt);
++    pd3dDevice->GetRenderState(D3DRS_SRCBLEND, &dwSrcBlendSt);
++    pd3dDevice->GetRenderState(D3DRS_DESTBLEND, &dwDestBlendSt);
  
 -    if (clip == NULL) {
 -        J2dTraceLn(J2D_TRACE_VERBOSE,
@@ -19179,10 +21844,9 @@
 -            return res;
 -        }
 -    }
-+    // save alpha blending state
-+    pd3dDevice->GetRenderState(D3DRS_ALPHABLENDENABLE, &dwAlphaSt);
-+    pd3dDevice->GetRenderState(D3DRS_SRCBLEND, &dwSrcBlendSt);
-+    pd3dDevice->GetRenderState(D3DRS_DESTBLEND, &dwDestBlendSt);
++    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
++    pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
++    pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
  
 -    // save the old settings
 -    DWORD dwAlphaSt, dwSrcBlendSt, dwDestBlendSt;
@@ -19200,10 +21864,7 @@
 -        // it will be reset the next time a texturing operation is performed
 -        SetTexture(NULL);
 -    }
-+    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
-+    pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
-+    pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
- 
+-
 -    D3DMATRIX tx, idTx;
 -    d3dDevice->GetTransform(D3DTRANSFORMSTATE_WORLD, &tx);
 +    pd3dDevice->GetTransform(D3DTS_WORLD, &tx);
@@ -19215,18 +21876,20 @@
 +    pd3dDevice->SetTransform(D3DTS_WORLD, &idTx);
  
      // The depth buffer is first cleared with zeroes, which is the farthest
--    // plane from the viewer (our projection matrix is an inversed orthogonal
--    // transform).
--    // To set the clip we'll render the clip spans with Z coordinates of 1.0f
--    // (the closest to the viewer). Since all rendering primitives
--    // have their vertices' Z coordinate set to 0.0, they will effectively be
--    // clipped because the Z depth test for them will fail (vertex with 1.0
--    // depth is closer than the one with 0.0f)
+     // plane from the viewer (our projection matrix is an inversed orthogonal
+@@ -653,545 +1109,381 @@
+     // have their vertices' Z coordinate set to 0.0, they will effectively be
+     // clipped because the Z depth test for them will fail (vertex with 1.0
+     // depth is closer than the one with 0.0f)
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZENABLE, D3DZB_TRUE);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, TRUE);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS);
 -    d3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0L, 0.0f, 0x0L);
--
++    pd3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
++    pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
++    pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
++    pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0L, 0.0f, 0x0L);
+ 
 -    float fx1, fy1, fx2, fy2;
 -    if (SUCCEEDED(d3dDevice->BeginScene())) {
 -        if (isRect) {
@@ -19241,7 +21904,8 @@
 -            SurfaceDataBounds span;
 -            J2DXY_HEXA *pHexa = (J2DXY_HEXA*)spanVx;
 -            jint numOfCachedSpans = 0;
--
++    //res = BeginScene(STATE_SHAPE_CLIPOP);
+ 
 -            Region_StartIteration(env, &clipInfo);
 -            while (Region_NextIteration(&clipInfo, &span)) {
 -                fx1 = (float)(span.x1); fy1 = (float)(span.y1);
@@ -19279,29 +21943,17 @@
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, dwAlphaSt);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND, dwSrcBlendSt);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, dwDestBlendSt);
-+    // plane from the viewer (our projection matrix is an inversed orthogonal
-+    // transform).
-+    // To set the clip we'll render the clip spans with Z coordinates of 1.0f
-+    // (the closest to the viewer). Since all rendering primitives
-+    // have their vertices' Z coordinate set to 0.0, they will effectively be
-+    // clipped because the Z depth test for them will fail (vertex with 1.0
-+    // depth is closer than the one with 0.0f)
-+    pd3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
-+    pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
-+    pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
-+    pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0L, 0.0f, 0x0L);
- 
+-
 -    // Setup the depth buffer.
 -    // We disable further updates to the depth buffer: it should only
 -    // be updated in SetClip method.
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE);
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ZFUNC, D3DCMP_LESS);
-+    //res = BeginScene(STATE_SHAPE_CLIPOP);
- 
+-
 -    ReleaseExclusiveAccess();
-     return res;
- }
- 
+-    return res;
+-}
+-
 -DXSurface *
 -D3DContext::GetMaskTexture()
 -{
@@ -19319,12 +21971,11 @@
 -}
 -
 -
- HRESULT
+-HRESULT
 -D3DContext::InitMaskTileTexture()
-+D3DContext::EndShapeClip()
- {
-     HRESULT res;
- 
+-{
+-    HRESULT res;
+-
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::InitMaskTileTexture");
 -    if (lpMaskTexture != NULL) {
 -        lpMaskTexture->Release();
@@ -19337,23 +21988,7 @@
 -    } else {
 -        caps |= DDSCAPS_SYSTEMMEMORY;
 -    }
-+    // no need for state change, just flush the queue
-+    res = FlushVertexQueue();
-+
-+    // restore alpha blending state
-+    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, dwAlphaSt);
-+    pd3dDevice->SetRenderState(D3DRS_SRCBLEND, dwSrcBlendSt);
-+    pd3dDevice->SetRenderState(D3DRS_DESTBLEND, dwDestBlendSt);
-+
-+    // resore the transform
-+    pd3dDevice->SetTransform(D3DTS_WORLD, &tx);
-+
-+    // Enable the depth buffer.
-+    // We disable further updates to the depth buffer: it should only
-+    // be updated in SetClip method.
-+    pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
-+    pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
- 
+-
 -    if (FAILED(res =
 -               dxObject->CreateSurface(DDSD_WIDTH|DDSD_HEIGHT|DDSD_CAPS|
 -                                       DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE,
@@ -19377,65 +22012,34 @@
 -                                 jint srcx, jint srcy,
 -                                 jint srcWidth, jint srcHeight,
 -                                 jint srcStride)
--{
++D3DContext::EndShapeClip()
+ {
 -    HRESULT res = D3D_OK;
 -    SurfaceDataRasInfo rasInfo;
--
--
-+D3DContext::UploadTileToTexture(D3DResource *pTextureRes, void *pixels,
-+                                jint dstx, jint dsty,
-+                                jint srcx, jint srcy,
-+                                jint srcWidth, jint srcHeight,
-+                                jint srcStride,
-+                                TileFormat srcFormat,
-+                                jint *pPixelsTouchedL,
-+                                jint* pPixelsTouchedR)
-+{
-+#ifndef PtrAddBytes
-+#define PtrAddBytes(p, b)               ((void *) (((intptr_t) (p)) + (b)))
-+#define PtrCoord(p, x, xinc, y, yinc)   PtrAddBytes(p, (y)*(yinc) + (x)*(xinc))
-+#endif // PtrAddBytes
-+
-+    HRESULT res = S_OK;
-+    IDirect3DTexture9 *pTexture = pTextureRes->GetTexture();
-+    D3DSURFACE_DESC *pDesc = pTextureRes->GetDesc();
-     RECT r = { dstx, dsty, dstx+srcWidth, dsty+srcHeight };
++    HRESULT res;
+ 
++    // no need for state change, just flush the queue
++    res = FlushVertexQueue();
+ 
+-    RECT r = { dstx, dsty, dstx+srcWidth, dsty+srcHeight };
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::UploadImageToTexture");
-+    RECT *pR = &r;
-+    D3DLOCKED_RECT lockedRect;
-+    DWORD dwLockFlags = D3DLOCK_NOSYSLOCK;
-+    // these are only counted for LCD glyph uploads
-+    jint pixelsTouchedL = 0, pixelsTouchedR = 0;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::UploadTileToTexture");
-     J2dTraceLn4(J2D_TRACE_VERBOSE,
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
 -                " rect={%-4d, %-4d, %-4d, %-4d}",
 -                r.left, r.top, r.right, r.bottom);
 -    // REMIND: it may be faster to lock for NULL instead of
 -    // rect, need to test later.
 -    if (FAILED(res = texture->Lock(&r, &rasInfo,
 -                                   DDLOCK_WAIT|DDLOCK_NOSYSLOCK, NULL)))
-+        " rect={%-4d, %-4d, %-4d, %-4d}",
-+        r.left, r.top, r.right, r.bottom);
-+
-+    // REMIND: we should also check for dstx, dsty being 0 here,
-+    // but they're always 0 in dynamic texture case
-+    if (pDesc->Usage == D3DUSAGE_DYNAMIC &&
-+        srcWidth == pDesc->Width && srcHeight == pDesc->Height)
-     {
+-    {
 -        DebugPrintDirectDrawError(res,
 -                                  "D3DContext::UploadImageToTexture: could "\
 -                                  "not lock texture");
-+        dwLockFlags |= D3DLOCK_DISCARD;
-+        pR = NULL;
-+    }
-+
-+    if (FAILED(res = pTexture->LockRect(0, &lockedRect, pR, dwLockFlags))) {
-+        DebugPrintD3DError(res,
-+            "D3DContext::UploadImageToTexture: could "\
-+            "not lock texture");
-         return res;
-     }
+-        return res;
+-    }
++    // restore alpha blending state
++    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, dwAlphaSt);
++    pd3dDevice->SetRenderState(D3DRS_SRCBLEND, dwSrcBlendSt);
++    pd3dDevice->SetRenderState(D3DRS_DESTBLEND, dwDestBlendSt);
  
 -    if (rasInfo.pixelStride == 1) {
 -        // 8bpp alpha texture
@@ -19455,6 +22059,133 @@
 -                jubyte pix = pSrcPixels[xx];
 -                StoreIntArgbFrom4ByteArgb(pDstPixels, 0, xx,
 -                                          pix, pix, pix, pix);
+-            }
+-            pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
+-            pDstPixels = (jint*)PtrAddBytes(pDstPixels, rasInfo.scanStride);
+-        }
+-    }
+-    return texture->Unlock(&r);
+-}
++    // resore the transform
++    pd3dDevice->SetTransform(D3DTS_WORLD, &tx);
+ 
+-HRESULT
+-D3DContext::InitGlyphCache()
+-{
+-    HRESULT res = D3D_OK;
++    // Enable the depth buffer.
++    // We disable further updates to the depth buffer: it should only
++    // be updated in SetClip method.
++    pd3dDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
++    pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
+ 
+-    if (glyphCache != NULL) {
+-        return D3D_OK;
+-    }
+-
+-    if (!glyphCacheAvailable) {
+-        return DDERR_GENERIC;
+-    }
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::InitGlyphCache");
+-
+-    // init glyph cache data structure
+-    glyphCache = AccelGlyphCache_Init(D3D_GCACHE_WIDTH,
+-                                      D3D_GCACHE_HEIGHT,
+-                                      D3D_GCACHE_CELL_WIDTH,
+-                                      D3D_GCACHE_CELL_HEIGHT,
+-                                      NULL);
+-    if (glyphCache == NULL) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "D3DContext::InitGlyphCache: "\
+-                      "could not init D3D glyph cache");
+-        glyphCacheAvailable = FALSE;
+-        return DDERR_GENERIC;
+-    }
+-
+-    DWORD caps2 = 0, caps = DDSCAPS_TEXTURE;
+-    if (bIsHWRasterizer) {
+-        caps2 = DDSCAPS2_TEXTUREMANAGE;
+-    } else {
+-        caps |= DDSCAPS_SYSTEMMEMORY;
+-    }
+-    if (FAILED(res =
+-               dxObject->CreateSurface(DDSD_WIDTH|DDSD_HEIGHT|DDSD_CAPS|
+-                                       DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE,
+-                                       caps,
+-                                       caps2,
+-                                       &maskTileTexFormat,
+-                                       D3D_GCACHE_WIDTH, D3D_GCACHE_HEIGHT,
+-                                       (DXSurface **)&lpGlyphCacheTexture, 0)))
+-    {
+-        DebugPrintDirectDrawError(res,
+-                                  "D3DContext::InitGlyphCache: glyph cache "\
+-                                  "texture creation failed");
+-        glyphCacheAvailable = FALSE;
+-        return res;
+-    }
+     return res;
+ }
+ 
+ HRESULT
+-D3DContext::GlyphCacheAdd(JNIEnv *env, GlyphInfo *glyph)
++D3DContext::UploadTileToTexture(D3DResource *pTextureRes, void *pixels,
++                                jint dstx, jint dsty,
++                                jint srcx, jint srcy,
++                                jint srcWidth, jint srcHeight,
++                                jint srcStride,
++                                TileFormat srcFormat,
++                                jint *pPixelsTouchedL,
++                                jint* pPixelsTouchedR)
+ {
+-    HRESULT res = D3D_OK;
+-    if (!glyphCacheAvailable || glyph->image == NULL) {
+-        return DDERR_GENERIC;
++#ifndef PtrAddBytes
++#define PtrAddBytes(p, b)               ((void *) (((intptr_t) (p)) + (b)))
++#define PtrCoord(p, x, xinc, y, yinc)   PtrAddBytes(p, (y)*(yinc) + (x)*(xinc))
++#endif // PtrAddBytes
++
++    HRESULT res = S_OK;
++    IDirect3DTexture9 *pTexture = pTextureRes->GetTexture();
++    D3DSURFACE_DESC *pDesc = pTextureRes->GetDesc();
++    RECT r = { dstx, dsty, dstx+srcWidth, dsty+srcHeight };
++    RECT *pR = &r;
++    D3DLOCKED_RECT lockedRect;
++    DWORD dwLockFlags = D3DLOCK_NOSYSLOCK;
++    // these are only counted for LCD glyph uploads
++    jint pixelsTouchedL = 0, pixelsTouchedR = 0;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::UploadTileToTexture");
++    J2dTraceLn4(J2D_TRACE_VERBOSE,
++        " rect={%-4d, %-4d, %-4d, %-4d}",
++        r.left, r.top, r.right, r.bottom);
++
++    // REMIND: we should also check for dstx, dsty being 0 here,
++    // but they're always 0 in dynamic texture case
++    if (pDesc->Usage == D3DUSAGE_DYNAMIC &&
++        srcWidth == pDesc->Width && srcHeight == pDesc->Height)
++    {
++        dwLockFlags |= D3DLOCK_DISCARD;
++        pR = NULL;
+     }
+ 
+-    AccelGlyphCache_AddGlyph(glyphCache, glyph);
+-
+-    if (glyph->cellInfo != NULL) {
+-        // store glyph image in texture cell
+-        res = UploadImageToTexture(lpGlyphCacheTexture, (jubyte*)glyph->image,
+-                                   glyph->cellInfo->x, glyph->cellInfo->y,
+-                                   0, 0,
+-                                   glyph->width, glyph->height,
+-                                   glyph->width);
++    if (FAILED(res = pTexture->LockRect(0, &lockedRect, pR, dwLockFlags))) {
++        DebugPrintD3DError(res,
++            "D3DContext::UploadImageToTexture: could "\
++            "not lock texture");
++        return res;
+     }
+ 
 +    if (srcFormat == TILEFMT_1BYTE_ALPHA) {
 +        // either a MaskFill tile, or a grayscale glyph
 +        if (pDesc->Format == D3DFMT_A8) {
@@ -19479,22 +22210,8 @@
 +                }
 +                pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
 +                pDstPixels = (jint*)PtrAddBytes(pDstPixels, lockedRect.Pitch);
-             }
--            pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
--            pDstPixels = (jint*)PtrAddBytes(pDstPixels, rasInfo.scanStride);
-         }
--    }
--    return texture->Unlock(&r);
--}
--
--HRESULT
--D3DContext::InitGlyphCache()
--{
--    HRESULT res = D3D_OK;
--
--    if (glyphCache != NULL) {
--        return D3D_OK;
--    }
++            }
++        }
 +    } else if (srcFormat == TILEFMT_3BYTE_RGB) {
 +        // LCD glyph with RGB order
 +        if (pDesc->Format == D3DFMT_R8G8B8) {
@@ -19516,10 +22233,7 @@
 +                jint i = 3*(srcWidth-1);
 +                pixelsTouchedR +=
 +                    (pDstPixels[i+0]|pDstPixels[i+1]|pDstPixels[i+2]) ? 1 : 0;
- 
--    if (!glyphCacheAvailable) {
--        return DDERR_GENERIC;
--    }
++
 +                pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
 +                pDstPixels = (jubyte*)PtrAddBytes(pDstPixels, lockedRect.Pitch);
 +            }
@@ -19538,8 +22252,7 @@
 +                }
 +                pixelsTouchedL += (pDstPixels[0]          ? 1 : 0);
 +                pixelsTouchedR += (pDstPixels[srcWidth-1] ? 1 : 0);
- 
--    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::InitGlyphCache");
++
 +                pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
 +                pDstPixels = (jint*)PtrAddBytes(pDstPixels, lockedRect.Pitch);
 +            }
@@ -19580,19 +22293,7 @@
 +                }
 +                pixelsTouchedL += (pDstPixels[0]          ? 1 : 0);
 +                pixelsTouchedR += (pDstPixels[srcWidth-1] ? 1 : 0);
- 
--    // init glyph cache data structure
--    glyphCache = AccelGlyphCache_Init(D3D_GCACHE_WIDTH,
--                                      D3D_GCACHE_HEIGHT,
--                                      D3D_GCACHE_CELL_WIDTH,
--                                      D3D_GCACHE_CELL_HEIGHT,
--                                      NULL);
--    if (glyphCache == NULL) {
--        J2dRlsTraceLn(J2D_TRACE_ERROR,
--                      "D3DContext::InitGlyphCache: "\
--                      "could not init D3D glyph cache");
--        glyphCacheAvailable = FALSE;
--        return DDERR_GENERIC;
++
 +                pSrcPixels = (jubyte*)PtrAddBytes(pSrcPixels, srcStride);
 +                pDstPixels = (jint*)PtrAddBytes(pDstPixels, lockedRect.Pitch);
 +            }
@@ -19610,69 +22311,53 @@
 +        }
 +    } else {
 +        // should not happen, no-op just in case...
-     }
- 
--    DWORD caps2 = 0, caps = DDSCAPS_TEXTURE;
--    if (bIsHWRasterizer) {
--        caps2 = DDSCAPS2_TEXTUREMANAGE;
--    } else {
--        caps |= DDSCAPS_SYSTEMMEMORY;
++    }
++
 +    if (pPixelsTouchedL) {
 +        *pPixelsTouchedL  = pixelsTouchedL;
-     }
--    if (FAILED(res =
--               dxObject->CreateSurface(DDSD_WIDTH|DDSD_HEIGHT|DDSD_CAPS|
--                                       DDSD_PIXELFORMAT|DDSD_TEXTURESTAGE,
--                                       caps,
--                                       caps2,
--                                       &maskTileTexFormat,
--                                       D3D_GCACHE_WIDTH, D3D_GCACHE_HEIGHT,
--                                       (DXSurface **)&lpGlyphCacheTexture, 0)))
--    {
--        DebugPrintDirectDrawError(res,
--                                  "D3DContext::InitGlyphCache: glyph cache "\
--                                  "texture creation failed");
--        glyphCacheAvailable = FALSE;
--        return res;
++    }
 +    if (pPixelsTouchedR) {
 +        *pPixelsTouchedR = pixelsTouchedR;
-     }
--    return res;
++    }
 +
 +    return pTexture->UnlockRect(0);
- }
- 
- HRESULT
--D3DContext::GlyphCacheAdd(JNIEnv *env, GlyphInfo *glyph)
++}
++
++HRESULT
 +D3DContext::InitLCDGlyphCache()
- {
--    HRESULT res = D3D_OK;
--    if (!glyphCacheAvailable || glyph->image == NULL) {
--        return DDERR_GENERIC;
--    }
--
--    AccelGlyphCache_AddGlyph(glyphCache, glyph);
--
--    if (glyph->cellInfo != NULL) {
--        // store glyph image in texture cell
--        res = UploadImageToTexture(lpGlyphCacheTexture, (jubyte*)glyph->image,
--                                   glyph->cellInfo->x, glyph->cellInfo->y,
--                                   0, 0,
--                                   glyph->width, glyph->height,
--                                   glyph->width);
++{
 +    if (pLCDGlyphCache == NULL) {
 +        return D3DGlyphCache::CreateInstance(this, CACHE_LCD, &pLCDGlyphCache);
-     }
--
--    return res;
++    }
++    return S_OK;
++}
++
++HRESULT
++D3DContext::InitGrayscaleGlyphCache()
++{
++    if (pGrayscaleGlyphCache == NULL) {
++        return D3DGlyphCache::CreateInstance(this, CACHE_GRAY,
++                                             &pGrayscaleGlyphCache);
++    }
 +    return S_OK;
++}
++
++HRESULT
++D3DContext::ResetComposite()
++{
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::ResetComposite");
++
++    RETURN_STATUS_IF_NULL(pd3dDevice, E_FAIL);
++
++    HRESULT res = UpdateState(STATE_CHANGE);
++    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
++    extraAlpha = 1.0f;
+     return res;
  }
  
 -void
 -D3DContext::SetColor(jint eargb, jint flags)
-+HRESULT
-+D3DContext::InitGrayscaleGlyphCache()
- {
+-{
 -    J2dTraceLn2(J2D_TRACE_INFO,
 -                "D3DContext::SetColor: eargb=%08x flags=%d", eargb, flags);
 -
@@ -19693,20 +22378,15 @@
 -        jint g = (((eargb >>  8) & 0xff) * a2) >> 8;
 -        jint b = (((eargb      ) & 0xff) * a2) >> 8;
 -        colorPixel = (a << 24) | (r << 16) | (g << 8) | (b << 0);
-+    if (pGrayscaleGlyphCache == NULL) {
-+        return D3DGlyphCache::CreateInstance(this, CACHE_GRAY,
-+                                             &pGrayscaleGlyphCache);
-     }
+-    }
 -    J2dTraceLn1(J2D_TRACE_VERBOSE, "  updated color: colorPixel=%08x",
 -                colorPixel);
-+    return S_OK;
- }
- 
+-}
+-
 -void
-+HRESULT
- D3DContext::ResetComposite()
- {
-     J2dTraceLn(J2D_TRACE_INFO, "D3DContext::ResetComposite");
+-D3DContext::ResetComposite()
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::ResetComposite");
 -    GetExclusiveAccess();
 -    if (d3dDevice == NULL) {
 -        ReleaseExclusiveAccess();
@@ -19714,16 +22394,10 @@
 -    }
 -    d3dDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE);
 -    compState = sun_java2d_SunGraphics2D_COMP_ISCOPY;
-+
-+    RETURN_STATUS_IF_NULL(pd3dDevice, E_FAIL);
-+
-+    HRESULT res = UpdateState(STATE_CHANGE);
-+    pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
-     extraAlpha = 1.0f;
+-    extraAlpha = 1.0f;
 -    ReleaseExclusiveAccess();
-+    return res;
- }
- 
+-}
+-
 -void
 +HRESULT
  D3DContext::SetAlphaComposite(jint rule, jfloat ea, jint flags)
@@ -19764,7 +22438,8 @@
          J2dTraceLn2(J2D_TRACE_VERBOSE,
                      "  enabling alpha comp (rule=%-1d ea=%f)", rule, ea);
 -        d3dDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, TRUE);
--
++        pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
+ 
 -        d3dDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND,
 -                                  StdBlendRules[rule].src);
 -        d3dDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND,
@@ -19781,8 +22456,12 @@
 -        // the 0xffffffff pixel needs to be premultiplied by extraAlpha
 -        jint ea = (jint)(extraAlpha * 255.0f + 0.5f) & 0xff;
 -        blitPolygonPixel = (ea << 24) | (ea << 16) | (ea << 8) | (ea << 0);
--    }
--
++        pd3dDevice->SetRenderState(D3DRS_SRCBLEND,
++                                   StdBlendRules[rule].src);
++        pd3dDevice->SetRenderState(D3DRS_DESTBLEND,
++                                   StdBlendRules[rule].dst);
+     }
+ 
 -    ReleaseExclusiveAccess();
 -}
 -
@@ -19797,8 +22476,7 @@
 -    HRESULT res;
 -
 -    GetExclusiveAccess();
-+        pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
- 
+-
 -    dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
 -
 -    if (d3dSurfaceType & D3D_TEXTURE_SURFACE) {
@@ -19934,12 +22612,8 @@
 -        DebugPrintDirectDrawError(res,
 -                                  "D3DContext::CreateSurface: error"\
 -                                  " creating surface");
-+        pd3dDevice->SetRenderState(D3DRS_SRCBLEND,
-+                                   StdBlendRules[rule].src);
-+        pd3dDevice->SetRenderState(D3DRS_DESTBLEND,
-+                                   StdBlendRules[rule].dst);
-     }
- 
+-    }
+-
 -    ReleaseExclusiveAccess();
 +    extraAlpha = ea;
      return res;
@@ -19966,6 +22640,9 @@
 +    DWORD dwSampler, dwMaxSampler;
  
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::AttachDepthBuffer");
+-
+-    if (dxSurface == NULL) {
+-        return DDERR_GENERIC;
 +    if (dwSamplerToUpdate == -1) {
 +        // update all used samplers, dwMaxSampler will be set to max
 +        dwSampler = 0;
@@ -19978,13 +22655,31 @@
 +        dwMaxSampler = dwSamplerToUpdate;
 +        J2dTraceLn1(J2D_TRACE_INFO, "D3DContext::UpdateTextureTransforms: "\
 +                                    "updating sampler %d", dwSampler);
-+    }
-+
+     }
+ 
+-    GetExclusiveAccess();
 +    do {
 +        D3DTRANSFORMSTATETYPE state =
 +            (D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE0 + dwSampler);
 +        IDirect3DTexture9 *pTexture = lastTexture[dwSampler];
-+
+ 
+-    // initialize the depth buffer format it needed
+-    if (depthBufferFormat.dwSize == 0) {
+-        // Some hardware has a restriction that the target surface and the
+-        // attached depth buffer must have the same bit depth, so we should
+-        // attempt to find a depth pixel format with the same depth as
+-        // the target.
+-        DWORD prefDepth = dxSurface->ddsd.ddpfPixelFormat.dwRGBBitCount;
+-        if (FAILED(res = D3DUtils_FindDepthBufferFormat(d3dObject,
+-                                                        prefDepth,
+-                                                        &depthBufferFormat,
+-                                                        pDeviceGUID)))
+-        {
+-            DebugPrintDirectDrawError(res,
+-                                      "D3DContext::AttachDepthBuffer: "\
+-                                      "can't find depth buffer format");
+-            ReleaseExclusiveAccess();
+-            return res;
 +        if (pTexture != NULL) {
 +            D3DMATRIX mt, tx;
 +            D3DSURFACE_DESC texDesc;
@@ -20006,33 +22701,12 @@
 +            if (tx._22 == 0.0f) {
 +                tx._22 = tx._21;
 +            }
- 
--    if (dxSurface == NULL) {
--        return DDERR_GENERIC;
--    }
++
 +            pTexture->GetLevelDesc(0, &texDesc);
- 
--    GetExclusiveAccess();
++
 +            // shift by .5 texel, but take into account
 +            // the scale factor of the device transform
- 
--    // initialize the depth buffer format it needed
--    if (depthBufferFormat.dwSize == 0) {
--        // Some hardware has a restriction that the target surface and the
--        // attached depth buffer must have the same bit depth, so we should
--        // attempt to find a depth pixel format with the same depth as
--        // the target.
--        DWORD prefDepth = dxSurface->ddsd.ddpfPixelFormat.dwRGBBitCount;
--        if (FAILED(res = D3DUtils_FindDepthBufferFormat(d3dObject,
--                                                        prefDepth,
--                                                        &depthBufferFormat,
--                                                        pDeviceGUID)))
--        {
--            DebugPrintDirectDrawError(res,
--                                      "D3DContext::AttachDepthBuffer: "\
--                                      "can't find depth buffer format");
--            ReleaseExclusiveAccess();
--            return res;
++
 +            // REMIND: this approach is not entirely correct,
 +            // as it only takes into account the scale of the device
 +            // transform.
@@ -20156,19 +22830,19 @@
 -        J2dTraceLn(J2D_TRACE_VERBOSE,
 -                   "D3DContext:InvalidateIfTarget: invalidating java context");
 +    HRESULT res = S_OK;
-+
-+    if (opState == newState) {
-+        // The op is the same as last time, so we can return immediately.
-+        return res;
-+    } else if (opState != STATE_CHANGE) {
-+        res = FlushVertexQueue();
-+    }
  
 -        jobject jD3DContext_tmp = env->NewLocalRef(jD3DContext);
 -        if (jD3DContext_tmp != NULL) {
 -            JNU_CallMethodByName(env, NULL, jD3DContext_tmp,
 -                                 "invalidateContext", "()V");
 -            env->DeleteLocalRef(jD3DContext_tmp);
++    if (opState == newState) {
++        // The op is the same as last time, so we can return immediately.
++        return res;
++    } else if (opState != STATE_CHANGE) {
++        res = FlushVertexQueue();
++    }
++
 +    switch (opState) {
 +    case STATE_MASKOP:
 +        pMaskCache->Disable();
@@ -20194,7 +22868,8 @@
 +        break;
 +    default:
 +        break;
-+    }
+     }
+-    ReleaseExclusiveAccess();
 +
 +    switch (newState) {
 +    case STATE_MASKOP:
@@ -20213,8 +22888,7 @@
 +        break;
 +    default:
 +        break;
-     }
--    ReleaseExclusiveAccess();
++    }
 +
 +    opState = newState;
 +
@@ -20313,25 +22987,29 @@
              return res;
          }
 -        return D3D_OK;
--    }
--}
--
++        return S_OK;
+     }
+ }
+ 
 -HRESULT D3DContext::EndScene(HRESULT ddResult) {
 -    if (FAILED(ddResult)) {
 -        return ForceEndScene();
-+        return S_OK;
++HRESULT D3DContext::EndScene() {
++    if (bBeginScenePending) {
++        FlushVertexQueue();
++        bBeginScenePending = FALSE;
++        J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EndScene");
++        return pd3dDevice->EndScene();
      }
 -#ifdef DEBUG
 -    endSceneQueueDepth++;
 -#endif /* DEBUG */
 -    return D3D_OK;
- }
- 
+-}
+-
 -HRESULT D3DContext::ForceEndScene() {
-+HRESULT D3DContext::EndScene() {
-     if (bBeginScenePending) {
-+        FlushVertexQueue();
-         bBeginScenePending = FALSE;
+-    if (bBeginScenePending) {
+-        bBeginScenePending = FALSE;
 -        J2dTraceLn(J2D_TRACE_INFO, "D3DContext::ForceEndScene");
 -#ifdef DEBUG
 -        J2dTraceLn1(J2D_TRACE_VERBOSE, "  queue depth=%d",
@@ -20339,9 +23017,7 @@
 -        endSceneQueueDepth = 0;
 -#endif /* DEBUG */
 -        return d3dDevice->EndScene();
-+        J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EndScene");
-+        return pd3dDevice->EndScene();
-     }
+-    }
 -    return D3D_OK;
 +    return S_OK;
  }
@@ -20366,7 +23042,13 @@
 -            // attempting to restore. This is done later
 -            // when VolatileImage.validate() is called.
 -            dstOps->RestoreSurface(env, dstOps);
--
++IDirect3DPixelShader9 *D3DContext::CreateFragmentProgram(DWORD **shaders,
++                                                       ShaderList *programs,
++                                                       jint flags)
++{
++    DWORD *sourceCode;
++    IDirect3DPixelShader9 *pProgram;
+ 
 -            // if this is an "unexpected" error, disable acceleration
 -            // of this image to avoid an infinite recreate/render/error loop
 -            if (res != DDERR_SURFACELOST && res != DDERR_INVALIDMODE &&
@@ -20380,19 +23062,12 @@
 -                    env->DeleteLocalRef(sdObject);
 -                }
 -            }
-+IDirect3DPixelShader9 *D3DContext::CreateFragmentProgram(DWORD **shaders,
-+                                                       ShaderList *programs,
-+                                                       jint flags)
-+{
-+    DWORD *sourceCode;
-+    IDirect3DPixelShader9 *pProgram;
++    J2dTraceLn1(J2D_TRACE_INFO,
++                "D3DContext::CreateFragmentProgram: flags=%d",
++                flags);
  
 -        }
 -        SurfaceData_ThrowInvalidPipeException(env, "Surface Lost");
-+    J2dTraceLn1(J2D_TRACE_INFO,
-+                "D3DContext::CreateFragmentProgram: flags=%d",
-+                flags);
-+
 +    sourceCode = shaders[flags];
 +    if (FAILED(pd3dDevice->CreatePixelShader(sourceCode, &pProgram))) {
 +        J2dRlsTraceLn(J2D_TRACE_ERROR,
@@ -20424,9 +23099,15 @@
 -     jdouble m00, jdouble m10,
 -     jdouble m01, jdouble m11,
 -     jdouble m02, jdouble m12)
--{
++HRESULT D3DContext::EnableFragmentProgram(DWORD **shaders,
++                                          ShaderList *programList,
++                                          jint flags)
+ {
 -    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
--
++    HRESULT res;
++    jlong programID;
++    IDirect3DPixelShader9 *pProgram;
+ 
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setTransform");
 -    if (pd3dc != NULL) {
 -        HRESULT res = pd3dc->SetTransform(xform,
@@ -20434,14 +23115,6 @@
 -                                          m01,  m11,
 -                                          m02,  m12);
 -        D3DContext_CheckResult(env, res, pDest);
-+HRESULT D3DContext::EnableFragmentProgram(DWORD **shaders,
-+                                          ShaderList *programList,
-+                                          jint flags)
-+{
-+    HRESULT res;
-+    jlong programID;
-+    IDirect3DPixelShader9 *pProgram;
-+
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EnableFragmentProgram");
 +
 +    programID =
@@ -20454,13 +23127,13 @@
 +        if (pProgram == NULL) {
 +            return E_FAIL;
 +        }
-+    }
+     }
 +
 +    if (FAILED(res = pd3dDevice->SetPixelShader(pProgram))) {
 +        J2dRlsTraceLn(J2D_TRACE_ERROR,
 +            "D3DContext::EnableFragmentProgram: error setting pixel shader");
 +        return res;
-     }
++    }
 +
 +    return S_OK;
  }
@@ -20475,19 +23148,14 @@
 +HRESULT D3DContext::EnableBasicGradientProgram(jint flags)
  {
 -    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
-+    return EnableFragmentProgram((DWORD **)gradShaders,
-+                                 &basicGradPrograms, flags);
-+}
- 
+-
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_resetTransform");
 -    if (pd3dc != NULL) {
 -        HRESULT res = pd3dc->SetTransform(NULL, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
 -        D3DContext_CheckResult(env, res, pDest);
 -    }
-+HRESULT D3DContext::EnableLinearGradientProgram(jint flags)
-+{
-+    return EnableFragmentProgram((DWORD **)linearShaders,
-+                                 &linearGradPrograms, flags);
++    return EnableFragmentProgram((DWORD **)gradShaders,
++                                 &basicGradPrograms, flags);
  }
  
 -/*
@@ -20499,7 +23167,8 @@
 -    (JNIEnv *env, jobject d3dc, jlong pCtx, jlong pDest,
 -     jobject clip, jboolean isRect,
 -     jint x1, jint y1, jint x2, jint y2)
--{
++HRESULT D3DContext::EnableLinearGradientProgram(jint flags)
+ {
 -    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
 -
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setClip");
@@ -20507,10 +23176,8 @@
 -        HRESULT res = pd3dc->SetClip(env, clip, isRect, x1, y1, x2, y2);
 -        D3DContext_CheckResult(env, res, pDest);
 -    }
-+HRESULT D3DContext::EnableRadialGradientProgram(jint flags)
-+{
-+    return EnableFragmentProgram((DWORD **)radialShaders,
-+                                 &radialGradPrograms, flags);
++    return EnableFragmentProgram((DWORD **)linearShaders,
++                                 &linearGradPrograms, flags);
  }
  
 -/*
@@ -20520,22 +23187,17 @@
 - */
 -JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DContext_resetClip
 -    (JNIEnv *env, jobject d3dc, jlong pCtx, jlong pDest)
-+HRESULT D3DContext::EnableConvolveProgram(jint flags)
++HRESULT D3DContext::EnableRadialGradientProgram(jint flags)
  {
 -    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
-+    return EnableFragmentProgram((DWORD **)convolveShaders,
-+                                 &convolvePrograms, flags);
-+}
- 
+-
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_resetClip");
 -    if (pd3dc != NULL) {
 -        HRESULT res = pd3dc->SetClip(env, NULL, JNI_FALSE, 0, 0, 0, 0);
 -        D3DContext_CheckResult(env, res, pDest);
 -    }
-+HRESULT D3DContext::EnableRescaleProgram(jint flags)
-+{
-+    return EnableFragmentProgram((DWORD **)rescaleShaders,
-+                                 &rescalePrograms, flags);
++    return EnableFragmentProgram((DWORD **)radialShaders,
++                                 &radialGradPrograms, flags);
  }
  
 -/*
@@ -20545,32 +23207,19 @@
 - */
 -JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DContext_setRenderTarget
 -    (JNIEnv *env, jobject d3dc, jlong pCtx, jlong pDest)
-+HRESULT D3DContext::EnableLookupProgram(jint flags)
-+{
-+    return EnableFragmentProgram((DWORD **)lookupShaders,
-+                                 &lookupPrograms, flags);
-+}
-+
-+HRESULT D3DContext::EnableLCDTextProgram()
++HRESULT D3DContext::EnableConvolveProgram(jint flags)
  {
 -    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
 -    Win32SDOps *dstOps = (Win32SDOps *)jlong_to_ptr(pDest);
-+    HRESULT res;
- 
+-
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setRenderTarget");
 -    if (pd3dc != NULL && dstOps != NULL) {
 -        HRESULT res = pd3dc->SetRenderTarget(dstOps->lpSurface);
 -        D3DContext_CheckResult(env, res, pDest);
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EnableLCDTextProgram");
-+
-+    if (lcdTextProgram == NULL) {
-+        if (FAILED(res = pd3dDevice->CreatePixelShader(lcdtext0,
-+                                                       &lcdTextProgram)))
-+        {
-+            return res;
-+        }
-     }
--}
+-    }
++    return EnableFragmentProgram((DWORD **)convolveShaders,
++                                 &convolvePrograms, flags);
+ }
  
 -/*
 - * Class:     sun_java2d_d3d_D3DContext
@@ -20581,19 +23230,16 @@
 -Java_sun_java2d_d3d_D3DContext_setColor(JNIEnv *env, jobject oc,
 -                                        jlong pCtx,
 -                                        jint pixel, jint flags)
--{
++HRESULT D3DContext::EnableRescaleProgram(jint flags)
+ {
 -    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
 -
 -    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setColor");
 -    if (d3dc != NULL) {
 -        d3dc->SetColor(pixel, flags);
-+    if (FAILED(res = pd3dDevice->SetPixelShader(lcdTextProgram))) {
-+        J2dRlsTraceLn(J2D_TRACE_ERROR,
-+            "D3DContext::EnableLCDTextProgram: error setting pixel shader");
-+        return res;
-     }
-+
-+    return S_OK;
+-    }
++    return EnableFragmentProgram((DWORD **)rescaleShaders,
++                                 &rescalePrograms, flags);
  }
  
 -/*
@@ -20607,11 +23253,50 @@
 -                                                 jint rule,
 -                                                 jfloat extraAlpha,
 -                                                 jint flags)
++HRESULT D3DContext::EnableLookupProgram(jint flags)
+ {
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
++    return EnableFragmentProgram((DWORD **)lookupShaders,
++                                 &lookupPrograms, flags);
++}
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setAlphaComposite");
+-    if (d3dc != NULL) {
+-        d3dc->SetAlphaComposite(rule, extraAlpha, flags);
++HRESULT D3DContext::EnableLCDTextProgram()
++{
++    HRESULT res;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EnableLCDTextProgram");
++
++    if (lcdTextProgram == NULL) {
++        if (FAILED(res = pd3dDevice->CreatePixelShader(lcdtext0,
++                                                       &lcdTextProgram)))
++        {
++            return res;
++        }
+     }
+ 
++    if (FAILED(res = pd3dDevice->SetPixelShader(lcdTextProgram))) {
++        J2dRlsTraceLn(J2D_TRACE_ERROR,
++            "D3DContext::EnableLCDTextProgram: error setting pixel shader");
++        return res;
++    }
++
++    return S_OK;
+ }
+ 
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_d3d_D3DContext_resetComposite(JNIEnv *env, jobject oc,
+-                                              jlong pCtx)
 +HRESULT D3DContext::EnableAAParallelogramProgram()
  {
 -    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
 +    HRESULT res;
-+
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_resetComposite");
+-    if (d3dc != NULL) {
+-        d3dc->ResetComposite();
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::EnableAAParallelogramProgram");
 +
 +    if (aaPgramProgram == NULL) {
@@ -20621,41 +23306,13 @@
 +                               "error creating pixel shader");
 +            return res;
 +        }
-+    }
- 
--    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_setAlphaComposite");
--    if (d3dc != NULL) {
--        d3dc->SetAlphaComposite(rule, extraAlpha, flags);
+     }
++
 +    if (FAILED(res = pd3dDevice->SetPixelShader(aaPgramProgram))) {
 +        DebugPrintD3DError(res, "D3DContext::EnableAAParallelogramProgram: "
 +                           "error setting pixel shader");
 +        return res;
-     }
- 
-+    return S_OK;
- }
- 
--JNIEXPORT void JNICALL
--Java_sun_java2d_d3d_D3DContext_resetComposite(JNIEnv *env, jobject oc,
--                                              jlong pCtx)
-+HRESULT D3DContext::DisableAAParallelogramProgram()
- {
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
-+    HRESULT res;
- 
--    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_resetComposite");
--    if (d3dc != NULL) {
--        d3dc->ResetComposite();
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::DisableAAParallelogramProgram");
-+
-+    if (aaPgramProgram != NULL) {
-+        if (FAILED(res = pd3dDevice->SetPixelShader(NULL))) {
-+            DebugPrintD3DError(res,
-+                               "D3DContext::DisableAAParallelogramProgram: "
-+                               "error clearing pixel shader");
-+            return res;
-+        }
-     }
++    }
 +
 +    return S_OK;
  }
@@ -20668,25 +23325,48 @@
 -JNIEXPORT jlong JNICALL
 -Java_sun_java2d_d3d_D3DContext_initNativeContext
 -  (JNIEnv *env, jobject d3dc, jint screen)
--{
++HRESULT D3DContext::DisableAAParallelogramProgram()
+ {
 -    J2dTraceLn1(J2D_TRACE_INFO, "D3DContext_initNativeContext screen=%d",
 -                screen);
--
++    HRESULT res;
+ 
 -    HMONITOR hMon = (HMONITOR)AwtWin32GraphicsDevice::GetMonitor(screen);
 -    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
 -    D3DContext *d3dContext = NULL;
--
++    J2dTraceLn(J2D_TRACE_INFO, "D3DContext::DisableAAParallelogramProgram");
+ 
 -    if (tmpDdInstance != NULL && tmpDdInstance->ddObject != NULL) {
 -        AwtToolkit::GetInstance().SendMessage(WM_AWT_D3D_CREATE_DEVICE,
 -                                              (WPARAM)tmpDdInstance->ddObject,
 -                                              NULL);
 -        d3dContext = tmpDdInstance->ddObject->GetD3dContext();
--    }
++    if (aaPgramProgram != NULL) {
++        if (FAILED(res = pd3dDevice->SetPixelShader(NULL))) {
++            DebugPrintD3DError(res,
++                               "D3DContext::DisableAAParallelogramProgram: "
++                               "error clearing pixel shader");
++            return res;
++        }
+     }
 -    J2dTraceLn1(J2D_TRACE_VERBOSE,
 -                "D3DContext_initNativeContext created d3dContext=0x%x",
 -                d3dContext);
+ 
+-    return ptr_to_jlong(d3dContext);
++    return S_OK;
+ }
+ 
+-/*
+- * Class:     sun_java2d_d3d_D3DContext
+- * Method:    getNativeDeviceCaps
+- * Signature: (J)I
+- */
+-JNIEXPORT jint JNICALL Java_sun_java2d_d3d_D3DContext_getNativeDeviceCaps
+-  (JNIEnv *env, jobject d3dc, jlong pCtx)
 +BOOL D3DContext::IsAlphaRTSurfaceSupported()
-+{
+ {
+-    D3DContext *d3dContext = (D3DContext *)jlong_to_ptr(pCtx);
 +    HRESULT res = pd3dObject->CheckDeviceFormat(adapterOrdinal,
 +            devCaps.DeviceType,
 +            curParams.BackBufferFormat,
@@ -20696,7 +23376,10 @@
 +    return SUCCEEDED(res);
 +}
  
--    return ptr_to_jlong(d3dContext);
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_getNativeDeviceCaps");
+-    if (d3dContext != NULL) {
+-        d3dContext->SetJavaContext(env, d3dc);
+-        return (jint)d3dContext->GetDeviceCaps();
 +BOOL D3DContext::IsAlphaRTTSupported()
 +{
 +    HRESULT res = pd3dObject->CheckDeviceFormat(adapterOrdinal,
@@ -20706,18 +23389,10 @@
 +            D3DRTYPE_TEXTURE,
 +            D3DFMT_A8R8G8B8);
 +    return SUCCEEDED(res);
- }
- 
--/*
-- * Class:     sun_java2d_d3d_D3DContext
-- * Method:    getNativeDeviceCaps
-- * Signature: (J)I
-- */
--JNIEXPORT jint JNICALL Java_sun_java2d_d3d_D3DContext_getNativeDeviceCaps
--  (JNIEnv *env, jobject d3dc, jlong pCtx)
++}
++
 +BOOL D3DContext::IsOpaqueRTTSupported()
- {
--    D3DContext *d3dContext = (D3DContext *)jlong_to_ptr(pCtx);
++{
 +    HRESULT res = pd3dObject->CheckDeviceFormat(adapterOrdinal,
 +            devCaps.DeviceType,
 +            curParams.BackBufferFormat,
@@ -20735,15 +23410,12 @@
 +        contextCaps = CAPS_EMPTY;
 +        J2dRlsTraceLn(J2D_TRACE_VERBOSE, "  | CAPS_EMPTY");
 +        return E_FAIL;
-+    }
+     }
+-    return J2D_D3D_FAILURE;
 +
 +    contextCaps = CAPS_DEVICE_OK;
 +    J2dRlsTraceLn(J2D_TRACE_VERBOSE, "  | CAPS_DEVICE_OK");
- 
--    J2dTraceLn(J2D_TRACE_INFO, "D3DContext_getNativeDeviceCaps");
--    if (d3dContext != NULL) {
--        d3dContext->SetJavaContext(env, d3dc);
--        return (jint)d3dContext->GetDeviceCaps();
++
 +    if (IsAlphaRTSurfaceSupported()) {
 +        contextCaps |= CAPS_RT_PLAIN_ALPHA;
 +        J2dRlsTraceLn(J2D_TRACE_VERBOSE, "  | CAPS_RT_PLAIN_ALPHA");
@@ -20786,13 +23458,12 @@
 +    if (!IsSquareTexturesOnly()) {
 +        contextCaps |= CAPS_TEXNONSQUARE;
 +        J2dRlsTraceLn(J2D_TRACE_VERBOSE, "  | CAPS_TEXNONSQUARE");
-     }
--    return J2D_D3D_FAILURE;
++    }
 +    return S_OK;
  }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DContext.h
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DContext.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -20985,15 +23656,22 @@
 -     * lock is already taken. They're marked with 'NOLOCK' comment.
 -     * Those methods not dealing with the d3d device interface are not
 -     * required to obtain the lock (and not marked with NOLOCK)
--     */
++     * Glyph cache-related methods
+      */
 -    void GetExclusiveAccess() { CRITICAL_SECTION_ENTER(deviceLock);}
 -    void ReleaseExclusiveAccess() { CRITICAL_SECTION_LEAVE(deviceLock);}
--
++    HRESULT InitGrayscaleGlyphCache();
++    HRESULT InitLCDGlyphCache();
++    D3DGlyphCache* GetGrayscaleGlyphCache() { return pGrayscaleGlyphCache; }
++    D3DGlyphCache* GetLCDGlyphCache() { return pLCDGlyphCache; }
+ 
 -    // methods replicating java-level D3DContext objext
 -    void SetColor(jint eargb, jint flags);
 -    void SetAlphaComposite(jint rule, jfloat extraAlpha, jint flags);
 -    void ResetComposite();
--
++    D3DResourceManager *GetResourceManager() { return pResourceMgr; }
++    D3DMaskCache       *GetMaskCache() { return pMaskCache; }
+ 
 -    // Glyph cache-related methods
 -    HRESULT /*NOLOCK*/ InitGlyphCache();
 -    HRESULT /*NOLOCK*/ GlyphCacheAdd(JNIEnv *env, GlyphInfo *glyph);
@@ -21005,30 +23683,6 @@
 -    DXSurface /*NOLOCK*/ *GetGlyphCacheTexture() { return lpGlyphCacheTexture; }
 -    DXSurface /*NOLOCK*/ *GetMaskTexture();
 -    GlyphCacheInfo *GetGlyphCache() { return glyphCache; }
--
--    HRESULT CreateSurface(JNIEnv *env,
--                          jint width, jint height, jint depth,
--                          jint transparency, jint d3dSurfaceType,
--                          DXSurface** dxSurface, jint* pType);
--
--    /**
--     * Attaches a depth buffer to the specified dxSurface.
--     * If depthBufferFormat is not initialized (depthBufferFormat.dwSize == 0),
--     * it will be initialized at the time of the call.
--     *
--     * If the buffer for this surface already exists, a "lost" status of the
--     * depth buffer is returned.
-+     * Glyph cache-related methods
-      */
--    HRESULT AttachDepthBuffer(DXSurface *dxSurface);
-+    HRESULT InitGrayscaleGlyphCache();
-+    HRESULT InitLCDGlyphCache();
-+    D3DGlyphCache* GetGrayscaleGlyphCache() { return pGrayscaleGlyphCache; }
-+    D3DGlyphCache* GetLCDGlyphCache() { return pLCDGlyphCache; }
-+
-+    D3DResourceManager *GetResourceManager() { return pResourceMgr; }
-+    D3DMaskCache       *GetMaskCache() { return pMaskCache; }
-+
 +    HRESULT UploadTileToTexture(D3DResource *pTextureRes, void *pixels,
 +                                jint dstx, jint dsty,
 +                                jint srcx, jint srcy,
@@ -21039,13 +23693,27 @@
 +                                // columns, only counted for LCD glyph uploads
 +                                jint *pPixelsTouchedL = NULL,
 +                                jint *pPixelsTouchedR = NULL);
-+
+ 
+-    HRESULT CreateSurface(JNIEnv *env,
+-                          jint width, jint height, jint depth,
+-                          jint transparency, jint d3dSurfaceType,
+-                          DXSurface** dxSurface, jint* pType);
 +    // returns capabilities of the Direct3D device
 +    D3DCAPS9 *GetDeviceCaps() { return &devCaps; }
 +    // returns caps in terms of the D3DContext
 +    int GetContextCaps() { return contextCaps; }
 +    D3DPRESENT_PARAMETERS *GetPresentationParams() { return &curParams; }
  
+-    /**
+-     * Attaches a depth buffer to the specified dxSurface.
+-     * If depthBufferFormat is not initialized (depthBufferFormat.dwSize == 0),
+-     * it will be initialized at the time of the call.
+-     *
+-     * If the buffer for this surface already exists, a "lost" status of the
+-     * depth buffer is returned.
+-     */
+-    HRESULT AttachDepthBuffer(DXSurface *dxSurface);
+-
 -    // methods for dealing with device capabilities as determined by
 -    // methods in D3DRuntimeTest
 -    int GetDeviceCaps() { return deviceCaps; }
@@ -21082,25 +23750,37 @@
 -    HRESULT SetClip(JNIEnv *env, jobject clip,
 -                    jboolean isRect,
 -                    int x1, int y1, int x2, int y2);
--
++    HRESULT ResetTransform();
+ 
 -    DWORD GetMinTextureWidth() { return d3dDevDesc.dwMinTextureWidth; }
 -    DWORD GetMinTextureHeight() { return d3dDevDesc.dwMinTextureHeight; }
 -    DWORD GetMaxTextureWidth() { return d3dDevDesc.dwMaxTextureWidth; }
 -    DWORD GetMaxTextureHeight() { return d3dDevDesc.dwMaxTextureHeight; }
 -    DWORD GetMaxTextureAspectRatio()
 -        { return d3dDevDesc.dwMaxTextureAspectRatio; };
-+    HRESULT ResetTransform();
-+
+-    BOOL IsPow2TexturesOnly()
+-        { return d3dDevDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_POW2; };
+-    BOOL IsSquareTexturesOnly()
+-        { return d3dDevDesc.dpcTriCaps.dwTextureCaps &
+-              D3DPTEXTURECAPS_SQUAREONLY; }
 +    // clipping-related methods
 +    HRESULT SetRectClip(int x1, int y1, int x2, int y2);
 +    HRESULT BeginShapeClip();
 +    HRESULT EndShapeClip();
 +    HRESULT ResetClip();
 +    ClipType GetClipType();
-+
-+    /**
+ 
+     /**
+-     * This method invalidates the java-level D3DContext object if
+-     * the passed DDrawSurface is the current render target.
+-     * The invalidation needs to be done so that the D3DContext object
+-     * resets itself in case the native d3d device has been recreated, or
+-     * the target surface has been lost (in which case this method is called
+-     * from D3DSD_RestoreSurface function, see D3DSD_RestoreSurface for
+-     * more info).
 +     * Shader-related methods
-+     */
+      */
+-    void InvalidateIfTarget(JNIEnv *env, DDrawSurface *lpSurface);
 +    HRESULT EnableBasicGradientProgram(jint flags);
 +    HRESULT EnableLinearGradientProgram(jint flags);
 +    HRESULT EnableRadialGradientProgram(jint flags);
@@ -21113,12 +23793,9 @@
 +
 +    BOOL IsTextureFilteringSupported(D3DTEXTUREFILTERTYPE fType);
 +    BOOL IsStretchRectFilteringSupported(D3DTEXTUREFILTERTYPE fType);
-     BOOL IsPow2TexturesOnly()
--        { return d3dDevDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_POW2; };
++    BOOL IsPow2TexturesOnly()
 +        { return devCaps.TextureCaps & D3DPTEXTURECAPS_POW2; };
-     BOOL IsSquareTexturesOnly()
--        { return d3dDevDesc.dpcTriCaps.dwTextureCaps &
--              D3DPTEXTURECAPS_SQUAREONLY; }
++    BOOL IsSquareTexturesOnly()
 +        { return devCaps.TextureCaps & D3DPTEXTURECAPS_SQUAREONLY; }
 +    BOOL IsHWRasterizer() { return bIsHWRasterizer; }
 +    BOOL IsTextureFormatSupported(D3DFORMAT format, DWORD usage = 0);
@@ -21147,17 +23824,7 @@
 +    HRESULT FlushVertexQueue();
 +    D3DVertexCacher *pVCacher;
 +    HRESULT UpdateState(jbyte newState);
- 
--    /**
--     * This method invalidates the java-level D3DContext object if
--     * the passed DDrawSurface is the current render target.
--     * The invalidation needs to be done so that the D3DContext object
--     * resets itself in case the native d3d device has been recreated, or
--     * the target surface has been lost (in which case this method is called
--     * from D3DSD_RestoreSurface function, see D3DSD_RestoreSurface for
--     * more info).
--     */
--    void InvalidateIfTarget(JNIEnv *env, DDrawSurface *lpSurface);
++
 +    HRESULT Sync();
  
      // primitives batching-related methods
@@ -21166,24 +23833,24 @@
       * sets the pending flag.
       */
 -    HRESULT /*NOLOCK*/ BeginScene(jbyte newState);
--    /**
++    HRESULT BeginScene(jbyte newState);
+     /**
 -     * Only calls device's EndScene if ddResult is an error.
--     */
++     * Flushes the vertex queue and does end scene if
++     * a BeginScene is pending
+      */
 -    HRESULT /*NOLOCK*/ EndScene(HRESULT ddResult);
-+    HRESULT BeginScene(jbyte newState);
++    HRESULT EndScene();
++
      /**
 -     * forces the end of batching by calling EndScene if
 -     * there was BeginScene pending.
-+     * Flushes the vertex queue and does end scene if
-+     * a BeginScene is pending
++     * Fields that track native-specific state.
       */
 -    HRESULT /*NOLOCK*/ ForceEndScene();
-+    HRESULT EndScene();
-+
-     /**
+-    /**
 -     * flushes the queue if the argument is this device's render target
-+     * Fields that track native-specific state.
-      */
+-     */
 -    void    FlushD3DQueueForTarget(DDrawSurface *ddSurface);
 -
 -    // fields replicating D3DContext class' fields
@@ -21205,8 +23872,7 @@
  private:
 -    D3DContext(DDraw *ddObject, DXObject* dxObject);
 -    HRESULT InitD3DDevice(IDirect3DDevice7 *d3dDevice);
-+
-     /**
+-    /**
 -     * This method releases an old device, creates a new one,
 -     * runs d3d caps tests on it and sets the device caps according
 -     * to the results.
@@ -21230,19 +23896,23 @@
 -    BOOL                    glyphCacheAvailable;
 -    // array of the textures currently set to the device
 -    IDirectDrawSurface7     *lastTexture[MAX_USED_TEXTURE_STAGE+1];
-+     * Glyph cache-related methods/fields...
-+     */
-+    D3DGlyphCache *pGrayscaleGlyphCache;
-+    D3DGlyphCache *pLCDGlyphCache;
  
      /**
 -     * A weak reference to the java-level D3DContext object.
 -     * Used to invalidate the java D3DContext object if the device has been
 -     * recreated.
 -     * See SetJavaContext() method.
-+     * The handle to the LCD text pixel shader program.
++     * Glyph cache-related methods/fields...
       */
 -    jobject jD3DContext;
++    D3DGlyphCache *pGrayscaleGlyphCache;
++    D3DGlyphCache *pLCDGlyphCache;
+ 
+-    D3DDEVICEDESC7 d3dDevDesc;
+-    int deviceCaps;
++    /**
++     * The handle to the LCD text pixel shader program.
++     */
 +    IDirect3DPixelShader9 *lcdTextProgram;
 +
 +    /**
@@ -21288,9 +23958,7 @@
 +    ShaderList basicGradPrograms;
 +    ShaderList linearGradPrograms;
 +    ShaderList radialGradPrograms;
- 
--    D3DDEVICEDESC7 d3dDevDesc;
--    int deviceCaps;
++
 +    // array of the textures currently set to the device
 +    IDirect3DTexture9     *lastTexture[MAX_USED_TEXTURE_SAMPLER+1];
 +
@@ -21322,22 +23990,15 @@
  };
  
 -// - Various vertex formats -------------------------------------------
-+// - Helper Macros ---------------------------------------------------
- 
+-
 -#define D3DFVF_J2DLVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
 -typedef struct _J2DLVERTEX {
 -    float x, y, z;
 -    DWORD color;
 -    float tu, tv;
 -} J2DLVERTEX;
-+#define D3DC_INIT_SHADER_LIST(list, max) \
-+    do { \
-+        (list).head     = NULL; \
-+        (list).maxItems = (max); \
-+        (list).dispose  = D3DContext_DisposeShader; \
-+    } while (0)
- 
- /**
+-
+-/**
 - * We're still debating whether to use a single vertex format
 - * for all primitives or specific per-primitive formats.
 - * Using different vertex formats reduces the amount of
@@ -21351,11 +24012,7 @@
 - * vertex formats (and according to MSDN, switching vertex format
 - * is a very expensive operation). So for this kind of application
 - * it's better to stick with a single vertex format.
-+ * This constant determines the size of the shared tile texture used
-+ * by a number of image rendering methods.  For example, the blit tile texture
-+ * will have dimensions with width D3DC_BLIT_TILE_SIZE and height
-+ * D3DC_BLIT_TILE_SIZE (the tile will always be square).
-  */
+- */
 -#define USE_SINGLE_VERTEX_FORMAT
 -
 -#ifndef USE_SINGLE_VERTEX_FORMAT
@@ -21389,30 +24046,73 @@
 -typedef J2D_XY_VERTEX   J2DXY_HEXA[6];
 -#define MAX_CACHED_SPAN_VX_NUM 100
 -
--// - Helper Macros ---------------------------------------------------
--
+ // - Helper Macros ---------------------------------------------------
+ 
 -#define D3D_DEPTH_IDX(DEPTH) \
 -  (((DEPTH) <= 16) ? DEPTH16_IDX : \
 -    (((DEPTH) <= 24) ? DEPTH24_IDX : DEPTH32_IDX))
--
++#define D3DC_INIT_SHADER_LIST(list, max) \
++    do { \
++        (list).head     = NULL; \
++        (list).maxItems = (max); \
++        (list).dispose  = D3DContext_DisposeShader; \
++    } while (0)
+ 
 -#define D3D_TR_IDX(TRAN) ((TRAN) - 1)
--
++/**
++ * This constant determines the size of the shared tile texture used
++ * by a number of image rendering methods.  For example, the blit tile texture
++ * will have dimensions with width D3DC_BLIT_TILE_SIZE and height
++ * D3DC_BLIT_TILE_SIZE (the tile will always be square).
++ */
++#define D3DC_BLIT_TILE_SIZE 256
+ 
 -#define D3DSD_MASK_TILE_SIZE 32
 -#define D3D_GCACHE_WIDTH 512
 -#define D3D_GCACHE_HEIGHT 512
 -#define D3D_GCACHE_CELL_WIDTH 16
 -#define D3D_GCACHE_CELL_HEIGHT 16
-+#define D3DC_BLIT_TILE_SIZE 256
- 
 +/**
 + * See BufferedContext.java for more on these flags...
 + */
- #define D3DC_NO_CONTEXT_FLAGS \
--    sun_java2d_d3d_D3DContext_NO_CONTEXT_FLAGS
++#define D3DC_NO_CONTEXT_FLAGS \
 +    sun_java2d_pipe_BufferedContext_NO_CONTEXT_FLAGS
- #define D3DC_SRC_IS_OPAQUE    \
++#define D3DC_SRC_IS_OPAQUE    \
++    sun_java2d_pipe_BufferedContext_SRC_IS_OPAQUE
++#define D3DC_USE_MASK         \
++    sun_java2d_pipe_BufferedContext_USE_MASK
+ 
+-#define D3DC_NO_CONTEXT_FLAGS \
+-    sun_java2d_d3d_D3DContext_NO_CONTEXT_FLAGS
+-#define D3DC_SRC_IS_OPAQUE    \
 -    sun_java2d_d3d_D3DContext_SRC_IS_OPAQUE
--
++#define CAPS_EMPTY          \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_EMPTY
++#define CAPS_RT_PLAIN_ALPHA \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_PLAIN_ALPHA
++#define CAPS_RT_TEXTURE_ALPHA      \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_TEXTURE_ALPHA
++#define CAPS_RT_TEXTURE_OPAQUE     \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_TEXTURE_OPAQUE
++#define CAPS_MULTITEXTURE   \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_MULTITEXTURE
++#define CAPS_TEXNONPOW2     \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_TEXNONPOW2
++#define CAPS_TEXNONSQUARE   \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_TEXNONSQUARE
++#define CAPS_LCD_SHADER     \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_LCD_SHADER
++#define CAPS_BIOP_SHADER    \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_BIOP_SHADER
++#define CAPS_AA_SHADER    \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_AA_SHADER
++#define CAPS_DEVICE_OK      \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_DEVICE_OK
++#define CAPS_PS20           \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_PS20
++#define CAPS_PS30           \
++    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_PS30
+ 
 -#define J2D_D3D_FAILURE \
 -    sun_java2d_d3d_D3DContext_J2D_D3D_FAILURE
 -#define J2D_D3D_PLAIN_SURFACE_OK \
@@ -21445,37 +24145,6 @@
 -    sun_java2d_d3d_D3DContext_J2D_D3D_HW_OK
 -#define J2D_D3D_ENABLED_OK \
 -    sun_java2d_d3d_D3DContext_J2D_D3D_ENABLED_OK
-+    sun_java2d_pipe_BufferedContext_SRC_IS_OPAQUE
-+#define D3DC_USE_MASK         \
-+    sun_java2d_pipe_BufferedContext_USE_MASK
-+
-+#define CAPS_EMPTY          \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_EMPTY
-+#define CAPS_RT_PLAIN_ALPHA \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_PLAIN_ALPHA
-+#define CAPS_RT_TEXTURE_ALPHA      \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_TEXTURE_ALPHA
-+#define CAPS_RT_TEXTURE_OPAQUE     \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_RT_TEXTURE_OPAQUE
-+#define CAPS_MULTITEXTURE   \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_MULTITEXTURE
-+#define CAPS_TEXNONPOW2     \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_TEXNONPOW2
-+#define CAPS_TEXNONSQUARE   \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_TEXNONSQUARE
-+#define CAPS_LCD_SHADER     \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_LCD_SHADER
-+#define CAPS_BIOP_SHADER    \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_BIOP_SHADER
-+#define CAPS_AA_SHADER    \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_AA_SHADER
-+#define CAPS_DEVICE_OK      \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_DEVICE_OK
-+#define CAPS_PS20           \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_PS20
-+#define CAPS_PS30           \
-+    sun_java2d_d3d_D3DContext_D3DContextCaps_CAPS_PS30
-+
 +#define DEVICE_RESET    \
 +    sun_java2d_pipe_hw_AccelDeviceEventNotifier_DEVICE_RESET
 +#define DEVICE_DISPOSED \
@@ -21483,33 +24152,33 @@
  
 -#endif D3DCONTEXT_H
 +#endif // D3DCONTEXT_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,207 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "D3DGlyphCache.h"
@@ -21694,33 +24363,33 @@
 +        d3dc->FlushVertexQueue();
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DGlyphCache.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGlyphCache.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,89 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DGLYPHCACHE_H
@@ -21787,33 +24456,33 @@
 +    jboolean lastRGBOrder;
 +};
 +#endif // D3DGLYPHCACHE_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,507 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "sun_java2d_d3d_D3DGraphicsDevice.h"
@@ -22298,66 +24967,66 @@
 +}
 +
 +} // extern "C"
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DGraphicsDevice.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,29 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef _D3DGRAPHICSDEVICE_H_
 +#define _D3DGRAPHICSDEVICE_H_
 +
 +#endif /* _D3DGRAPHICSDEVICE_H_ */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,107 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include <stdlib.h>
@@ -22442,33 +25111,33 @@
 +
 +    return res;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskBlit.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskBlit.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,36 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DMaskBlit_h_Included
@@ -22482,33 +25151,33 @@
 +                             void *pPixels);
 +
 +#endif /* D3DMaskBlit_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,157 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "D3DMaskCache.h"
@@ -22643,33 +25312,33 @@
 +    return pCtx->pVCacher->DrawTexture(dx1, dy1, dx2, dy2,
 +                                       tx1, ty1, tx2, ty2);
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskCache.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskCache.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,83 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DMASKCACHE_H
@@ -22730,9 +25399,9 @@
 +};
 +
 +#endif // D3DMASKCACHE_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -22754,7 +25423,9 @@
  #include "sun_java2d_d3d_D3DMaskFill.h"
  
 -#include "Win32SurfaceData.h"
--
++#include "D3DMaskFill.h"
++#include "D3DRenderQueue.h"
+ 
 -#include "D3DContext.h"
 -#include "D3DUtils.h"
 -
@@ -22768,9 +25439,7 @@
 -     jbyteArray maskArray,
 -     jint maskoff, jint maskscan);
 -
-+#include "D3DMaskFill.h"
-+#include "D3DRenderQueue.h"
- 
+-
 -JNIEXPORT void JNICALL
 -Java_sun_java2d_d3d_D3DMaskFill_MaskFill
 -    (JNIEnv *env, jobject self,
@@ -22806,8 +25475,13 @@
 -    J2dTraceLn4(J2D_TRACE_VERBOSE, "  x=%-4d y=%-4d w=%-4d h=%-4d",
 -                x, y, w, h);
 -    J2dTraceLn2(J2D_TRACE_VERBOSE, "  maskoff=%-4d maskscan=%-4d",
--                maskoff, maskscan);
--
++
++    RETURN_STATUS_IF_NULL(d3dc, E_FAIL);
++
++    J2dTraceLn4(J2D_TRACE_VERBOSE, "  x=%d y=%d w=%d h=%d", x, y, w, h);
++    J2dTraceLn2(J2D_TRACE_VERBOSE, "  maskoff=%d maskscan=%d",
+                 maskoff, maskscan);
+ 
 -    if (d3dc == NULL || wsdo == NULL) {
 -        J2dTraceLn(J2D_TRACE_WARNING,
 -                   "D3DMaskFill_MaskFill: context is null");
@@ -22840,16 +25514,12 @@
 -    if (ddTargetSurface == NULL) {
 -        return DDERR_GENERIC;
 -    }
- 
+-
 -    ddTargetSurface->GetExclusiveAccess();
 -    d3dc->GetExclusiveAccess();
-+    RETURN_STATUS_IF_NULL(d3dc, E_FAIL);
- 
+-
 -    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
-+    J2dTraceLn4(J2D_TRACE_VERBOSE, "  x=%d y=%d w=%d h=%d", x, y, w, h);
-+    J2dTraceLn2(J2D_TRACE_VERBOSE, "  maskoff=%d maskscan=%d",
-+                maskoff, maskscan);
- 
+-
 -    HRESULT res = D3D_OK;
 -    if (maskArray) {
 -        jubyte *pMask =
@@ -22936,28 +25606,11 @@
 +                                             maskscan, pMask);
              }
          }
-+    }
-+    return res;
-+}
-+
-+JNIEXPORT void JNICALL
-+Java_sun_java2d_d3d_D3DMaskFill_maskFill
-+    (JNIEnv *env, jobject self,
-+     jint x, jint y, jint w, jint h,
-+     jint maskoff, jint maskscan, jint masklen,
-+     jbyteArray maskArray)
-+{
-+    D3DContext *d3dc = D3DRQ_GetCurrentContext();
-+    unsigned char *mask;
- 
+-
 -        d3dc->EndScene(res);
-+    J2dTraceLn(J2D_TRACE_ERROR, "D3DMaskFill_maskFill");
- 
+-
 -        env->ReleasePrimitiveArrayCritical(maskArray, pMask, JNI_ABORT);
-+    if (maskArray != NULL) {
-+        mask = (unsigned char *)
-+            env->GetPrimitiveArrayCritical(maskArray, NULL);
-     } else {
+-    } else {
 -        float x1 = (float)x;
 -        float y1 = (float)y;
 -        float x2 = x1 + (float)w;
@@ -22972,14 +25625,33 @@
 -            }
 -            d3dc->EndScene(res);
 -        }
-+        mask = NULL;
-     }
- 
+     }
+-
 -    d3dc->ReleaseExclusiveAccess();
 -    ddTargetSurface->ReleaseExclusiveAccess();
 -
--    return res;
--}
+     return res;
+ }
+ 
++JNIEXPORT void JNICALL
++Java_sun_java2d_d3d_D3DMaskFill_maskFill
++    (JNIEnv *env, jobject self,
++     jint x, jint y, jint w, jint h,
++     jint maskoff, jint maskscan, jint masklen,
++     jbyteArray maskArray)
++{
++    D3DContext *d3dc = D3DRQ_GetCurrentContext();
++    unsigned char *mask;
++
++    J2dTraceLn(J2D_TRACE_ERROR, "D3DMaskFill_maskFill");
++
++    if (maskArray != NULL) {
++        mask = (unsigned char *)
++            env->GetPrimitiveArrayCritical(maskArray, NULL);
++    } else {
++        mask = NULL;
++    }
++
 +    D3DMaskFill_MaskFill(d3dc,
 +                         x, y, w, h,
 +                         maskoff, maskscan, masklen, mask);
@@ -22988,38 +25660,38 @@
 +    if (d3dc != NULL) {
 +        d3dc->FlushVertexQueue();
 +    }
- 
++
 +    if (mask != NULL) {
 +        env->ReleasePrimitiveArrayCritical(maskArray, mask, JNI_ABORT);
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DMaskFill.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DMaskFill.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,36 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DMaskFill_h_Included
@@ -23033,33 +25705,33 @@
 +                             unsigned char *pMask);
 +
 +#endif /* D3DMaskFill_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPaints.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,532 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include <jlong.h>
@@ -23569,33 +26241,33 @@
 +    d3dc->SetPaintState(PAINT_RAD_GRADIENT);
 +    return res;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPaints.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPaints.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,132 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DPaints_h_Included
@@ -23705,33 +26377,33 @@
 +#define PAINT_OPAQUECOLOR  sun_java2d_SunGraphics2D_PAINT_OPAQUECOLOR
 +
 +#endif /* D3DPaints_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPipeline.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,40 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "D3DPipeline.h"
@@ -23749,33 +26421,33 @@
 +    }
 +    return TRUE;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.h	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPipeline.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipeline.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,125 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +#pragma once
 +
@@ -23878,9 +26550,9 @@
 +        DebugPrintD3DError((status), " failed in " ## __FILE__ ## ", return;");\
 +        return (status);                   \
 +    } else do { } while (0)
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp	2011-01-08 01:26:50.475202254 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,936 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -24818,33 +27490,33 @@
 +    *ppd3dContext = pAdapters[adapterOrdinal].pd3dContext;
 +    return res;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h	2011-01-08 01:26:50.479202297 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DPipelineManager.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,145 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +#pragma once
 +
@@ -24967,877 +27639,9 @@
 +#define OS_ALL (OS_VISTA|OS_WINSERV_2008|OS_WINXP|OS_WINXP_64|OS_WINSERV_2003)
 +#define OS_UNKNOWN      (~OS_ALL)
 +BOOL D3DPPLM_OsVersionMatches(USHORT osInfo);
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp	2011-01-08 01:26:50.479202297 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2007, 2008, 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
-@@ -24,450 +24,367 @@
-  */
- 
- #include "sun_java2d_d3d_D3DRenderer.h"
--#include "sun_java2d_windows_DDRenderer.h"
--#include "Win32SurfaceData.h"
- 
--#include <ddraw.h>
--
--#include "D3DUtils.h"
--#include "ddrawUtils.h"
--
--#include "j2d_md.h"
--#include "jlong.h"
--
--/*
-- * Class:     sun_java2d_d3d_D3DRenderer
-- * Method:    doDrawLineD3D
-- * Signature: (Lsun/java2d/SurfaceData;IIIII)Z
-- */
--JNIEXPORT jboolean JNICALL
--Java_sun_java2d_d3d_D3DRenderer_doDrawLineD3D
--    (JNIEnv *env, jobject d3dr,
--     jlong pData, jlong pCtx,
--     jint x1, jint y1, jint x2, jint y2)
-+#include "D3DContext.h"
-+#include "D3DRenderer.h"
-+#include "D3DRenderQueue.h"
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawLine(D3DContext *d3dc,
-+                     jint x1, jint y1, jint x2, jint y2)
- {
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    static J2D_XY_C_VERTEX lineVerts[] = {
--#ifdef USE_SINGLE_VERTEX_FORMAT
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--#else
--        // x, y, z, color
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--#endif // USE_SINGLE_VERTEX_FORMAT
--    };
--
--    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawLineD3D");
--    J2dTraceLn4(J2D_TRACE_VERBOSE,
--                "  x1=%-4d y1=%-4d x2=%-4d y2=%-4d",
-+    J2dTraceLn4(J2D_TRACE_INFO,
-+                "D3DRenderer_doDrawLineD3D x1=%-4d y1=%-4d x2=%-4d y2=%-4d",
-                 x1, y1, x2, y2);
--    HRESULT res = DDERR_GENERIC;
--    if (d3dc != NULL) {
--        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--        if (ddTargetSurface == NULL) {
--            return FALSE;
--        }
--        ddTargetSurface->GetExclusiveAccess();
--        d3dc->GetExclusiveAccess();
--
--        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--        if (d3dDevice == NULL) {
--            d3dc->ReleaseExclusiveAccess();
--            ddTargetSurface->ReleaseExclusiveAccess();
--            return FALSE;
--        }
--
--        // +0.5f is needed to compensate for the -0.5f we
--        // force when setting the transform
--        lineVerts[0].x = (float)x1 + 0.5f;
--        lineVerts[0].y = (float)y1 + 0.5f;
--        lineVerts[0].color = d3dc->colorPixel;
--        lineVerts[1].x = (float)x2 + 0.5f;
--        lineVerts[1].y = (float)y2 + 0.5f;
--        lineVerts[1].color = d3dc->colorPixel;
--
--        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
--        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
--            res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
--                                           lineVerts, 2, 0);
--            // REMIND: need to be using the results of device testing
--            res = d3dDevice->DrawPrimitive(D3DPT_POINTLIST, D3DFVF_J2D_XY_C,
--                                           &(lineVerts[1]), 1, 0);
--            d3dc->EndScene(res);
--        }
--        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
--
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--    }
--    return SUCCEEDED(res);
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->DrawLine(x1, y1, x2, y2);
- }
- 
--JNIEXPORT jboolean JNICALL
--Java_sun_java2d_d3d_D3DRenderer_doDrawRectD3D
--    (JNIEnv *env, jobject d3dr,
--     jlong pData, jlong pCtx,
--     jint x, jint y, jint w, jint h)
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawRect(D3DContext *d3dc,
-+                     jint x, jint y, jint w, jint h)
- {
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    float x1, y1, x2, y2;
--    static J2D_XY_C_VERTEX lineVerts[] = {
--#ifdef USE_SINGLE_VERTEX_FORMAT
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--#else
--        // x, y, z, color
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--#endif // USE_SINGLE_VERTEX_FORMAT
--    };
--
--    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawRectD3D");
--    J2dTraceLn4(J2D_TRACE_VERBOSE,
--                "  x=%-4d y=%-4d w=%-4d h=%-4d",
-+    J2dTraceLn4(J2D_TRACE_INFO,
-+                "D3DRenderer_DrawRect x=%-4d y=%-4d w=%-4d h=%-4d",
-                 x, y, w, h);
- 
--    HRESULT res = DDERR_GENERIC;
--    if (d3dc != NULL) {
--        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--        if (ddTargetSurface == NULL) {
--            return FALSE;
--        }
--        ddTargetSurface->GetExclusiveAccess();
--        d3dc->GetExclusiveAccess();
--
--        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--        if (d3dDevice == NULL) {
--            d3dc->ReleaseExclusiveAccess();
--            ddTargetSurface->ReleaseExclusiveAccess();
--            return FALSE;
--        }
--
--        // +0.5f is needed to compensate for the -0.5f we
--        // force when setting the transform
--        x1 = (float)x + 0.5f;
--        y1 = (float)y + 0.5f;
--        x2 = x1 + (float)w;
--        y2 = y1 + (float)h;
--        D3DU_INIT_VERTEX_PENT_XY(lineVerts, x1, y1, x2, y2);
--        D3DU_INIT_VERTEX_PENT_COLOR(lineVerts, d3dc->colorPixel);
--
--        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
--        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
--            res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
--                                           lineVerts, 5, 0);
--            d3dc->EndScene(res);
--        }
--        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
--
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--    }
--    return SUCCEEDED(res);
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->DrawRect(x, y, x + w, y + h);
- }
- 
--/*
-- * Class:     sun_java2d_d3d_D3DRenderer
-- * Method:    doFillRectD3D
-- * Signature: (JIIII)Z
-- */
--JNIEXPORT jboolean JNICALL Java_sun_java2d_d3d_D3DRenderer_doFillRectD3D
--  (JNIEnv *env, jobject d3dr,
--   jlong pData, jlong pCtx,
--   jint x, jint y, jint w, jint h)
--{
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    HRESULT res = DDERR_GENERIC;
--    float x1, y1, x2, y2;
--    static J2D_XY_C_VERTEX quadVerts[] = {
--#ifdef USE_SINGLE_VERTEX_FORMAT
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
--        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f }
--#else
--        // x, y, z, color
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--        { 0, 0, 0, 0x0 },
--#endif // USE_SINGLE_VERTEX_FORMAT
--    };
--
--    J2dTraceLn(J2D_TRACE_INFO, "doFillRectD3D");
--    J2dTraceLn4(J2D_TRACE_VERBOSE, "  x=%-4d y=%-4d w=%-4d h=%-4d", x, y, w, h);
--
--    if (d3dc != NULL) {
--        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--        if (ddTargetSurface == NULL) {
--            return FALSE;
--        }
--        ddTargetSurface->GetExclusiveAccess();
--        d3dc->GetExclusiveAccess();
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillRect(D3DContext *d3dc,
-+                     jint x, jint y, jint w, jint h)
-+{
-+    J2dTraceLn4(J2D_TRACE_INFO,
-+               "D3DRenderer_FillRect x=%-4d y=%-4d w=%-4d h=%-4d",
-+                x, y, w, h);
- 
--        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--        if (d3dDevice == NULL) {
--            d3dc->ReleaseExclusiveAccess();
--            ddTargetSurface->ReleaseExclusiveAccess();
--            return FALSE;
--        }
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->FillRect(x, y, x + w, y + h);
-+}
- 
--        x1 = (float)x;
--        y1 = (float)y;
--        x2 = x1 + (float)w;
--        y2 = y1 + (float)h;
--        D3DU_INIT_VERTEX_QUAD_COLOR(quadVerts, d3dc->colorPixel);
--        D3DU_INIT_VERTEX_QUAD_XY(quadVerts, x1, y1, x2, y2);
--
--        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
--        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
--            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_J2D_XY_C,
--                                           quadVerts, 4, 0);
--            d3dc->EndScene(res);
--        }
--        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_TRIANGLEFAN)");
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawPoly(D3DContext *d3dc,
-+                     jint nPoints, jboolean isClosed,
-+                     jint transX, jint transY,
-+                     jint *xPoints, jint *yPoints)
-+{
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_DrawPoly");
- 
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
-+    if (d3dc == NULL || xPoints == NULL || yPoints == NULL) {
-+        J2dRlsTraceLn(J2D_TRACE_ERROR,
-+            "D3DRenderer_DrawPoly: d3dc, xPoints or yPoints is NULL");
-+        return E_FAIL;
-     }
--    return SUCCEEDED(res);
-+
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->DrawPoly(nPoints, isClosed, transX, transY,
-+                                    xPoints, yPoints);
- }
- 
--/*
-- * Class:     sun_java2d_d3d_D3DRenderer
-- * Method:    doDrawPoly
-- * Signature: (JII[I[IIZ)V
-- */
--JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DRenderer_doDrawPoly
--  (JNIEnv *env, jobject d3dr,
--   jlong pData, jlong pCtx,
--   jint transx, jint transy,
--   jintArray xcoordsArray, jintArray ycoordsArray, jint npoints,
--   jboolean needToClose)
--{
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    jint *xcoords, *ycoords;
--    jint i;
--
--    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawPoly");
--    J2dTraceLn4(J2D_TRACE_VERBOSE,
--                "  transx=%-4d transy=%-4d "\
--                "npoints=%-4d needToClose=%-4d",
--                transx, transy, npoints, needToClose);
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawScanlines(D3DContext *d3dc,
-+                          jint scanlineCount, jint *scanlines)
-+{
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_DrawScanlines");
- 
-     if (d3dc == NULL) {
--        J2dTraceLn(J2D_TRACE_WARNING,
--                   "D3DRenderer_doDrawPoly: null device context");
--        return;
-+       return E_FAIL;
-     }
--
--    if (JNU_IsNull(env, xcoordsArray) || JNU_IsNull(env, ycoordsArray)) {
--        JNU_ThrowNullPointerException(env, "coordinate array");
--        return;
--    }
--    if (env->GetArrayLength(ycoordsArray) < npoints ||
--        env->GetArrayLength(xcoordsArray) < npoints)
--    {
--        JNU_ThrowArrayIndexOutOfBoundsException(env, "coordinate array");
--        return;
-+    if (scanlines == NULL || scanlineCount <= 0) {
-+        return D3D_OK;
-     }
- 
--    xcoords = (jint *)
--        env->GetPrimitiveArrayCritical(xcoordsArray, NULL);
--    if (xcoords == NULL) {
--        return;
--    }
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->DrawScanlines(scanlineCount, scanlines);
-+}
- 
--    ycoords = (jint *)
--        env->GetPrimitiveArrayCritical(ycoordsArray, NULL);
--    if (ycoords == NULL) {
--        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
--        return;
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillSpans(D3DContext *d3dc, jint spanCount, jint *spans)
-+{
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_FillSpans");
-+    if (d3dc == NULL) {
-+        return E_FAIL;
-     }
- 
--    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--    if (ddTargetSurface == NULL) {
--        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
--        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
--        return;
--    }
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->FillSpans(spanCount, spans);
-+}
- 
--    ddTargetSurface->GetExclusiveAccess();
--    d3dc->GetExclusiveAccess();
--    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--    if (d3dDevice == NULL) {
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
--        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
--        return;
--    }
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillParallelogram(D3DContext *d3dc,
-+                              jfloat fx11, jfloat fy11,
-+                              jfloat dx21, jfloat dy21,
-+                              jfloat dx12, jfloat dy12)
-+{
-+    J2dTraceLn6(J2D_TRACE_INFO,
-+                "D3DRenderer_FillParallelogram "
-+                "x=%6.2f y=%6.2f "
-+                "dx1=%6.2f dy1=%6.2f "
-+                "dx2=%6.2f dy2=%6.2f ",
-+                fx11, fy11,
-+                dx21, dy21,
-+                dx12, dy12);
-+
-+    d3dc->BeginScene(STATE_RENDEROP);
-+    return d3dc->pVCacher->FillParallelogram(fx11, fy11,
-+                                             dx21, dy21,
-+                                             dx12, dy12);
-+}
- 
--    int totalPoints = npoints;
--    if (needToClose) {
--        if (xcoords[npoints - 1] != xcoords[0] ||
--            ycoords[npoints - 1] != ycoords[0])
--        {
--            totalPoints++;
--        } else {
--            needToClose = FALSE;
--        }
--    }
--    J2D_XY_C_VERTEX *lpVerts =
--        (J2D_XY_C_VERTEX *)safe_Malloc(totalPoints*sizeof(J2D_XY_C_VERTEX));
--    if (!lpVerts) {
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
--        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
--        return;
--    }
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawParallelogram(D3DContext *d3dc,
-+                              jfloat fx11, jfloat fy11,
-+                              jfloat dx21, jfloat dy21,
-+                              jfloat dx12, jfloat dy12,
-+                              jfloat lwr21, jfloat lwr12)
-+{
-+    HRESULT res;
- 
--    ZeroMemory(lpVerts, totalPoints*sizeof(J2D_XY_C_VERTEX));
--    for (i = 0; i < npoints; i++) {
--        // +0.5f is needed to compensate for the -0.5f we
--        // force when setting the transform
--        lpVerts[i].x = (float)(xcoords[i] + transx) + 0.5f;
--        lpVerts[i].y = (float)(ycoords[i] + transy) + 0.5f;
--        lpVerts[i].color =  d3dc->colorPixel;
--    }
--    if (needToClose) {
--        lpVerts[npoints].x = (float)(xcoords[0] + transx) + 0.5f;
--        lpVerts[npoints].y = (float)(ycoords[0] + transy) + 0.5f;
--        lpVerts[npoints].color = d3dc->colorPixel;
-+    J2dTraceLn8(J2D_TRACE_INFO,
-+                "D3DRenderer_DrawParallelogram "
-+                "x=%6.2f y=%6.2f "
-+                "dx1=%6.2f dy1=%6.2f lwr1=%6.2f "
-+                "dx2=%6.2f dy2=%6.2f lwr2=%6.2f ",
-+                fx11, fy11,
-+                dx21, dy21, lwr21,
-+                dx12, dy12, lwr12);
-+
-+    // dx,dy for line width in the "21" and "12" directions.
-+    jfloat ldx21 = dx21 * lwr21;
-+    jfloat ldy21 = dy21 * lwr21;
-+    jfloat ldx12 = dx12 * lwr12;
-+    jfloat ldy12 = dy12 * lwr12;
-+
-+    // calculate origin of the outer parallelogram
-+    jfloat ox11 = fx11 - (ldx21 + ldx12) / 2.0f;
-+    jfloat oy11 = fy11 - (ldy21 + ldy12) / 2.0f;
-+
-+    res = d3dc->BeginScene(STATE_RENDEROP);
-+    RETURN_STATUS_IF_FAILED(res);
-+
-+    // Only need to generate 4 quads if the interior still
-+    // has a hole in it (i.e. if the line width ratio was
-+    // less than 1.0)
-+    if (lwr21 < 1.0f && lwr12 < 1.0f) {
-+        // Note: "TOP", "BOTTOM", "LEFT" and "RIGHT" here are
-+        // relative to whether the dxNN variables are positive
-+        // and negative.  The math works fine regardless of
-+        // their signs, but for conceptual simplicity the
-+        // comments will refer to the sides as if the dxNN
-+        // were all positive.  "TOP" and "BOTTOM" segments
-+        // are defined by the dxy21 deltas.  "LEFT" and "RIGHT"
-+        // segments are defined by the dxy12 deltas.
-+
-+        // Each segment includes its starting corner and comes
-+        // to just short of the following corner.  Thus, each
-+        // corner is included just once and the only lengths
-+        // needed are the original parallelogram delta lengths
-+        // and the "line width deltas".  The sides will cover
-+        // the following relative territories:
-+        //
-+        //     T T T T T R
-+        //      L         R
-+        //       L         R
-+        //        L         R
-+        //         L         R
-+        //          L B B B B B
-+
-+        // TOP segment, to left side of RIGHT edge
-+        // "width" of original pgram, "height" of hor. line size
-+        fx11 = ox11;
-+        fy11 = oy11;
-+        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
-+                                                dx21, dy21,
-+                                                ldx12, ldy12);
-+
-+        // RIGHT segment, to top of BOTTOM edge
-+        // "width" of vert. line size , "height" of original pgram
-+        fx11 = ox11 + dx21;
-+        fy11 = oy11 + dy21;
-+        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
-+                                                ldx21, ldy21,
-+                                                dx12, dy12);
-+
-+        // BOTTOM segment, from right side of LEFT edge
-+        // "width" of original pgram, "height" of hor. line size
-+        fx11 = ox11 + dx12 + ldx21;
-+        fy11 = oy11 + dy12 + ldy21;
-+        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
-+                                                dx21, dy21,
-+                                                ldx12, ldy12);
-+
-+        // LEFT segment, from bottom of TOP edge
-+        // "width" of vert. line size , "height" of inner pgram
-+        fx11 = ox11 + ldx12;
-+        fy11 = oy11 + ldy12;
-+        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
-+                                                ldx21, ldy21,
-+                                                dx12, dy12);
-+    } else {
-+        // The line width ratios were large enough to consume
-+        // the entire hole in the middle of the parallelogram
-+        // so we can just issue one large quad for the outer
-+        // parallelogram.
-+        dx21 += ldx21;
-+        dy21 += ldy21;
-+        dx12 += ldx12;
-+        dy12 += ldy12;
-+
-+        res = d3dc->pVCacher->FillParallelogram(ox11, oy11,
-+                                                dx21, dy21,
-+                                                dx12, dy12);
-     }
--    env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
--    env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
- 
--    HRESULT res;
--    D3DU_PRIM_LOOP_BEGIN(res, wsdo);
--    if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
--        res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
--                                       lpVerts, totalPoints, 0);
--        // REMIND: temp hack, need to be using the results of device testing
--        if (!needToClose) {
--            res = d3dDevice->DrawPrimitive(D3DPT_POINTLIST, D3DFVF_J2D_XY_C,
--                                           &(lpVerts[totalPoints-1]), 1, 0);
--        }
--        d3dc->EndScene(res);
--    }
--    D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
-+    return res;
-+}
- 
--    free(lpVerts);
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillAAParallelogram(D3DContext *d3dc,
-+                                jfloat fx11, jfloat fy11,
-+                                jfloat dx21, jfloat dy21,
-+                                jfloat dx12, jfloat dy12)
-+{
-+    IDirect3DDevice9 *pd3dDevice;
-+    HRESULT res;
- 
--    d3dc->ReleaseExclusiveAccess();
--    ddTargetSurface->ReleaseExclusiveAccess();
-+    J2dTraceLn6(J2D_TRACE_INFO,
-+                "D3DRenderer_FillAAParallelogram "
-+                "x=%6.2f y=%6.2f "
-+                "dx1=%6.2f dy1=%6.2f "
-+                "dx2=%6.2f dy2=%6.2f ",
-+                fx11, fy11,
-+                dx21, dy21,
-+                dx12, dy12);
-+
-+    res = d3dc->BeginScene(STATE_AAPGRAMOP);
-+    RETURN_STATUS_IF_FAILED(res);
-+
-+    pd3dDevice = d3dc->Get3DDevice();
-+    if (pd3dDevice == NULL) {
-+        return E_FAIL;
-+    }
-+
-+    res = d3dc->pVCacher->FillParallelogramAA(fx11, fy11,
-+                                              dx21, dy21,
-+                                              dx12, dy12);
-+    return res;
- }
- 
--JNIEXPORT void JNICALL
--Java_sun_java2d_d3d_D3DRenderer_devFillSpans
--    (JNIEnv *env, jobject d3dr,
--     jlong pData, jlong pCtx,
--     jobject si, jlong pIterator, jint transx, jint transy)
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawAAParallelogram(D3DContext *d3dc,
-+                                jfloat fx11, jfloat fy11,
-+                                jfloat dx21, jfloat dy21,
-+                                jfloat dx12, jfloat dy12,
-+                                jfloat lwr21, jfloat lwr12)
- {
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
--    SpanIteratorFuncs *pFuncs = (SpanIteratorFuncs *)jlong_to_ptr(pIterator);
--    void *srData;
--    float x1, y1, x2, y2;
--    jint spanbox[4];
--    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_devFillSpans");
--    J2dTraceLn2(J2D_TRACE_VERBOSE,
--                "  transx=%-4d transy=%-4d", transx, transy);
--
--    if (JNU_IsNull(env, si)) {
--        JNU_ThrowNullPointerException(env, "span iterator");
--        return;
--    }
--    if (pFuncs == NULL) {
--        JNU_ThrowNullPointerException(env, "native iterator not supplied");
--        return;
--    }
-+    IDirect3DDevice9 *pd3dDevice;
-+    // dx,dy for line width in the "21" and "12" directions.
-+    jfloat ldx21, ldy21, ldx12, ldy12;
-+    // parameters for "outer" parallelogram
-+    jfloat ofx11, ofy11, odx21, ody21, odx12, ody12;
-+    // parameters for "inner" parallelogram
-+    jfloat ifx11, ify11, idx21, idy21, idx12, idy12;
-+    HRESULT res;
- 
--    if (d3dc == NULL) {
--        J2dTraceLn(J2D_TRACE_WARNING,
--                   "D3DRenderer_devFillSpans: context is null");
--        return;
-+    J2dTraceLn8(J2D_TRACE_INFO,
-+                "D3DRenderer_DrawAAParallelogram "
-+                "x=%6.2f y=%6.2f "
-+                "dx1=%6.2f dy1=%6.2f lwr1=%6.2f "
-+                "dx2=%6.2f dy2=%6.2f lwr2=%6.2f ",
-+                fx11, fy11,
-+                dx21, dy21, lwr21,
-+                dx12, dy12, lwr12);
-+
-+    res = d3dc->BeginScene(STATE_AAPGRAMOP);
-+    RETURN_STATUS_IF_FAILED(res);
-+
-+    pd3dDevice = d3dc->Get3DDevice();
-+    if (pd3dDevice == NULL) {
-+        return E_FAIL;
-+    }
-+
-+    // calculate true dx,dy for line widths from the "line width ratios"
-+    ldx21 = dx21 * lwr21;
-+    ldy21 = dy21 * lwr21;
-+    ldx12 = dx12 * lwr12;
-+    ldy12 = dy12 * lwr12;
-+
-+    // calculate coordinates of the outer parallelogram
-+    ofx11 = fx11 - (ldx21 + ldx12) / 2.0f;
-+    ofy11 = fy11 - (ldy21 + ldy12) / 2.0f;
-+    odx21 = dx21 + ldx21;
-+    ody21 = dy21 + ldy21;
-+    odx12 = dx12 + ldx12;
-+    ody12 = dy12 + ldy12;
-+
-+    // Only process the inner parallelogram if the line width ratio
-+    // did not consume the entire interior of the parallelogram
-+    // (i.e. if the width ratio was less than 1.0)
-+    if (lwr21 < 1.0f && lwr12 < 1.0f) {
-+        // calculate coordinates of the inner parallelogram
-+        ifx11 = fx11 + (ldx21 + ldx12) / 2.0f;
-+        ify11 = fy11 + (ldy21 + ldy12) / 2.0f;
-+        idx21 = dx21 - ldx21;
-+        idy21 = dy21 - ldy21;
-+        idx12 = dx12 - ldx12;
-+        idy12 = dy12 - ldy12;
-+
-+        res = d3dc->pVCacher->DrawParallelogramAA(ofx11, ofy11,
-+                                                  odx21, ody21,
-+                                                  odx12, ody12,
-+                                                  ifx11, ify11,
-+                                                  idx21, idy21,
-+                                                  idx12, idy12);
-+    } else {
-+        // Just invoke a regular fill on the outer parallelogram
-+        res = d3dc->pVCacher->FillParallelogramAA(ofx11, ofy11,
-+                                                  odx21, ody21,
-+                                                  odx12, ody12);
-     }
- 
--    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
--    if (ddTargetSurface == NULL) {
--        return;
--    }
-+    return res;
-+}
- 
--    ddTargetSurface->GetExclusiveAccess();
--    d3dc->GetExclusiveAccess();
-+#ifndef D3D_PPL_DLL
- 
--    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
--    if (d3dDevice == NULL) {
--        d3dc->ReleaseExclusiveAccess();
--        ddTargetSurface->ReleaseExclusiveAccess();
--        return;
--    }
-+extern "C"
-+{
- 
--    HRESULT res = D3D_OK;
-+JNIEXPORT void JNICALL
-+Java_sun_java2d_d3d_D3DRenderer_drawPoly
-+    (JNIEnv *env, jobject d3dr,
-+     jintArray xpointsArray, jintArray ypointsArray,
-+     jint nPoints, jboolean isClosed,
-+     jint transX, jint transY)
-+{
-+    jint *xPoints, *yPoints;
- 
--    // buffer for the span vertexes (6 vertexes per span)
--    static J2DXYC_HEXA spanVx[MAX_CACHED_SPAN_VX_NUM];
--    J2DXYC_HEXA *pHexa = (J2DXYC_HEXA*)spanVx;
--    jint numOfCachedSpans = 0;
--
--    if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
--        srData = (*pFuncs->open)(env, si);
--
--        // REMIND: this is wrong, if something has failed, we need to
--        // do a EndScene/BeginScene()
--        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
--        while ((*pFuncs->nextSpan)(srData, spanbox)) {
--            x1 = (float)(spanbox[0] + transx);
--            y1 = (float)(spanbox[1] + transy);
--            x2 = (float)(spanbox[2] + transx);
--            y2 = (float)(spanbox[3] + transy);
--
--            D3DU_INIT_VERTEX_COLOR_6(*pHexa, d3dc->colorPixel);
--            D3DU_INIT_VERTEX_XY_6(*pHexa, x1, y1, x2, y2);
--            numOfCachedSpans++;
--            pHexa = (J2DXYC_HEXA*)PtrAddBytes(pHexa, sizeof(J2DXYC_HEXA));
--            if (numOfCachedSpans >= MAX_CACHED_SPAN_VX_NUM) {
--                if (FAILED(res = ddTargetSurface->IsLost())) {
--                    numOfCachedSpans = 0;
--                    break;
--                }
--
--                res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,
--                                               D3DFVF_J2D_XY_C,
--                                               (void*)spanVx,
--                                               6*numOfCachedSpans, 0);
--                numOfCachedSpans = 0;
--                pHexa = (J2DXYC_HEXA*)spanVx;
--                if (FAILED(res)) {
--                    break;
--                }
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_drawPoly");
-+
-+    xPoints = (jint *)env->GetPrimitiveArrayCritical(xpointsArray, NULL);
-+    if (xPoints != NULL) {
-+        yPoints = (jint *)env->GetPrimitiveArrayCritical(ypointsArray, NULL);
-+        if (yPoints != NULL) {
-+            D3DContext *d3dc = D3DRQ_GetCurrentContext();
-+
-+            D3DRenderer_DrawPoly(d3dc,
-+                                 nPoints, isClosed,
-+                                 transX, transY,
-+                                 xPoints, yPoints);
-+
-+            if (d3dc != NULL) {
-+                HRESULT res = d3dc->EndScene();
-+                D3DRQ_MarkLostIfNeeded(res,
-+                    D3DRQ_GetCurrentDestination());
-             }
-+            env->ReleasePrimitiveArrayCritical(ypointsArray, yPoints, JNI_ABORT);
-         }
--        if (numOfCachedSpans > 0) {
--            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_J2D_XY_C,
--                                           (void*)spanVx,
--                                           6*numOfCachedSpans, 0);
--        }
--        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_TRIANGLEFAN)");
--
--        (*pFuncs->close)(env, srData);
--
--        d3dc->EndScene(res);
-+        env->ReleasePrimitiveArrayCritical(xpointsArray, xPoints, JNI_ABORT);
-     }
-+}
- 
--    d3dc->ReleaseExclusiveAccess();
--    ddTargetSurface->ReleaseExclusiveAccess();
- }
-+
-+#endif // D3D_PPL_DLL
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.h	2011-01-08 01:26:50.479202297 +0000
-@@ -0,0 +1,85 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
-+ */
-+
-+#include "sun_java2d_pipe_BufferedRenderPipe.h"
-+#include "D3DContext.h"
-+
-+#define BYTES_PER_POLY_POINT \
-+    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_POLY_POINT
-+#define BYTES_PER_SCANLINE \
-+    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_SCANLINE
-+#define BYTES_PER_SPAN \
-+    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_SPAN
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawLine(D3DContext *d3dc,
-+                     jint x1, jint y1, jint x2, jint y2);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawRect(D3DContext *d3dc,
-+                     jint x, jint y, jint w, jint h);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillRect(D3DContext *d3dc,
-+                     jint x, jint y, jint w, jint h);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawPoly(D3DContext *d3dc,
-+                     jint nPoints, jboolean isClosed,
-+                     jint transX, jint transY,
-+                     jint *xPoints, jint *yPoints);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawScanlines(D3DContext *d3dc,
-+                          jint scanlineCount, jint *scanlines);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillSpans(D3DContext *d3dc, jint spanCount, jint *spans);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillParallelogram(D3DContext *d3dc,
-+                              jfloat fx11, jfloat fy11,
-+                              jfloat dx21, jfloat dy21,
-+                              jfloat dx12, jfloat dy12);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawParallelogram(D3DContext *d3dc,
-+                              jfloat fx11, jfloat fy11,
-+                              jfloat dx21, jfloat dy21,
-+                              jfloat dx12, jfloat dy12,
-+                              jfloat lw21, jfloat lw12);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_FillAAParallelogram(D3DContext *d3dc,
-+                                jfloat fx11, jfloat fy11,
-+                                jfloat dx21, jfloat dy21,
-+                                jfloat dx12, jfloat dy12);
-+
-+HRESULT D3DPIPELINE_API
-+D3DRenderer_DrawAAParallelogram(D3DContext *d3dc,
-+                                jfloat fx11, jfloat fy11,
-+                                jfloat dx21, jfloat dy21,
-+                                jfloat dx12, jfloat dy12,
-+                                jfloat lw21, jfloat lw12);
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp	2011-01-08 01:26:50.479202297 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,954 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -26793,33 +28597,33 @@
 +}
 +
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.h	2011-01-08 01:26:50.479202297 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRenderQueue.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderQueue.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,64 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DRenderQueue_h_Included
@@ -26861,33 +28665,907 @@
 +HRESULT D3DRQ_MarkLostIfNeeded(HRESULT res, D3DSDOps *d3dops);
 +
 +#endif /* D3DRenderQueue_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp	2011-01-08 01:26:50.479202297 +0000
-@@ -0,0 +1,765 @@
-+/*
-+ * Copyright 2007-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.  Sun designates this
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRenderer.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.cpp	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2007, 2008, 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
+@@ -24,450 +24,367 @@
+  */
+ 
+ #include "sun_java2d_d3d_D3DRenderer.h"
+-#include "sun_java2d_windows_DDRenderer.h"
+-#include "Win32SurfaceData.h"
+ 
+-#include <ddraw.h>
++#include "D3DContext.h"
++#include "D3DRenderer.h"
++#include "D3DRenderQueue.h"
+ 
+-#include "D3DUtils.h"
+-#include "ddrawUtils.h"
+-
+-#include "j2d_md.h"
+-#include "jlong.h"
+-
+-/*
+- * Class:     sun_java2d_d3d_D3DRenderer
+- * Method:    doDrawLineD3D
+- * Signature: (Lsun/java2d/SurfaceData;IIIII)Z
+- */
+-JNIEXPORT jboolean JNICALL
+-Java_sun_java2d_d3d_D3DRenderer_doDrawLineD3D
+-    (JNIEnv *env, jobject d3dr,
+-     jlong pData, jlong pCtx,
+-     jint x1, jint y1, jint x2, jint y2)
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawLine(D3DContext *d3dc,
++                     jint x1, jint y1, jint x2, jint y2)
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    static J2D_XY_C_VERTEX lineVerts[] = {
+-#ifdef USE_SINGLE_VERTEX_FORMAT
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-#else
+-        // x, y, z, color
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-#endif // USE_SINGLE_VERTEX_FORMAT
+-    };
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawLineD3D");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  x1=%-4d y1=%-4d x2=%-4d y2=%-4d",
++    J2dTraceLn4(J2D_TRACE_INFO,
++                "D3DRenderer_doDrawLineD3D x1=%-4d y1=%-4d x2=%-4d y2=%-4d",
+                 x1, y1, x2, y2);
+-    HRESULT res = DDERR_GENERIC;
+-    if (d3dc != NULL) {
+-        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-        if (ddTargetSurface == NULL) {
+-            return FALSE;
+-        }
+-        ddTargetSurface->GetExclusiveAccess();
+-        d3dc->GetExclusiveAccess();
+-
+-        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-        if (d3dDevice == NULL) {
+-            d3dc->ReleaseExclusiveAccess();
+-            ddTargetSurface->ReleaseExclusiveAccess();
+-            return FALSE;
+-        }
+-
+-        // +0.5f is needed to compensate for the -0.5f we
+-        // force when setting the transform
+-        lineVerts[0].x = (float)x1 + 0.5f;
+-        lineVerts[0].y = (float)y1 + 0.5f;
+-        lineVerts[0].color = d3dc->colorPixel;
+-        lineVerts[1].x = (float)x2 + 0.5f;
+-        lineVerts[1].y = (float)y2 + 0.5f;
+-        lineVerts[1].color = d3dc->colorPixel;
+-
+-        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
+-        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
+-            res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
+-                                           lineVerts, 2, 0);
+-            // REMIND: need to be using the results of device testing
+-            res = d3dDevice->DrawPrimitive(D3DPT_POINTLIST, D3DFVF_J2D_XY_C,
+-                                           &(lineVerts[1]), 1, 0);
+-            d3dc->EndScene(res);
+-        }
+-        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
+-
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-    }
+-    return SUCCEEDED(res);
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->DrawLine(x1, y1, x2, y2);
+ }
+ 
+-JNIEXPORT jboolean JNICALL
+-Java_sun_java2d_d3d_D3DRenderer_doDrawRectD3D
+-    (JNIEnv *env, jobject d3dr,
+-     jlong pData, jlong pCtx,
+-     jint x, jint y, jint w, jint h)
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawRect(D3DContext *d3dc,
++                     jint x, jint y, jint w, jint h)
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    float x1, y1, x2, y2;
+-    static J2D_XY_C_VERTEX lineVerts[] = {
+-#ifdef USE_SINGLE_VERTEX_FORMAT
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-#else
+-        // x, y, z, color
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-#endif // USE_SINGLE_VERTEX_FORMAT
+-    };
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawRectD3D");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  x=%-4d y=%-4d w=%-4d h=%-4d",
++    J2dTraceLn4(J2D_TRACE_INFO,
++                "D3DRenderer_DrawRect x=%-4d y=%-4d w=%-4d h=%-4d",
+                 x, y, w, h);
+ 
+-    HRESULT res = DDERR_GENERIC;
+-    if (d3dc != NULL) {
+-        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-        if (ddTargetSurface == NULL) {
+-            return FALSE;
+-        }
+-        ddTargetSurface->GetExclusiveAccess();
+-        d3dc->GetExclusiveAccess();
+-
+-        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-        if (d3dDevice == NULL) {
+-            d3dc->ReleaseExclusiveAccess();
+-            ddTargetSurface->ReleaseExclusiveAccess();
+-            return FALSE;
+-        }
+-
+-        // +0.5f is needed to compensate for the -0.5f we
+-        // force when setting the transform
+-        x1 = (float)x + 0.5f;
+-        y1 = (float)y + 0.5f;
+-        x2 = x1 + (float)w;
+-        y2 = y1 + (float)h;
+-        D3DU_INIT_VERTEX_PENT_XY(lineVerts, x1, y1, x2, y2);
+-        D3DU_INIT_VERTEX_PENT_COLOR(lineVerts, d3dc->colorPixel);
+-
+-        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
+-        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
+-            res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
+-                                           lineVerts, 5, 0);
+-            d3dc->EndScene(res);
+-        }
+-        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
+-
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-    }
+-    return SUCCEEDED(res);
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->DrawRect(x, y, x + w, y + h);
+ }
+ 
+-/*
+- * Class:     sun_java2d_d3d_D3DRenderer
+- * Method:    doFillRectD3D
+- * Signature: (JIIII)Z
+- */
+-JNIEXPORT jboolean JNICALL Java_sun_java2d_d3d_D3DRenderer_doFillRectD3D
+-  (JNIEnv *env, jobject d3dr,
+-   jlong pData, jlong pCtx,
+-   jint x, jint y, jint w, jint h)
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillRect(D3DContext *d3dc,
++                     jint x, jint y, jint w, jint h)
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    HRESULT res = DDERR_GENERIC;
+-    float x1, y1, x2, y2;
+-    static J2D_XY_C_VERTEX quadVerts[] = {
+-#ifdef USE_SINGLE_VERTEX_FORMAT
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f }
+-#else
+-        // x, y, z, color
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-        { 0, 0, 0, 0x0 },
+-#endif // USE_SINGLE_VERTEX_FORMAT
+-    };
++    J2dTraceLn4(J2D_TRACE_INFO,
++               "D3DRenderer_FillRect x=%-4d y=%-4d w=%-4d h=%-4d",
++                x, y, w, h);
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "doFillRectD3D");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE, "  x=%-4d y=%-4d w=%-4d h=%-4d", x, y, w, h);
+-
+-    if (d3dc != NULL) {
+-        DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-        if (ddTargetSurface == NULL) {
+-            return FALSE;
+-        }
+-        ddTargetSurface->GetExclusiveAccess();
+-        d3dc->GetExclusiveAccess();
+-
+-        IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-        if (d3dDevice == NULL) {
+-            d3dc->ReleaseExclusiveAccess();
+-            ddTargetSurface->ReleaseExclusiveAccess();
+-            return FALSE;
+-        }
+-
+-        x1 = (float)x;
+-        y1 = (float)y;
+-        x2 = x1 + (float)w;
+-        y2 = y1 + (float)h;
+-        D3DU_INIT_VERTEX_QUAD_COLOR(quadVerts, d3dc->colorPixel);
+-        D3DU_INIT_VERTEX_QUAD_XY(quadVerts, x1, y1, x2, y2);
+-
+-        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
+-        if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
+-            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_J2D_XY_C,
+-                                           quadVerts, 4, 0);
+-            d3dc->EndScene(res);
+-        }
+-        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_TRIANGLEFAN)");
+-
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-    }
+-    return SUCCEEDED(res);
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->FillRect(x, y, x + w, y + h);
+ }
+ 
+-/*
+- * Class:     sun_java2d_d3d_D3DRenderer
+- * Method:    doDrawPoly
+- * Signature: (JII[I[IIZ)V
+- */
+-JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DRenderer_doDrawPoly
+-  (JNIEnv *env, jobject d3dr,
+-   jlong pData, jlong pCtx,
+-   jint transx, jint transy,
+-   jintArray xcoordsArray, jintArray ycoordsArray, jint npoints,
+-   jboolean needToClose)
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawPoly(D3DContext *d3dc,
++                     jint nPoints, jboolean isClosed,
++                     jint transX, jint transY,
++                     jint *xPoints, jint *yPoints)
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    jint *xcoords, *ycoords;
+-    jint i;
++    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_DrawPoly");
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_doDrawPoly");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  transx=%-4d transy=%-4d "\
+-                "npoints=%-4d needToClose=%-4d",
+-                transx, transy, npoints, needToClose);
++    if (d3dc == NULL || xPoints == NULL || yPoints == NULL) {
++        J2dRlsTraceLn(J2D_TRACE_ERROR,
++            "D3DRenderer_DrawPoly: d3dc, xPoints or yPoints is NULL");
++        return E_FAIL;
++    }
++
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->DrawPoly(nPoints, isClosed, transX, transY,
++                                    xPoints, yPoints);
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawScanlines(D3DContext *d3dc,
++                          jint scanlineCount, jint *scanlines)
++{
++    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_DrawScanlines");
+ 
+     if (d3dc == NULL) {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "D3DRenderer_doDrawPoly: null device context");
+-        return;
++       return E_FAIL;
++    }
++    if (scanlines == NULL || scanlineCount <= 0) {
++        return D3D_OK;
+     }
+ 
+-    if (JNU_IsNull(env, xcoordsArray) || JNU_IsNull(env, ycoordsArray)) {
+-        JNU_ThrowNullPointerException(env, "coordinate array");
+-        return;
+-    }
+-    if (env->GetArrayLength(ycoordsArray) < npoints ||
+-        env->GetArrayLength(xcoordsArray) < npoints)
+-    {
+-        JNU_ThrowArrayIndexOutOfBoundsException(env, "coordinate array");
+-        return;
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->DrawScanlines(scanlineCount, scanlines);
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillSpans(D3DContext *d3dc, jint spanCount, jint *spans)
++{
++    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_FillSpans");
++    if (d3dc == NULL) {
++        return E_FAIL;
+     }
+ 
+-    xcoords = (jint *)
+-        env->GetPrimitiveArrayCritical(xcoordsArray, NULL);
+-    if (xcoords == NULL) {
+-        return;
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->FillSpans(spanCount, spans);
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillParallelogram(D3DContext *d3dc,
++                              jfloat fx11, jfloat fy11,
++                              jfloat dx21, jfloat dy21,
++                              jfloat dx12, jfloat dy12)
++{
++    J2dTraceLn6(J2D_TRACE_INFO,
++                "D3DRenderer_FillParallelogram "
++                "x=%6.2f y=%6.2f "
++                "dx1=%6.2f dy1=%6.2f "
++                "dx2=%6.2f dy2=%6.2f ",
++                fx11, fy11,
++                dx21, dy21,
++                dx12, dy12);
++
++    d3dc->BeginScene(STATE_RENDEROP);
++    return d3dc->pVCacher->FillParallelogram(fx11, fy11,
++                                             dx21, dy21,
++                                             dx12, dy12);
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawParallelogram(D3DContext *d3dc,
++                              jfloat fx11, jfloat fy11,
++                              jfloat dx21, jfloat dy21,
++                              jfloat dx12, jfloat dy12,
++                              jfloat lwr21, jfloat lwr12)
++{
++    HRESULT res;
++
++    J2dTraceLn8(J2D_TRACE_INFO,
++                "D3DRenderer_DrawParallelogram "
++                "x=%6.2f y=%6.2f "
++                "dx1=%6.2f dy1=%6.2f lwr1=%6.2f "
++                "dx2=%6.2f dy2=%6.2f lwr2=%6.2f ",
++                fx11, fy11,
++                dx21, dy21, lwr21,
++                dx12, dy12, lwr12);
++
++    // dx,dy for line width in the "21" and "12" directions.
++    jfloat ldx21 = dx21 * lwr21;
++    jfloat ldy21 = dy21 * lwr21;
++    jfloat ldx12 = dx12 * lwr12;
++    jfloat ldy12 = dy12 * lwr12;
++
++    // calculate origin of the outer parallelogram
++    jfloat ox11 = fx11 - (ldx21 + ldx12) / 2.0f;
++    jfloat oy11 = fy11 - (ldy21 + ldy12) / 2.0f;
++
++    res = d3dc->BeginScene(STATE_RENDEROP);
++    RETURN_STATUS_IF_FAILED(res);
++
++    // Only need to generate 4 quads if the interior still
++    // has a hole in it (i.e. if the line width ratio was
++    // less than 1.0)
++    if (lwr21 < 1.0f && lwr12 < 1.0f) {
++        // Note: "TOP", "BOTTOM", "LEFT" and "RIGHT" here are
++        // relative to whether the dxNN variables are positive
++        // and negative.  The math works fine regardless of
++        // their signs, but for conceptual simplicity the
++        // comments will refer to the sides as if the dxNN
++        // were all positive.  "TOP" and "BOTTOM" segments
++        // are defined by the dxy21 deltas.  "LEFT" and "RIGHT"
++        // segments are defined by the dxy12 deltas.
++
++        // Each segment includes its starting corner and comes
++        // to just short of the following corner.  Thus, each
++        // corner is included just once and the only lengths
++        // needed are the original parallelogram delta lengths
++        // and the "line width deltas".  The sides will cover
++        // the following relative territories:
++        //
++        //     T T T T T R
++        //      L         R
++        //       L         R
++        //        L         R
++        //         L         R
++        //          L B B B B B
++
++        // TOP segment, to left side of RIGHT edge
++        // "width" of original pgram, "height" of hor. line size
++        fx11 = ox11;
++        fy11 = oy11;
++        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
++                                                dx21, dy21,
++                                                ldx12, ldy12);
++
++        // RIGHT segment, to top of BOTTOM edge
++        // "width" of vert. line size , "height" of original pgram
++        fx11 = ox11 + dx21;
++        fy11 = oy11 + dy21;
++        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
++                                                ldx21, ldy21,
++                                                dx12, dy12);
++
++        // BOTTOM segment, from right side of LEFT edge
++        // "width" of original pgram, "height" of hor. line size
++        fx11 = ox11 + dx12 + ldx21;
++        fy11 = oy11 + dy12 + ldy21;
++        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
++                                                dx21, dy21,
++                                                ldx12, ldy12);
++
++        // LEFT segment, from bottom of TOP edge
++        // "width" of vert. line size , "height" of inner pgram
++        fx11 = ox11 + ldx12;
++        fy11 = oy11 + ldy12;
++        res = d3dc->pVCacher->FillParallelogram(fx11, fy11,
++                                                ldx21, ldy21,
++                                                dx12, dy12);
++    } else {
++        // The line width ratios were large enough to consume
++        // the entire hole in the middle of the parallelogram
++        // so we can just issue one large quad for the outer
++        // parallelogram.
++        dx21 += ldx21;
++        dy21 += ldy21;
++        dx12 += ldx12;
++        dy12 += ldy12;
++
++        res = d3dc->pVCacher->FillParallelogram(ox11, oy11,
++                                                dx21, dy21,
++                                                dx12, dy12);
+     }
+ 
+-    ycoords = (jint *)
+-        env->GetPrimitiveArrayCritical(ycoordsArray, NULL);
+-    if (ycoords == NULL) {
+-        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
+-        return;
++    return res;
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillAAParallelogram(D3DContext *d3dc,
++                                jfloat fx11, jfloat fy11,
++                                jfloat dx21, jfloat dy21,
++                                jfloat dx12, jfloat dy12)
++{
++    IDirect3DDevice9 *pd3dDevice;
++    HRESULT res;
++
++    J2dTraceLn6(J2D_TRACE_INFO,
++                "D3DRenderer_FillAAParallelogram "
++                "x=%6.2f y=%6.2f "
++                "dx1=%6.2f dy1=%6.2f "
++                "dx2=%6.2f dy2=%6.2f ",
++                fx11, fy11,
++                dx21, dy21,
++                dx12, dy12);
++
++    res = d3dc->BeginScene(STATE_AAPGRAMOP);
++    RETURN_STATUS_IF_FAILED(res);
++
++    pd3dDevice = d3dc->Get3DDevice();
++    if (pd3dDevice == NULL) {
++        return E_FAIL;
+     }
+ 
+-    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-    if (ddTargetSurface == NULL) {
+-        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
+-        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
+-        return;
++    res = d3dc->pVCacher->FillParallelogramAA(fx11, fy11,
++                                              dx21, dy21,
++                                              dx12, dy12);
++    return res;
++}
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawAAParallelogram(D3DContext *d3dc,
++                                jfloat fx11, jfloat fy11,
++                                jfloat dx21, jfloat dy21,
++                                jfloat dx12, jfloat dy12,
++                                jfloat lwr21, jfloat lwr12)
++{
++    IDirect3DDevice9 *pd3dDevice;
++    // dx,dy for line width in the "21" and "12" directions.
++    jfloat ldx21, ldy21, ldx12, ldy12;
++    // parameters for "outer" parallelogram
++    jfloat ofx11, ofy11, odx21, ody21, odx12, ody12;
++    // parameters for "inner" parallelogram
++    jfloat ifx11, ify11, idx21, idy21, idx12, idy12;
++    HRESULT res;
++
++    J2dTraceLn8(J2D_TRACE_INFO,
++                "D3DRenderer_DrawAAParallelogram "
++                "x=%6.2f y=%6.2f "
++                "dx1=%6.2f dy1=%6.2f lwr1=%6.2f "
++                "dx2=%6.2f dy2=%6.2f lwr2=%6.2f ",
++                fx11, fy11,
++                dx21, dy21, lwr21,
++                dx12, dy12, lwr12);
++
++    res = d3dc->BeginScene(STATE_AAPGRAMOP);
++    RETURN_STATUS_IF_FAILED(res);
++
++    pd3dDevice = d3dc->Get3DDevice();
++    if (pd3dDevice == NULL) {
++        return E_FAIL;
+     }
+ 
+-    ddTargetSurface->GetExclusiveAccess();
+-    d3dc->GetExclusiveAccess();
+-    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-    if (d3dDevice == NULL) {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
+-        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
+-        return;
++    // calculate true dx,dy for line widths from the "line width ratios"
++    ldx21 = dx21 * lwr21;
++    ldy21 = dy21 * lwr21;
++    ldx12 = dx12 * lwr12;
++    ldy12 = dy12 * lwr12;
++
++    // calculate coordinates of the outer parallelogram
++    ofx11 = fx11 - (ldx21 + ldx12) / 2.0f;
++    ofy11 = fy11 - (ldy21 + ldy12) / 2.0f;
++    odx21 = dx21 + ldx21;
++    ody21 = dy21 + ldy21;
++    odx12 = dx12 + ldx12;
++    ody12 = dy12 + ldy12;
++
++    // Only process the inner parallelogram if the line width ratio
++    // did not consume the entire interior of the parallelogram
++    // (i.e. if the width ratio was less than 1.0)
++    if (lwr21 < 1.0f && lwr12 < 1.0f) {
++        // calculate coordinates of the inner parallelogram
++        ifx11 = fx11 + (ldx21 + ldx12) / 2.0f;
++        ify11 = fy11 + (ldy21 + ldy12) / 2.0f;
++        idx21 = dx21 - ldx21;
++        idy21 = dy21 - ldy21;
++        idx12 = dx12 - ldx12;
++        idy12 = dy12 - ldy12;
++
++        res = d3dc->pVCacher->DrawParallelogramAA(ofx11, ofy11,
++                                                  odx21, ody21,
++                                                  odx12, ody12,
++                                                  ifx11, ify11,
++                                                  idx21, idy21,
++                                                  idx12, idy12);
++    } else {
++        // Just invoke a regular fill on the outer parallelogram
++        res = d3dc->pVCacher->FillParallelogramAA(ofx11, ofy11,
++                                                  odx21, ody21,
++                                                  odx12, ody12);
+     }
+ 
+-    int totalPoints = npoints;
+-    if (needToClose) {
+-        if (xcoords[npoints - 1] != xcoords[0] ||
+-            ycoords[npoints - 1] != ycoords[0])
+-        {
+-            totalPoints++;
+-        } else {
+-            needToClose = FALSE;
+-        }
+-    }
+-    J2D_XY_C_VERTEX *lpVerts =
+-        (J2D_XY_C_VERTEX *)safe_Malloc(totalPoints*sizeof(J2D_XY_C_VERTEX));
+-    if (!lpVerts) {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
+-        env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
+-        return;
+-    }
+-
+-    ZeroMemory(lpVerts, totalPoints*sizeof(J2D_XY_C_VERTEX));
+-    for (i = 0; i < npoints; i++) {
+-        // +0.5f is needed to compensate for the -0.5f we
+-        // force when setting the transform
+-        lpVerts[i].x = (float)(xcoords[i] + transx) + 0.5f;
+-        lpVerts[i].y = (float)(ycoords[i] + transy) + 0.5f;
+-        lpVerts[i].color =  d3dc->colorPixel;
+-    }
+-    if (needToClose) {
+-        lpVerts[npoints].x = (float)(xcoords[0] + transx) + 0.5f;
+-        lpVerts[npoints].y = (float)(ycoords[0] + transy) + 0.5f;
+-        lpVerts[npoints].color = d3dc->colorPixel;
+-    }
+-    env->ReleasePrimitiveArrayCritical(ycoordsArray, ycoords, JNI_ABORT);
+-    env->ReleasePrimitiveArrayCritical(xcoordsArray, xcoords, JNI_ABORT);
+-
+-    HRESULT res;
+-    D3DU_PRIM_LOOP_BEGIN(res, wsdo);
+-    if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
+-        res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP, D3DFVF_J2D_XY_C,
+-                                       lpVerts, totalPoints, 0);
+-        // REMIND: temp hack, need to be using the results of device testing
+-        if (!needToClose) {
+-            res = d3dDevice->DrawPrimitive(D3DPT_POINTLIST, D3DFVF_J2D_XY_C,
+-                                           &(lpVerts[totalPoints-1]), 1, 0);
+-        }
+-        d3dc->EndScene(res);
+-    }
+-    D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_LINESTRIP)");
+-
+-    free(lpVerts);
+-
+-    d3dc->ReleaseExclusiveAccess();
+-    ddTargetSurface->ReleaseExclusiveAccess();
++    return res;
+ }
+ 
++#ifndef D3D_PPL_DLL
++
++extern "C"
++{
++
+ JNIEXPORT void JNICALL
+-Java_sun_java2d_d3d_D3DRenderer_devFillSpans
++Java_sun_java2d_d3d_D3DRenderer_drawPoly
+     (JNIEnv *env, jobject d3dr,
+-     jlong pData, jlong pCtx,
+-     jobject si, jlong pIterator, jint transx, jint transy)
++     jintArray xpointsArray, jintArray ypointsArray,
++     jint nPoints, jboolean isClosed,
++     jint transX, jint transY)
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-    SpanIteratorFuncs *pFuncs = (SpanIteratorFuncs *)jlong_to_ptr(pIterator);
+-    void *srData;
+-    float x1, y1, x2, y2;
+-    jint spanbox[4];
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_devFillSpans");
+-    J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                "  transx=%-4d transy=%-4d", transx, transy);
++    jint *xPoints, *yPoints;
+ 
+-    if (JNU_IsNull(env, si)) {
+-        JNU_ThrowNullPointerException(env, "span iterator");
+-        return;
++    J2dTraceLn(J2D_TRACE_INFO, "D3DRenderer_drawPoly");
++
++    xPoints = (jint *)env->GetPrimitiveArrayCritical(xpointsArray, NULL);
++    if (xPoints != NULL) {
++        yPoints = (jint *)env->GetPrimitiveArrayCritical(ypointsArray, NULL);
++        if (yPoints != NULL) {
++            D3DContext *d3dc = D3DRQ_GetCurrentContext();
++
++            D3DRenderer_DrawPoly(d3dc,
++                                 nPoints, isClosed,
++                                 transX, transY,
++                                 xPoints, yPoints);
++
++            if (d3dc != NULL) {
++                HRESULT res = d3dc->EndScene();
++                D3DRQ_MarkLostIfNeeded(res,
++                    D3DRQ_GetCurrentDestination());
++            }
++            env->ReleasePrimitiveArrayCritical(ypointsArray, yPoints, JNI_ABORT);
++        }
++        env->ReleasePrimitiveArrayCritical(xpointsArray, xPoints, JNI_ABORT);
+     }
+-    if (pFuncs == NULL) {
+-        JNU_ThrowNullPointerException(env, "native iterator not supplied");
+-        return;
+-    }
++}
+ 
+-    if (d3dc == NULL) {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "D3DRenderer_devFillSpans: context is null");
+-        return;
+-    }
++}
+ 
+-    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-    if (ddTargetSurface == NULL) {
+-        return;
+-    }
+-
+-    ddTargetSurface->GetExclusiveAccess();
+-    d3dc->GetExclusiveAccess();
+-
+-    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-    if (d3dDevice == NULL) {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return;
+-    }
+-
+-    HRESULT res = D3D_OK;
+-
+-    // buffer for the span vertexes (6 vertexes per span)
+-    static J2DXYC_HEXA spanVx[MAX_CACHED_SPAN_VX_NUM];
+-    J2DXYC_HEXA *pHexa = (J2DXYC_HEXA*)spanVx;
+-    jint numOfCachedSpans = 0;
+-
+-    if (SUCCEEDED(res = d3dc->BeginScene(STATE_RENDEROP))) {
+-        srData = (*pFuncs->open)(env, si);
+-
+-        // REMIND: this is wrong, if something has failed, we need to
+-        // do a EndScene/BeginScene()
+-        D3DU_PRIM_LOOP_BEGIN(res, wsdo);
+-        while ((*pFuncs->nextSpan)(srData, spanbox)) {
+-            x1 = (float)(spanbox[0] + transx);
+-            y1 = (float)(spanbox[1] + transy);
+-            x2 = (float)(spanbox[2] + transx);
+-            y2 = (float)(spanbox[3] + transy);
+-
+-            D3DU_INIT_VERTEX_COLOR_6(*pHexa, d3dc->colorPixel);
+-            D3DU_INIT_VERTEX_XY_6(*pHexa, x1, y1, x2, y2);
+-            numOfCachedSpans++;
+-            pHexa = (J2DXYC_HEXA*)PtrAddBytes(pHexa, sizeof(J2DXYC_HEXA));
+-            if (numOfCachedSpans >= MAX_CACHED_SPAN_VX_NUM) {
+-                if (FAILED(res = ddTargetSurface->IsLost())) {
+-                    numOfCachedSpans = 0;
+-                    break;
+-                }
+-
+-                res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,
+-                                               D3DFVF_J2D_XY_C,
+-                                               (void*)spanVx,
+-                                               6*numOfCachedSpans, 0);
+-                numOfCachedSpans = 0;
+-                pHexa = (J2DXYC_HEXA*)spanVx;
+-                if (FAILED(res)) {
+-                    break;
+-                }
+-            }
+-        }
+-        if (numOfCachedSpans > 0) {
+-            res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, D3DFVF_J2D_XY_C,
+-                                           (void*)spanVx,
+-                                           6*numOfCachedSpans, 0);
+-        }
+-        D3DU_PRIM_LOOP_END(env, res, wsdo, "DrawPrimitive(D3DPT_TRIANGLEFAN)");
+-
+-        (*pFuncs->close)(env, srData);
+-
+-        d3dc->EndScene(res);
+-    }
+-
+-    d3dc->ReleaseExclusiveAccess();
+-    ddTargetSurface->ReleaseExclusiveAccess();
+-}
++#endif // D3D_PPL_DLL
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRenderer.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRenderer.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,85 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++#include "sun_java2d_pipe_BufferedRenderPipe.h"
++#include "D3DContext.h"
++
++#define BYTES_PER_POLY_POINT \
++    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_POLY_POINT
++#define BYTES_PER_SCANLINE \
++    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_SCANLINE
++#define BYTES_PER_SPAN \
++    sun_java2d_pipe_BufferedRenderPipe_BYTES_PER_SPAN
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawLine(D3DContext *d3dc,
++                     jint x1, jint y1, jint x2, jint y2);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawRect(D3DContext *d3dc,
++                     jint x, jint y, jint w, jint h);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillRect(D3DContext *d3dc,
++                     jint x, jint y, jint w, jint h);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawPoly(D3DContext *d3dc,
++                     jint nPoints, jboolean isClosed,
++                     jint transX, jint transY,
++                     jint *xPoints, jint *yPoints);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawScanlines(D3DContext *d3dc,
++                          jint scanlineCount, jint *scanlines);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillSpans(D3DContext *d3dc, jint spanCount, jint *spans);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillParallelogram(D3DContext *d3dc,
++                              jfloat fx11, jfloat fy11,
++                              jfloat dx21, jfloat dy21,
++                              jfloat dx12, jfloat dy12);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawParallelogram(D3DContext *d3dc,
++                              jfloat fx11, jfloat fy11,
++                              jfloat dx21, jfloat dy21,
++                              jfloat dx12, jfloat dy12,
++                              jfloat lw21, jfloat lw12);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_FillAAParallelogram(D3DContext *d3dc,
++                                jfloat fx11, jfloat fy11,
++                                jfloat dx21, jfloat dy21,
++                                jfloat dx12, jfloat dy12);
++
++HRESULT D3DPIPELINE_API
++D3DRenderer_DrawAAParallelogram(D3DContext *d3dc,
++                                jfloat fx11, jfloat fy11,
++                                jfloat dx21, jfloat dy21,
++                                jfloat dx12, jfloat dy12,
++                                jfloat lw21, jfloat lw12);
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.cpp	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,765 @@
++/*
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "D3DResourceManager.h"
@@ -27630,33 +30308,33 @@
 +    return CreateTexture(width, height, isRTT, isOpaque, pFormat, dwUsage,
 +                         ppTextureResource);
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.h	2011-01-08 01:26:50.479202297 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DResourceManager.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DResourceManager.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,214 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +
@@ -27848,33 +30526,660 @@
 +    IManagedResource* pHead;
 +};
 +#endif _D3DRESOURCEMANAGER_H_
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DShaderGen.c openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaderGen.c
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DShaderGen.c	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaderGen.c	2011-01-08 01:26:50.479202297 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRuntimeTest.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRuntimeTest.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,537 +0,0 @@
+-/*
+- * Copyright (c) 2005, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "dxInit.h"
+-#include "ddrawUtils.h"
+-#include "RegistryKey.h"
+-#include "D3DTestRaster.h"
+-#include "WindowsFlags.h"
+-#include "D3DRuntimeTest.h"
+-#include "D3DSurfaceData.h"
+-#include "D3DUtils.h"
+-
+-#ifdef DEBUG
+-void TestRasterOutput(byte *rasPtr, int x, int y, int w, int h,
+-                      int scanStride, int pixelStride,
+-                      TIntTestRaster goldenArray = NULL);
+-#endif // DEBUG
+-void PrintD3DCaps(int caps);
+-
+-/**
+- * Test whether we should enable d3d rendering on this device.
+- * This includes checking whether there were problems creating
+- * the necessary offscreen surface, problems during any of the
+- * rendering calls (Blts and d3d lines) and any rendering artifacts
+- * caused by d3d lines.  The rendering artifact tests are
+- * performed by checking a pre-rendered test pattern (produced
+- * by our software renderer) against that same pattern rendered
+- * on this device.  If there are any pixels which differ between
+- * the two patterns we disable d3d line rendering on the device.
+- * Differences in the test pattern rendering can be caused
+- * by different rendering algorithms used by our software
+- * renderer and the driver or hardware on this device.  For example,
+- * some Intel cards (e.g., i815) are known to use polygon renderers
+- * for their lines, which sometimes result in wide lines.
+- * The test pattern is stored in d3dTestRaster.h, which is generated
+- * by a Java test program
+- * (src/share/test/java2d/VolatileImage/D3DTestPattern/D3DTestPattern.java).
+- */
+-
+-int TestForBadHardware(DxCapabilities *dxCaps)
+-{
+-    // Check this device against a list of bad d3d devices and
+-    // disable as necessary
+-    static WCHAR *badDeviceStrings[] = {
+-        L"Trident Video Accelerator",
+-        L"RAGE PRO",
+-        L"RAGE XL",
+-        L"Rage Fury",
+-    };
+-    static int numBadDevices = 4;
+-    WCHAR *dxDeviceName = dxCaps->GetDeviceName();
+-    for (int i = 0; i < numBadDevices; ++i) {
+-        if (wcsstr(dxDeviceName, badDeviceStrings[i]) != NULL) {
+-            // REMIND: For now, we disable d3d for all operations because
+-            // of one bad d3d device in the system.  This is because we
+-            // should avoid registering the d3d rendering loops at the
+-            // Java level since we cannot use d3d at the native level.
+-            // A real fix would instead understand the difference between
+-            // a surface that could handle d3d native rendering and one
+-            // that could not and would use the appropriate rendering loop
+-            // so that disabling d3d on simply one device would be
+-            // sufficient.
+-            // Note that this disable-all approach is okay for now because
+-            // the single bad device (Trident) that triggers this error
+-            // is generally found on laptops, where multiple graphics
+-            // devices are not even possible, so disabling d3d for all
+-            // devices is equivalent to disabling d3d for this single
+-            // device.
+-            J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                           "TestForBadHardware: Found match: %S. Test FAILED",
+-                           badDeviceStrings[i]);
+-            return J2D_D3D_FAILURE;
+-        }
+-    }
+-    return J2D_D3D_HW_OK;
+-}
+-
+-int TestTextureFormats(D3DContext *d3dContext)
+-{
+-    int testRes = J2D_D3D_FAILURE;
+-
+-    D3DTextureTable &table = d3dContext->GetTextureTable();
+-    int pfExists;
+-    // Check that there's at least one valid pixel format
+-    // for each transparency type (opaque, bitmask, translucent)
+-    for (int t = TR_OPAQUE_IDX; t < TR_MAX_IDX; t++) {
+-        pfExists = FALSE;
+-        for (int d = DEPTH16_IDX; d < DEPTH_MAX_IDX; d++) {
+-            if (table[t][d].pfType != PF_INVALID) {
+-                pfExists = TRUE;
+-                break;
+-            }
+-        }
+-        if (pfExists == FALSE) {
+-            // couldn't find a pixel formap for this transparency type
+-            J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                           "D3DTest::TestTextureFormats no texture formats"\
+-                           " for %d transparency", t);
+-            break;
+-        }
+-    }
+-
+-    // we must have ARGB texture format (may be used for text rendering)
+-    if (pfExists == TRUE &&
+-        table[TR_TRANSLUCENT_IDX][DEPTH32_IDX].pfType == PF_INT_ARGB)
+-    {
+-        testRes |= J2D_D3D_PIXEL_FORMATS_OK;
+-    } else {
+-        J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                       "D3DTest::TestTextureFormats: FAILED pfType=%d",
+-                       table[TR_TRANSLUCENT_IDX][DEPTH32_IDX].pfType);
+-    }
+-    return testRes;
+-}
+-
+-int TestSetClip(JNIEnv *env, D3DContext *d3dContext,
+-                DDrawSurface *lpPlainSurface)
+-{
+-    int testRes = J2D_D3D_FAILURE;
+-
+-    if (SUCCEEDED(d3dContext->SetRenderTarget(lpPlainSurface))) {
+-        jobject clip =
+-            JNU_CallStaticMethodByName(env, NULL,
+-                                       "sun/java2d/pipe/Region",
+-                                       "getInstanceXYWH",
+-                                       "(IIII)Lsun/java2d/pipe/Region;",
+-                                       0, 0, D3D_TEST_RASTER_W, D3D_TEST_RASTER_H).l;
+-        if (!JNU_IsNull(env, clip)) {
+-            if (SUCCEEDED(d3dContext->SetClip(env, clip, JNI_TRUE,
+-                                              0, 0,
+-                                              D3D_TEST_RASTER_W,
+-                                              D3D_TEST_RASTER_H)))
+-            {
+-                testRes |= J2D_D3D_DEPTH_SURFACE_OK;
+-            }
+-            env->DeleteLocalRef(clip);
+-        }
+-    }
+-    return testRes;
+-}
+-
+-int TestRenderingResults(DDrawSurface *lpPlainSurface,
+-                         TIntTestRaster goldenArray)
+-{
+-    // Now, check the results of the test raster against our d3d drawing
+-    SurfaceDataRasInfo rasInfo;
+-    if (FAILED(lpPlainSurface->Lock(NULL, &rasInfo, DDLOCK_WAIT, NULL))) {
+-        return J2D_D3D_FAILURE;
+-    }
+-
+-    byte *rasPtr = (byte*)rasInfo.rasBase;
+-    int pixelStride = rasInfo.pixelStride;
+-    int scanStride = rasInfo.scanStride;
+-    for (int row = 0; row < D3D_TEST_RASTER_H; ++row) {
+-        byte *tmpRasPtr = rasPtr + row * scanStride;
+-        for (int col = 0; col < D3D_TEST_RASTER_W; ++col) {
+-            DWORD pixelVal;
+-            switch (pixelStride) {
+-            case 1:
+-                pixelVal = *tmpRasPtr;
+-                break;
+-            case 2:
+-                pixelVal = *((unsigned short*)tmpRasPtr);
+-                break;
+-            default:
+-                pixelVal = *((unsigned int*)tmpRasPtr);
+-                break;
+-            }
+-            tmpRasPtr += pixelStride;
+-            // The test is simple: if the test raster pixel has value 0, then
+-            // we expect 0 in the d3d surface.  If the test raster has a nonzero
+-            // value, then we expect the d3d surface to also have non-zero value.
+-            // All other results represent failure.
+-            int goldenValue = (goldenArray[row][col] & 0x00ffffff);
+-            if ((goldenValue == 0 && pixelVal != 0) ||
+-                (goldenValue != 0 && pixelVal == 0))
+-            {
+-                J2dRlsTraceLn3(J2D_TRACE_WARNING,
+-                               "TestRenderingResults: Quality test failed due "\
+-                               "to value %x at (%d, %d)", pixelVal, col, row);
+-#ifdef DEBUG
+-                // This section is not necessary, but it might be
+-                // nice to know why we are failing D3DTest on some
+-                // systems.  If tracing is enabled, this section will
+-                // produce an ascii representation of the test pattern,
+-                // the result on this device, and the pixels that were
+-                // in error.
+-                J2dTraceLn(J2D_TRACE_VERBOSE, "TestRaster:");
+-                TestRasterOutput((byte*)goldenArray, 0, 0, D3D_TEST_RASTER_W,
+-                                 D3D_TEST_RASTER_H, D3D_TEST_RASTER_W*4, 4);
+-                J2dTraceLn(J2D_TRACE_VERBOSE, "D3D Raster:");
+-                TestRasterOutput(rasPtr, 0, 0, D3D_TEST_RASTER_W,
+-                                 D3D_TEST_RASTER_H, scanStride, pixelStride);
+-                J2dTraceLn(J2D_TRACE_VERBOSE, "Deltas (x indicates problem pixel):");
+-                TestRasterOutput(rasPtr, 0, 0, D3D_TEST_RASTER_W,
+-                                 D3D_TEST_RASTER_H, scanStride, pixelStride,
+-                                 goldenArray);
+-#endif // DEBUG
+-                lpPlainSurface->Unlock(NULL);
+-                return  J2D_D3D_FAILURE;
+-            }
+-        }
+-    }
+-
+-    lpPlainSurface->Unlock(NULL);
+-    return (J2D_D3D_LINES_OK | J2D_D3D_LINE_CLIPPING_OK);
+-}
+-
+-int TestLineRenderingQuality(JNIEnv *env, D3DContext *d3dContext,
+-                             DDrawSurface *lpPlainSurface)
+-{
+-    static J2D_XY_C_VERTEX lineVerts[] = {
+-#ifdef USE_SINGLE_VERTEX_FORMAT
+-        { 0, 0, 0, 0xffffffff, 0.0f, 0.0f },
+-        { 0, 0, 0, 0xffffffff, 0.0f, 0.0f },
+-        { 0, 0, 0, 0xffffffff, 0.0f, 0.0f },
+-        { 0, 0, 0, 0xffffffff, 0.0f, 0.0f },
+-        { 0, 0, 0, 0xffffffff, 0.0f, 0.0f },
+-#else
+-        { 0, 0, 0, 0xffffffff }, // x, y, z, color
+-        { 0, 0, 0, 0xffffffff },
+-        { 0, 0, 0, 0xffffffff },
+-        { 0, 0, 0, 0xffffffff },
+-        { 0, 0, 0, 0xffffffff },
+-#endif // USE_SINGLE_VERTEX_FORMAT
+-    };
+-    IDirect3DDevice7 *d3dDevice = d3dContext->Get3DDevice();
+-    HRESULT res;
+-
+-    d3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x0, 0.0, 0);
+-
+-    if (FAILED(d3dContext->BeginScene(STATE_RENDEROP))) {
+-        return J2D_D3D_FAILURE;
+-    }
+-
+-    int i;
+-
+-    for (i = 0; i < d3dNumTestLines * 4; i += 4) {
+-        lineVerts[0].x = d3dTestLines[i + 0];
+-        lineVerts[0].y = d3dTestLines[i + 1];
+-        lineVerts[1].x = d3dTestLines[i + 2];
+-        lineVerts[1].y = d3dTestLines[i + 3];
+-        if (FAILED(res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP,
+-                                                  D3DFVF_J2D_XY_C,
+-                                                  lineVerts, 2, 0)))
+-        {
+-            d3dContext->ForceEndScene();
+-            return J2D_D3D_FAILURE;
+-        }
+-        // REMIND: needed for the test to pass on ATI some boards
+-        d3dDevice->DrawPrimitive(D3DPT_POINTLIST, D3DFVF_J2D_XY_C,
+-                                 &(lineVerts[1]), 1, 0);
+-    }
+-
+-    for (i = 0; i < d3dNumTestRects * 4; i += 4) {
+-        float x1 = d3dTestRects[i + 0];
+-        float y1 = d3dTestRects[i + 1];
+-        float x2 = d3dTestRects[i + 2];
+-        float y2 = d3dTestRects[i + 3];
+-        D3DU_INIT_VERTEX_PENT_XY(lineVerts, x1, y1, x2, y2);
+-        if (FAILED(res = d3dDevice->DrawPrimitive(D3DPT_LINESTRIP,
+-                                                  D3DFVF_J2D_XY_C,
+-                                                  lineVerts, 5, 0)))
+-        {
+-            d3dContext->ForceEndScene();
+-            return J2D_D3D_FAILURE;
+-        }
+-    }
+-    d3dContext->ForceEndScene();
+-
+-    // REMIND: add rendering of clipped lines
+-
+-    return TestRenderingResults(lpPlainSurface, d3dTestRaster);
+-}
+-
+-int TestTextureMappingQuality(JNIEnv *env, DDraw *ddObject,
+-                              D3DContext *d3dContext,
+-                              DDrawSurface *lpPlainSurface)
+-{
+-    static J2DLVERTEX quadVerts[4] = {
+-        { 0.0f, 0.0f, 0.0f, 0xffffffff, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0xffffffff, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0xffffffff, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0xffffffff, 0.0f, 0.0f }
+-    };
+-
+-    int testRes = TestTextureFormats(d3dContext);
+-
+-    if (testRes & J2D_D3D_PIXEL_FORMATS_OK) {
+-
+-        DDrawSurface *lpTexture =
+-            D3DUtils_CreateTexture(env, ddObject, d3dContext, TR_TRANSLUCENT,
+-                                   D3D_TEXTURE_RASTER_W, D3D_TEXTURE_RASTER_H);
+-        if (lpTexture) {
+-            D3DUtils_UploadIntImageToXRGBTexture(lpTexture,
+-                                                 (int *)srcImageArray,
+-                                                 D3D_TEXTURE_RASTER_W,
+-                                                 D3D_TEXTURE_RASTER_H);
+-
+-            float u2 = ((float)D3D_TEXTURE_RASTER_W) /
+-                       (float)lpTexture->GetDXSurface()->GetWidth();
+-            float v2 = ((float)D3D_TEXTURE_RASTER_H) /
+-                       (float)lpTexture->GetDXSurface()->GetHeight();
+-            D3DU_INIT_VERTEX_QUAD_UV(quadVerts, 0.0f, 0.0f, u2, v2);
+-
+-            IDirect3DDevice7 *d3dDevice = d3dContext->Get3DDevice();
+-            d3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x00000000, 0.0, 0);
+-
+-            d3dContext->SetAlphaComposite(3/*SrcOver*/,
+-                                          1.0f, D3DC_NO_CONTEXT_FLAGS);
+-            d3dDevice->SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTFG_POINT);
+-            d3dDevice->SetTextureStageState(0, D3DTSS_MINFILTER, D3DTFG_POINT);
+-
+-            HRESULT res;
+-            if (SUCCEEDED(res = d3dContext->BeginScene(STATE_BLITOP))) {
+-                DXSurface *dxSurface = lpTexture->GetDXSurface();
+-                if (SUCCEEDED(d3dContext->SetTexture(dxSurface))) {
+-                    for (int i = 0; i < d3dNumTextureRects * 4; i += 4) {
+-                        float x1 = d3dTextureRects[i + 0];
+-                        float y1 = d3dTextureRects[i + 1];
+-                        float x2 = d3dTextureRects[i + 2];
+-                        float y2 = d3dTextureRects[i + 3];
+-                        D3DU_INIT_VERTEX_QUAD_XY(quadVerts, x1, y1, x2, y2);
+-                        d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
+-                                                 D3DFVF_J2DLVERTEX,
+-                                                 quadVerts, 4, 0);
+-                    }
+-                }
+-                res = d3dContext->ForceEndScene();
+-                d3dContext->SetTexture(NULL);
+-            }
+-            // REMIND: at this point we ignore the results of
+-            // the test.
+-            TestRenderingResults(lpPlainSurface, linInterpArray);
+-            if (SUCCEEDED(res)) {
+-                testRes |= (J2D_D3D_TR_TEXTURE_SURFACE_OK |
+-                            J2D_D3D_TEXTURE_BLIT_OK       |
+-                            J2D_D3D_TEXTURE_TRANSFORM_OK);
+-
+-                // REMIND: add tests for opaque and bitmask textures
+-                testRes |= (J2D_D3D_OP_TEXTURE_SURFACE_OK |
+-                            J2D_D3D_BM_TEXTURE_SURFACE_OK);
+-            }
+-            delete lpTexture;
+-        } else {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "TestTextureMappingQuality: "\
+-                          "CreateTexture(TRANSLUCENT) FAILED");
+-        }
+-    }
+-    return testRes;
+-}
+-
+-int TestD3DDevice(DDraw *ddObject,
+-                  D3DContext *d3dContext,
+-                  DxCapabilities *dxCaps)
+-{
+-    int testRes = TestForBadHardware(dxCaps);
+-    if (!(testRes & J2D_D3D_HW_OK) || !d3dContext) {
+-        return testRes;
+-    }
+-
+-    D3DDEVICEDESC7 d3dDevDesc;
+-    IDirect3DDevice7 *d3dDevice = d3dContext->Get3DDevice();
+-    if (d3dDevice == NULL  ||
+-        FAILED(d3dDevice->GetCaps(&d3dDevDesc)) ||
+-        FAILED(D3DUtils_CheckDeviceCaps(&d3dDevDesc)))
+-    {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "TestD3DDevice: device caps testing FAILED");
+-        return testRes;
+-    }
+-    testRes |= J2D_D3D_DEVICE_OK;
+-
+-    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
+-    DDrawSurface *lpPlainSurface =
+-        D3DUtils_CreatePlainSurface(env, ddObject, d3dContext,
+-                                    D3D_TEST_RASTER_W, D3D_TEST_RASTER_H);
+-    if (!lpPlainSurface) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "TestD3DDevice: CreatePlainSurface FAILED");
+-        return testRes;
+-    }
+-    testRes |= J2D_D3D_PLAIN_SURFACE_OK;
+-
+-    // Set identity transform
+-    if (FAILED(d3dContext->SetTransform(NULL, 0, 0, 0, 0, 0, 0))) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "TestD3DDevice: SetTransform FAILED");
+-        delete lpPlainSurface;
+-        return testRes;
+-    }
+-    testRes |= J2D_D3D_SET_TRANSFORM_OK;
+-
+-    // Test setting the target surface, create depth buffer, and
+-    // clip
+-    testRes |= TestSetClip(env, d3dContext, lpPlainSurface);
+-    if (!(testRes & J2D_D3D_DEPTH_SURFACE_OK)) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR, "TestD3DDevice: SetClip FAILED");
+-        delete lpPlainSurface;
+-        return testRes;
+-    }
+-
+-    // Test drawLines
+-    testRes |= TestLineRenderingQuality(env, d3dContext, lpPlainSurface);
+-
+-    // Test texture mapping
+-    testRes |= TestTextureMappingQuality(env, ddObject, d3dContext,
+-                                         lpPlainSurface);
+-
+-    d3dContext->SetRenderTarget(NULL);
+-
+-    delete lpPlainSurface;
+-    return testRes;
+-}
+-
+-#ifdef DEBUG
+-/**
+- * Output test raster (produced in D3DTest function).  Utility
+- * used in debugging only.  Enable by setting J2D_TRACE_LEVEL=J2D_VERBOSE
+- * prior to running application with debug java.  The output from this will
+- * be seen only if D3DTest fails.
+- */
+-void TestRasterOutput(byte *rasPtr, int x, int y, int w, int h,
+-                      int scanStride, int pixelStride,
+-                      TIntTestRaster goldenArray)
+-{
+-    int goldenValue;
+-    for (int traceRow = y; traceRow < h; ++traceRow) {
+-        byte *tmpRasPtr = rasPtr + traceRow * scanStride;
+-        for (int traceCol = x; traceCol < w; ++traceCol) {
+-            DWORD pixelVal;
+-            switch (pixelStride) {
+-            case 1:
+-                pixelVal = *tmpRasPtr;
+-                break;
+-            case 2:
+-                pixelVal = *((unsigned short*)tmpRasPtr);
+-                break;
+-            default:
+-                pixelVal = *((unsigned int*)tmpRasPtr) & 0x00ffffff;
+-                break;
+-            }
+-            tmpRasPtr += pixelStride;
+-            if (goldenArray == NULL) {
+-                if (pixelVal) {
+-                    J2dTrace(J2D_TRACE_VERBOSE, "1");
+-                } else {
+-                    J2dTrace(J2D_TRACE_VERBOSE, "0");
+-                }
+-            } else {
+-                goldenValue = (goldenArray[traceRow][traceCol] & 0x00ffffff);
+-                if ((goldenValue == 0 && pixelVal != 0) ||
+-                    (goldenValue != 0 && pixelVal == 0))
+-                {
+-                    J2dTrace(J2D_TRACE_VERBOSE, "x");
+-                } else {
+-                    J2dTrace(J2D_TRACE_VERBOSE, "-");
+-                }
+-            }
+-
+-        }
+-        J2dTrace(J2D_TRACE_VERBOSE, "\n");
+-    }
+-}
+-#endif // DEBUG
+-
+-void PrintD3DCaps(int caps)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "{")
+-    if (caps == J2D_D3D_FAILURE) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_FAILURE");
+-    } else {
+-        if (caps & J2D_D3D_DEPTH_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_DEPTH_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_PLAIN_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_PLAIN_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_OP_TEXTURE_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_OP_TEXTURE_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_BM_TEXTURE_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_BM_TEXTURE_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_TR_TEXTURE_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_TR_TEXTURE_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_OP_RTT_SURFACE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_OP_RTT_SURFACE_OK,");
+-        }
+-        if (caps & J2D_D3D_LINE_CLIPPING_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_LINE_CLIPPING_OK,");
+-        }
+-        if (caps & J2D_D3D_LINES_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_LINES_OK,");
+-        }
+-        if (caps & J2D_D3D_TEXTURE_BLIT_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_TEXTURE_BLIT_OK,");
+-        }
+-        if (caps & J2D_D3D_TEXTURE_TRANSFORM_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_TEXTURE_TRANSFORM_OK,");
+-        }
+-        if (caps & J2D_D3D_DEVICE_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_DEVICE_OK,");
+-        }
+-        if (caps & J2D_D3D_PIXEL_FORMATS_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_SET_TRANSFORM_OK,");
+-        }
+-        if (caps & J2D_D3D_HW_OK) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "  J2D_D3D_HW_OK,");
+-        }
+-    }
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "}");
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DRuntimeTest.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,82 +0,0 @@
+-/*
+- * Copyright (c) 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef D3DRUNTIMETEST_H
+-#define D3DRUNTIMETEST_H
+-
+-#include "ddrawObject.h"
+-#include "dxCapabilities.h"
+-#include "D3DContext.h"
+-
+-/*
+- * This is a minimum set of capabilities required for
+- * enabling D3D pipeline. If any of these is
+- * missing, d3d will be disabled completely.
+- *
+- * This set is used if the use of d3d pipeline is
+- * forced via flag or env. variable.
+- */
+-#define J2D_D3D_REQUIRED_RESULTS ( \
+-   J2D_D3D_HW_OK                 | \
+-   J2D_D3D_DEVICE_OK             | \
+-   J2D_D3D_DEPTH_SURFACE_OK      | \
+-   J2D_D3D_PLAIN_SURFACE_OK      | \
+-   J2D_D3D_PIXEL_FORMATS_OK      | \
+-   J2D_D3D_OP_TEXTURE_SURFACE_OK | \
+-   J2D_D3D_TR_TEXTURE_SURFACE_OK | \
+-   J2D_D3D_SET_TRANSFORM_OK)
+-
+-/*
+- * This is a set of capabilities desired for
+- * enabling D3D pipeline. It includes the set
+- * of required caps, plus a number of rendering
+- * quality related caps.
+- *
+- * This is the set of caps checked by default when
+- * deciding on whether to enable the d3d pipeline.
+- */
+-#define J2D_D3D_DESIRED_RESULTS ( \
+-   J2D_D3D_REQUIRED_RESULTS      | \
+-   J2D_D3D_BM_TEXTURE_SURFACE_OK | \
+-   J2D_D3D_TEXTURE_BLIT_OK       | \
+-   J2D_D3D_TEXTURE_TRANSFORM_OK  | \
+-   J2D_D3D_LINES_OK              | \
+-   J2D_D3D_LINE_CLIPPING_OK)
+-
+-
+-/*
+- * This function tests the direct3d device associated
+- * with the passed ddraw object.
+- *
+- * The function returns the capabilities of the tested device, and the
+- * results of the quality testing.
+- * Enabling the d3d pipeline for this particular device is based on the
+- * result of this function.
+- */
+-int TestD3DDevice(DDraw *ddObject, D3DContext *d3dContext, DxCapabilities *dxCaps);
+-
+-void PrintD3DCaps(int caps);
+-
+-#endif //D3DRUNTIMETEST_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DShaderGen.c
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaderGen.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,985 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +/**
@@ -28837,33 +32142,33 @@
 +
 +    return 0;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DShaders.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaders.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DShaders.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaders.h	2011-01-08 01:26:50.483202340 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DShaders.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DShaders.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,7734 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +#if 0
 +//
@@ -36575,9 +39880,9 @@
 +    0x80010000, 0x80550000, 0x80aa0000, 0x81000000, 0x03000005, 0x800f0000,
 +    0x80000000, 0x90e40000, 0x02000001, 0x800f0800, 0x80e40000, 0x0000ffff
 +};
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	2011-01-08 01:26:50.483202340 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -36604,10 +39909,21 @@
 +#include "awt_Window.h"
 +#include "awt_BitmapUtil.h"
 +#include "D3DRenderQueue.h"
-+
+ 
+-#include "Win32SurfaceData.h"
+-#include "sun_java2d_d3d_D3DBackBufferSurfaceData.h"
 +// REMIND: move to awt_Component.h
 +extern "C" HWND AwtComponent_GetHWnd(JNIEnv *env, jlong pData);
-+
+ 
+-extern LockFunc Win32OSSD_Lock;
+-extern GetRasInfoFunc Win32OSSD_GetRasInfo;
+-extern UnlockFunc Win32OSSD_Unlock;
+-extern DisposeFunc Win32OSSD_Dispose;
+-extern GetDCFunc Win32OSSD_GetDC;
+-extern ReleaseDCFunc Win32OSSD_ReleaseDC;
+-extern InvalidateSDFunc Win32OSSD_InvalidateSD;
+-extern RestoreSurfaceFunc Win32OSSD_RestoreSurface;
+-extern DisposeFunc Win32BBSD_Dispose;
 +/**
 + * Initializes nativeWidth/Height fields of the SurfaceData object with
 + * dimensions on the native surface.
@@ -36625,66 +39941,23 @@
 +        width = d3dsdo->width;
 +        height = d3dsdo->height;
 +    }
- 
--#include "Win32SurfaceData.h"
--#include "sun_java2d_d3d_D3DBackBufferSurfaceData.h"
++
 +    JNU_SetFieldByName(env, NULL, sdObject, "nativeWidth", "I", width);
 +    JNU_SetFieldByName(env, NULL, sdObject, "nativeHeight", "I", height);
- 
--extern LockFunc Win32OSSD_Lock;
--extern GetRasInfoFunc Win32OSSD_GetRasInfo;
--extern UnlockFunc Win32OSSD_Unlock;
--extern DisposeFunc Win32OSSD_Dispose;
--extern GetDCFunc Win32OSSD_GetDC;
--extern ReleaseDCFunc Win32OSSD_ReleaseDC;
--extern InvalidateSDFunc Win32OSSD_InvalidateSD;
--extern RestoreSurfaceFunc Win32OSSD_RestoreSurface;
--extern DisposeFunc Win32BBSD_Dispose;
++
 +    env->DeleteLocalRef(sdObject);
 +}
- 
--extern "C" {
++
 +void D3DSD_Flush(void *pData)
 +{
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DSD_Flush");
 +    RETURN_IF_NULL(pData);
- 
--RestoreSurfaceFunc D3DSD_RestoreSurface;
++
 +    D3DSDOps *d3dsdo = (D3DSDOps*)pData;
 +    if (d3dsdo->pResource != NULL) {
 +        D3DContext *pCtx;
 +        D3DPipelineManager *pMgr;
- 
--/*
-- * D3D-surface specific restore function.
-- * We need to make sure the D3DContext is notified if the
-- * surface is lost (only if this surface is the current target,
-- * otherwise it's possible that it'll get restored (along with its
-- * depth buffer), and the context will still think that the clipping
-- * that's set for this surface is valid.
-- * Consider this scenario:
-- * do {
-- *     vi.validate(gc); // validated, vi's surface is restored, clipping is lost
-- *     // render stuff using d3d, clipping is reset
-- *     // -> surface loss event happens
-- *     // do a DD blit of the VI to the screen
-- *     // at this point the VI surface will be marked lost
-- *     // and will be restored in validate() next time around,
-- *     // losing the clipping w/o notifying the D3D context
-- * } while (vi.surfaceLost());
-- */
--void D3DSD_RestoreSurface(JNIEnv *env, Win32SDOps *wsdo) {
--    J2dTraceLn(J2D_TRACE_INFO, "D3DSD_RestoreSurface");
--    D3DSDOps *d3dsdo = (D3DSDOps *)wsdo;
--    // This is needed only for non-textures, since textures can't
--    // lose their surfaces, as they're managed.
--    if (!(d3dsdo->d3dType & D3D_TEXTURE_SURFACE) && wsdo->lpSurface != NULL)
--    {
--        if (wsdo->ddInstance != NULL && wsdo->ddInstance->ddObject != NULL) {
--            D3DContext *d3dContext =
--                wsdo->ddInstance->ddObject->GetD3dContext();
--            if (d3dContext != NULL) {
--                d3dContext->InvalidateIfTarget(env, wsdo->lpSurface);
++
 +        d3dsdo->pResource->SetSDOps(NULL);
 +
 +        if ((pMgr = D3DPipelineManager::GetInstance()) != NULL &&
@@ -36692,13 +39965,12 @@
 +        {
 +            if (pCtx->GetResourceManager()) {
 +                pCtx->GetResourceManager()->ReleaseResource(d3dsdo->pResource);
-             }
-         }
++            }
++        }
 +        d3dsdo->pResource = NULL;
-     }
--    Win32OSSD_RestoreSurface(env, wsdo);
- }
- 
++    }
++}
++
 +void
 +D3DSD_MarkLost(void *pData)
 +{
@@ -36772,29 +40044,149 @@
 +
 +// ------------ D3DSurfaceData's JNI methods ----------------
 +
-+
-+extern "C" {
-+
+ 
+ extern "C" {
+ 
+-RestoreSurfaceFunc D3DSD_RestoreSurface;
++/*
++ * Class:     sun_java2d_d3d_D3DSurfaceData
++ * Method:    initOps
++ * Signature: (III)V
++ */
++JNIEXPORT void
++JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initOps
++  (JNIEnv *env, jobject d3dsd, jint gdiScreen, jint width, jint height)
++{
++    D3DPipelineManager *pMgr;
++    D3DSDOps *d3dsdo = (D3DSDOps *)SurfaceData_InitOps(env, d3dsd,
++                                                       sizeof(D3DSDOps));
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOps");
++
++    if (d3dsdo == NULL) {
++        JNU_ThrowOutOfMemoryError(env, "creating native d3d ops");
++        return;
++    }
++
++    d3dsdo->sdOps.Lock       = D3DSD_Lock;
++    d3dsdo->sdOps.GetRasInfo = D3DSD_GetRasInfo;
++    d3dsdo->sdOps.Unlock     = D3DSD_Unlock;
++    d3dsdo->sdOps.Dispose    = D3DSD_Dispose;
++
++    d3dsdo->xoff = 0;
++    d3dsdo->yoff = 0;
++    d3dsdo->width = width;
++    d3dsdo->height = height;
++
++    d3dsdo->pResource = NULL;
++
++    d3dsdo->adapter =
++        (pMgr = D3DPipelineManager::GetInstance()) == NULL ?
++            D3DADAPTER_DEFAULT :
++            pMgr->GetAdapterOrdinalForScreen(gdiScreen);
++}
++
+ 
+ /*
+- * D3D-surface specific restore function.
+- * We need to make sure the D3DContext is notified if the
+- * surface is lost (only if this surface is the current target,
+- * otherwise it's possible that it'll get restored (along with its
+- * depth buffer), and the context will still think that the clipping
+- * that's set for this surface is valid.
+- * Consider this scenario:
+- * do {
+- *     vi.validate(gc); // validated, vi's surface is restored, clipping is lost
+- *     // render stuff using d3d, clipping is reset
+- *     // -> surface loss event happens
+- *     // do a DD blit of the VI to the screen
+- *     // at this point the VI surface will be marked lost
+- *     // and will be restored in validate() next time around,
+- *     // losing the clipping w/o notifying the D3D context
+- * } while (vi.surfaceLost());
++ * Class:     sun_java2d_d3d_D3DSurfaceData
++ * Method:    initTexture
++ * Signature: (JZZ)Z
+  */
+-void D3DSD_RestoreSurface(JNIEnv *env, Win32SDOps *wsdo) {
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DSD_RestoreSurface");
+-    D3DSDOps *d3dsdo = (D3DSDOps *)wsdo;
+-    // This is needed only for non-textures, since textures can't
+-    // lose their surfaces, as they're managed.
+-    if (!(d3dsdo->d3dType & D3D_TEXTURE_SURFACE) && wsdo->lpSurface != NULL)
+-    {
+-        if (wsdo->ddInstance != NULL && wsdo->ddInstance->ddObject != NULL) {
+-            D3DContext *d3dContext =
+-                wsdo->ddInstance->ddObject->GetD3dContext();
+-            if (d3dContext != NULL) {
+-                d3dContext->InvalidateIfTarget(env, wsdo->lpSurface);
+-            }
+-        }
++JNIEXPORT jboolean
++JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initTexture
++  (JNIEnv *env, jobject d3dsd,
++  jlong pData, jboolean isRTT, jboolean isOpaque)
++{
++    HRESULT res;
++    D3DSDOps *d3dsdo;
++    D3DContext *pCtx;
++    D3DPipelineManager *pMgr;
++    D3DFORMAT format;
++
++    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initTexture");
++
++    RETURN_STATUS_IF_NULL(d3dsdo = (D3DSDOps *)jlong_to_ptr(pData), JNI_FALSE);
++    RETURN_STATUS_IF_NULL(pMgr = D3DPipelineManager::GetInstance(), JNI_FALSE);
++
++    if (FAILED(res = pMgr->GetD3DContext(d3dsdo->adapter, &pCtx))) {
++        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
++        return JNI_FALSE;
+     }
+-    Win32OSSD_RestoreSurface(env, wsdo);
++    RETURN_STATUS_IF_NULL(pCtx->GetResourceManager(), JNI_FALSE);
++
++    pCtx->GetResourceManager()->ReleaseResource(d3dsdo->pResource);
++    d3dsdo->pResource = NULL;
++
++    if (isRTT && isOpaque) {
++        format = pCtx->GetPresentationParams()->BackBufferFormat;
++    } else {
++        format = D3DFMT_UNKNOWN;
++    }
++
++    res = pCtx->GetResourceManager()->
++        CreateTexture(d3dsdo->width, d3dsdo->height,
++                      isRTT, isOpaque,
++                      &format, 0/*usage*/, &d3dsdo->pResource);
++    if (SUCCEEDED(res)) {
++        J2dTraceLn1(J2D_TRACE_VERBOSE,
++                    "  created texture pResource=%x", d3dsdo->pResource);
++        d3dsdo->pResource->SetSDOps(d3dsdo);
++    } else {
++        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
++    }
++    D3DSD_SetNativeDimensions(env, d3dsdo);
++
++    return SUCCEEDED(res);
+ }
+ 
  /*
   * Class:     sun_java2d_d3d_D3DSurfaceData
-  * Method:    initOps
+- * Method:    initOps
 - * Signature: (Ljava/lang/Object;)V
-+ * Signature: (III)V
++ * Method:    initPlain
++ * Signature: (JZ)Z
   */
 -JNIEXPORT void JNICALL
 -Java_sun_java2d_d3d_D3DSurfaceData_initOps(JNIEnv *env,
 -                                           jobject wsd,
 -                                           jint depth,
 -                                           jint transparency)
-+JNIEXPORT void
-+JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initOps
-+  (JNIEnv *env, jobject d3dsd, jint gdiScreen, jint width, jint height)
++JNIEXPORT jboolean JNICALL
++Java_sun_java2d_d3d_D3DSurfaceData_initRTSurface
++  (JNIEnv *env, jobject d3dsd, jlong pData, jboolean isOpaque)
  {
-+    D3DPipelineManager *pMgr;
-+    D3DSDOps *d3dsdo = (D3DSDOps *)SurfaceData_InitOps(env, d3dsd,
-+                                                       sizeof(D3DSDOps));
-+
-     J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOps");
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOps");
 -    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_InitOps(env, wsd,
 -                                                         sizeof(D3DSDOps));
 -    wsdo->sdOps.Lock = Win32OSSD_Lock;
@@ -36847,14 +40239,20 @@
 -    wsdo->surfacePuntData.numBltsThreshold = 2;
 -    wsdo->gdiOpPending = FALSE;
 -}
--
++    HRESULT res;
++    D3DSDOps *d3dsdo;
++    D3DContext *pCtx;
++    D3DPipelineManager *pMgr;
++    D3DFORMAT format = D3DFMT_UNKNOWN;
+ 
 -jboolean init_D3DSDO(JNIEnv* env, Win32SDOps* wsdo, jint width, jint height,
 -                     jint d3dSurfaceType, jint screen)
 -{
 -    // default in case of an error
 -    wsdo->lpSurface = NULL;
 -    wsdo->ddInstance = NULL;
--
++    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initRTSurface");
+ 
 -    {
 -        Devices::InstanceAccess devices;
 -        wsdo->device = devices->GetDeviceReference(screen, FALSE);
@@ -36864,49 +40262,6 @@
 -                    "init_D3DSDO: Incorrect "\
 -                    "screen number (screen=%d)", screen);
 -        wsdo->invalid = TRUE;
-+
-+    if (d3dsdo == NULL) {
-+        JNU_ThrowOutOfMemoryError(env, "creating native d3d ops");
-+        return;
-+    }
-+
-+    d3dsdo->sdOps.Lock       = D3DSD_Lock;
-+    d3dsdo->sdOps.GetRasInfo = D3DSD_GetRasInfo;
-+    d3dsdo->sdOps.Unlock     = D3DSD_Unlock;
-+    d3dsdo->sdOps.Dispose    = D3DSD_Dispose;
-+
-+    d3dsdo->xoff = 0;
-+    d3dsdo->yoff = 0;
-+    d3dsdo->width = width;
-+    d3dsdo->height = height;
-+
-+    d3dsdo->pResource = NULL;
-+
-+    d3dsdo->adapter =
-+        (pMgr = D3DPipelineManager::GetInstance()) == NULL ?
-+            D3DADAPTER_DEFAULT :
-+            pMgr->GetAdapterOrdinalForScreen(gdiScreen);
-+}
-+
-+
-+/*
-+ * Class:     sun_java2d_d3d_D3DSurfaceData
-+ * Method:    initTexture
-+ * Signature: (JZZ)Z
-+ */
-+JNIEXPORT jboolean
-+JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initTexture
-+  (JNIEnv *env, jobject d3dsd,
-+  jlong pData, jboolean isRTT, jboolean isOpaque)
-+{
-+    HRESULT res;
-+    D3DSDOps *d3dsdo;
-+    D3DContext *pCtx;
-+    D3DPipelineManager *pMgr;
-+    D3DFORMAT format;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initTexture");
-+
 +    RETURN_STATUS_IF_NULL(d3dsdo = (D3DSDOps *)jlong_to_ptr(pData), JNI_FALSE);
 +    RETURN_STATUS_IF_NULL(pMgr = D3DPipelineManager::GetInstance(), JNI_FALSE);
 +
@@ -36923,19 +40278,13 @@
 +    pCtx->GetResourceManager()->ReleaseResource(d3dsdo->pResource);
 +    d3dsdo->pResource = NULL;
 +
-+    if (isRTT && isOpaque) {
-+        format = pCtx->GetPresentationParams()->BackBufferFormat;
-+    } else {
-+        format = D3DFMT_UNKNOWN;
-+    }
-+
 +    res = pCtx->GetResourceManager()->
-+        CreateTexture(d3dsdo->width, d3dsdo->height,
-+                      isRTT, isOpaque,
-+                      &format, 0/*usage*/, &d3dsdo->pResource);
++            CreateRTSurface(d3dsdo->width, d3dsdo->height,
++                            isOpaque, FALSE /*lockable*/,
++                            &format, &d3dsdo->pResource);
 +    if (SUCCEEDED(res)) {
-+        J2dTraceLn1(J2D_TRACE_VERBOSE,
-+                    "  created texture pResource=%x", d3dsdo->pResource);
++        J2dTraceLn1(J2D_TRACE_VERBOSE, "  created RT surface pResource=0x%x",
++                    d3dsdo->pResource);
 +        d3dsdo->pResource->SetSDOps(d3dsdo);
 +    } else {
 +        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
@@ -36949,8 +40298,8 @@
   * Class:     sun_java2d_d3d_D3DSurfaceData
 - * Method:    initOffScreenSurface
 - * Signature: (JJJIIII)I
-+ * Method:    initPlain
-+ * Signature: (JZ)Z
++ * Method:    initFlipBackbuffer
++ * Signature: (JJIZ)Z
   */
 -JNIEXPORT jint JNICALL
 -Java_sun_java2d_d3d_D3DSurfaceData_initOffScreenSurface
@@ -36959,141 +40308,15 @@
 -     jlong pData, jlong parentPdata,
 -     jint width, jint height,
 -     jint d3dSurfaceType, jint screen)
--{
--    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
--    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
--
--    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOffScreenSurface");
--    J2dTraceLn4(J2D_TRACE_VERBOSE,
--                "  width=%-4d height=%-4d type=%-3d scr=%-3d",
--                width, height, d3dSurfaceType, screen);
--
--    // REMIND: ideally this should be done in initOps
--    if (d3dSurfaceType == D3D_ATTACHED_SURFACE) {
--        wsdo->sdOps.Dispose = Win32BBSD_Dispose;
--    }
--
--    if (init_D3DSDO(env, wsdo, width, height,
--                    d3dSurfaceType, screen) == JNI_FALSE)
--    {
--        SurfaceData_ThrowInvalidPipeException(env,
--            "Can't create offscreen surface");
--        return PF_INVALID;
--    }
--
--    HMONITOR hMon = (HMONITOR)wsdo->device->GetMonitor();
--    DDrawObjectStruct *ddInstance = GetDDInstanceForDevice(hMon);
--    if (!ddInstance || !ddInstance->valid || !pd3dc) {
--        return PF_INVALID;
--    }
--
--    if (d3dSurfaceType == D3D_ATTACHED_SURFACE) {
--        // REMIND: still using the old path. ideally the creation of attached
--        // surface shoudld be done in the same way as other types of surfaces,
--        // that is, in D3DContext::CreateSurface, but we really don't use
--        // anything from D3DContext to get an attached surface, so this
--        // was left here.
--
--        Win32SDOps *wsdo_parent = (Win32SDOps *)jlong_to_ptr(parentPdata);
--        // we're being explicit here: requesting backbuffer, and render target
--        DDrawSurface* pNew = wsdo_parent->lpSurface == NULL ?
--            NULL :
--            wsdo_parent->lpSurface->
--                GetDDAttachedSurface(DDSCAPS_BACKBUFFER|DDSCAPS_3DDEVICE);
--        if (pNew == NULL ||
--            FAILED(pd3dc->AttachDepthBuffer(pNew->GetDXSurface())))
--        {
--            J2dRlsTraceLn1(J2D_TRACE_ERROR,
--                           "D3DSD_initSurface: GetAttachedSurface for parent"\
--                           " wsdo_parent->lpSurface=0x%x failed",
--                           wsdo_parent->lpSurface);
--            if (pNew != NULL) {
--                delete pNew;
--            }
--            SurfaceData_ThrowInvalidPipeException(env,
--                "Can't create attached offscreen surface");
--            return PF_INVALID;
--        }
-+JNIEXPORT jboolean JNICALL
-+Java_sun_java2d_d3d_D3DSurfaceData_initRTSurface
-+  (JNIEnv *env, jobject d3dsd, jlong pData, jboolean isOpaque)
-+{
-+    HRESULT res;
-+    D3DSDOps *d3dsdo;
-+    D3DContext *pCtx;
-+    D3DPipelineManager *pMgr;
-+    D3DFORMAT format = D3DFMT_UNKNOWN;
-+
-+    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initRTSurface");
-+
-+    RETURN_STATUS_IF_NULL(d3dsdo = (D3DSDOps *)jlong_to_ptr(pData), JNI_FALSE);
-+    RETURN_STATUS_IF_NULL(pMgr = D3DPipelineManager::GetInstance(), JNI_FALSE);
-+
-+    if (FAILED(res = pMgr->GetD3DContext(d3dsdo->adapter, &pCtx))) {
-+        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
-+        return JNI_FALSE;
-+    }
-+    RETURN_STATUS_IF_NULL(pCtx->GetResourceManager(), JNI_FALSE);
-+
-+    pCtx->GetResourceManager()->ReleaseResource(d3dsdo->pResource);
-+    d3dsdo->pResource = NULL;
- 
--        wsdo->lpSurface = pNew;
--        wsdo->ddInstance = ddInstance;
--        J2dTraceLn2(J2D_TRACE_VERBOSE,
--                    "D3DSD_initSurface: created attached surface: "\
--                    "wsdo->lpSurface=0x%x for parent "\
--                    "wsdo_parent->lpSurface=0x%x",
--                    wsdo->lpSurface, wsdo_parent->lpSurface);
--        // we don't care about pixel format for non-texture surfaces
--        return PF_INVALID;
-+    res = pCtx->GetResourceManager()->
-+            CreateRTSurface(d3dsdo->width, d3dsdo->height,
-+                            isOpaque, FALSE /*lockable*/,
-+                            &format, &d3dsdo->pResource);
-+    if (SUCCEEDED(res)) {
-+        J2dTraceLn1(J2D_TRACE_VERBOSE, "  created RT surface pResource=0x%x",
-+                    d3dsdo->pResource);
-+        d3dsdo->pResource->SetSDOps(d3dsdo);
-+    } else {
-+        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
-     }
-+    D3DSD_SetNativeDimensions(env, d3dsdo);
-+
-+    return SUCCEEDED(res);
-+}
- 
--    DXSurface *dxSurface = NULL;
--    jint pf = PF_INVALID;
-+/*
-+ * Class:     sun_java2d_d3d_D3DSurfaceData
-+ * Method:    initFlipBackbuffer
-+ * Signature: (JJIZ)Z
-+ */
 +JNIEXPORT jboolean
 +JNICALL Java_sun_java2d_d3d_D3DSurfaceData_initFlipBackbuffer
 +  (JNIEnv *env, jobject d3dsd, jlong pData, jlong pPeerData,
 +  jint numBuffers, jint swapEffect,
 +  jint vSyncType)
-+{
-     HRESULT res;
--    if (SUCCEEDED(res = pd3dc->CreateSurface(env, wsdo->w, wsdo->h,
--                                             wsdo->depth, wsdo->transparency,
--                                             d3dSurfaceType,
--                                             &dxSurface, &pf)))
--    {
--        // REMIND: put all the error-handling stuff here from
--        // DDCreateOffScreenSurface
--        wsdo->lpSurface = new DDrawSurface(ddInstance->ddObject, dxSurface);
--        wsdo->surfacePuntData.lpSurfaceVram = wsdo->lpSurface;
--        wsdo->ddInstance = ddInstance;
--        // the dimensions of the surface may be adjusted in case of
--        // textures
--        wsdo->w = dxSurface->GetWidth();
--        wsdo->h = dxSurface->GetHeight();
--        J2dTraceLn1(J2D_TRACE_VERBOSE,
--                    "D3DSurfaceData_initSurface: created surface: "\
--                    "wsdo->lpSurface=0x%x", wsdo->lpSurface);
+ {
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *pd3dc = (D3DContext *)jlong_to_ptr(pCtx);
++    HRESULT res;
 +    D3DSDOps *d3dsdo;
 +    D3DContext *pCtx;
 +    D3DPipelineManager *pMgr;
@@ -37101,9 +40324,16 @@
 +    UINT presentationInterval;
 +    AwtComponent *pPeer;
 +    RECT r = { 0, 0, 0, 0 };
-+
+ 
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initOffScreenSurface");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  width=%-4d height=%-4d type=%-3d scr=%-3d",
+-                width, height, d3dSurfaceType, screen);
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_initFlipBackbuffer");
-+
+ 
+-    // REMIND: ideally this should be done in initOps
+-    if (d3dSurfaceType == D3D_ATTACHED_SURFACE) {
+-        wsdo->sdOps.Dispose = Win32BBSD_Dispose;
 +    RETURN_STATUS_IF_NULL(d3dsdo = (D3DSDOps *)jlong_to_ptr(pData), JNI_FALSE);
 +    RETURN_STATUS_IF_NULL(pMgr = D3DPipelineManager::GetInstance(), JNI_FALSE);
 +    RETURN_STATUS_IF_NULL(pPeer = (AwtComponent *)jlong_to_ptr(pPeerData),
@@ -37114,8 +40344,14 @@
 +        J2dTraceLn(J2D_TRACE_WARNING,
 +                   "D3DSurfaceData_initFlipBackbuffer: disposed component");
 +        return JNI_FALSE;
-+    }
-+
+     }
+ 
+-    if (init_D3DSDO(env, wsdo, width, height,
+-                    d3dSurfaceType, screen) == JNI_FALSE)
+-    {
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "Can't create offscreen surface");
+-        return PF_INVALID;
 +    pPeer->GetInsets(&r);
 +    d3dsdo->xoff = -r.left;
 +    d3dsdo->yoff = -r.top;
@@ -37160,8 +40396,12 @@
 +            J2dTraceLn(J2D_TRACE_VERBOSE,
 +                       "  full-screen, default interval: ONE");
 +        }
-+    }
-+
+     }
+ 
+-    HMONITOR hMon = (HMONITOR)wsdo->device->GetMonitor();
+-    DDrawObjectStruct *ddInstance = GetDDInstanceForDevice(hMon);
+-    if (!ddInstance || !ddInstance->valid || !pd3dc) {
+-        return PF_INVALID;
 +    res = pCtx->GetResourceManager()->
 +        CreateSwapChain(hWnd, numBuffers,
 +                        d3dsdo->width, d3dsdo->height,
@@ -37171,7 +40411,71 @@
 +        J2dTraceLn1(J2D_TRACE_VERBOSE, "  created swap chain pResource=0x%x",
 +                    d3dsdo->pResource);
 +        d3dsdo->pResource->SetSDOps(d3dsdo);
-     } else {
++    } else {
++        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
+     }
++    D3DSD_SetNativeDimensions(env, d3dsdo);
+ 
+-    if (d3dSurfaceType == D3D_ATTACHED_SURFACE) {
+-        // REMIND: still using the old path. ideally the creation of attached
+-        // surface shoudld be done in the same way as other types of surfaces,
+-        // that is, in D3DContext::CreateSurface, but we really don't use
+-        // anything from D3DContext to get an attached surface, so this
+-        // was left here.
+-
+-        Win32SDOps *wsdo_parent = (Win32SDOps *)jlong_to_ptr(parentPdata);
+-        // we're being explicit here: requesting backbuffer, and render target
+-        DDrawSurface* pNew = wsdo_parent->lpSurface == NULL ?
+-            NULL :
+-            wsdo_parent->lpSurface->
+-                GetDDAttachedSurface(DDSCAPS_BACKBUFFER|DDSCAPS_3DDEVICE);
+-        if (pNew == NULL ||
+-            FAILED(pd3dc->AttachDepthBuffer(pNew->GetDXSurface())))
+-        {
+-            J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                           "D3DSD_initSurface: GetAttachedSurface for parent"\
+-                           " wsdo_parent->lpSurface=0x%x failed",
+-                           wsdo_parent->lpSurface);
+-            if (pNew != NULL) {
+-                delete pNew;
+-            }
+-            SurfaceData_ThrowInvalidPipeException(env,
+-                "Can't create attached offscreen surface");
+-            return PF_INVALID;
+-        }
+-
+-        wsdo->lpSurface = pNew;
+-        wsdo->ddInstance = ddInstance;
+-        J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                    "D3DSD_initSurface: created attached surface: "\
+-                    "wsdo->lpSurface=0x%x for parent "\
+-                    "wsdo_parent->lpSurface=0x%x",
+-                    wsdo->lpSurface, wsdo_parent->lpSurface);
+-        // we don't care about pixel format for non-texture surfaces
+-        return PF_INVALID;
+-    }
+-
+-    DXSurface *dxSurface = NULL;
+-    jint pf = PF_INVALID;
+-    HRESULT res;
+-    if (SUCCEEDED(res = pd3dc->CreateSurface(env, wsdo->w, wsdo->h,
+-                                             wsdo->depth, wsdo->transparency,
+-                                             d3dSurfaceType,
+-                                             &dxSurface, &pf)))
+-    {
+-        // REMIND: put all the error-handling stuff here from
+-        // DDCreateOffScreenSurface
+-        wsdo->lpSurface = new DDrawSurface(ddInstance->ddObject, dxSurface);
+-        wsdo->surfacePuntData.lpSurfaceVram = wsdo->lpSurface;
+-        wsdo->ddInstance = ddInstance;
+-        // the dimensions of the surface may be adjusted in case of
+-        // textures
+-        wsdo->w = dxSurface->GetWidth();
+-        wsdo->h = dxSurface->GetHeight();
+-        J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                    "D3DSurfaceData_initSurface: created surface: "\
+-                    "wsdo->lpSurface=0x%x", wsdo->lpSurface);
+-    } else {
 -        DebugPrintDirectDrawError(res,
 -                                  "D3DSurfaceData_initSurface: "\
 -                                  "CreateSurface failed");
@@ -37179,11 +40483,8 @@
 -        // surface creation was unsuccessful
 -        SurfaceData_ThrowInvalidPipeException(env,
 -                                              "Can't create offscreen surf");
-+        D3DRQ_MarkLostIfNeeded(res, d3dsdo);
-     }
+-    }
 -    return pf;
-+    D3DSD_SetNativeDimensions(env, d3dsdo);
-+
 +    return SUCCEEDED(res);
  }
  
@@ -37191,37 +40492,36 @@
 - * Class:     sun_java2d_d3d_D3DBackBufferSurfaceData
 - * Method:    restoreDepthBuffer
 - * Signature: ()V
-- */
++ * Class:     sun_java2d_d3d_D3DSurfaceData
++ * Method:    dbGetPixelNative
++ * Signature: (JII)I
+  */
 -JNIEXPORT void JNICALL
 -Java_sun_java2d_d3d_D3DBackBufferSurfaceData_restoreDepthBuffer(JNIEnv *env,
 -                                                                jobject sData)
--{
++JNIEXPORT jint JNICALL Java_sun_java2d_d3d_D3DSurfaceData_dbGetPixelNative
++  (JNIEnv *env, jclass clazz, jlong pData, jint x, jint y)
+ {
 -    Win32SDOps *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
 -    J2dTraceLn1(J2D_TRACE_INFO,
 -                "D3DBBSD_restoreDepthBuffer: wsdo=0x%x", wsdo);
--
++    HRESULT res;
++    D3DSDOps *d3dsdo;
++    D3DContext *pCtx;
++    D3DPipelineManager *pMgr;
++    D3DResource *pLockableRes;
++    jint pixel = 0;
+ 
 -    if (wsdo != NULL) {
 -        if (!DDRestoreSurface(wsdo)) {
 -            // Failure - throw exception
 -            J2dRlsTraceLn(J2D_TRACE_ERROR,
 -                          "D3DBBSD_restoreDepthBuffer: failed to "\
 -                          "restore depth buffer");
-+ * Class:     sun_java2d_d3d_D3DSurfaceData
-+ * Method:    dbGetPixelNative
-+ * Signature: (JII)I
-+ */
-+JNIEXPORT jint JNICALL Java_sun_java2d_d3d_D3DSurfaceData_dbGetPixelNative
-+  (JNIEnv *env, jclass clazz, jlong pData, jint x, jint y)
-+{
-+    HRESULT res;
-+    D3DSDOps *d3dsdo;
-+    D3DContext *pCtx;
-+    D3DPipelineManager *pMgr;
-+    D3DResource *pLockableRes;
-+    jint pixel = 0;
-+
 +    J2dTraceLn(J2D_TRACE_INFO, "D3DSurfaceData_dbGetPixelNative");
-+
+ 
+-            SurfaceData_ThrowInvalidPipeException(env,
+-                                                  "RestoreDepthBuffer failure");
 +    RETURN_STATUS_IF_NULL(d3dsdo = (D3DSDOps *)jlong_to_ptr(pData), pixel);
 +    RETURN_STATUS_IF_NULL(d3dsdo->pResource, pixel);
 +    RETURN_STATUS_IF_NULL(pMgr = D3DPipelineManager::GetInstance(), pixel);
@@ -37260,13 +40560,13 @@
 +                }
 +                pTmpSurface->UnlockRect();
 +            }
-+        }
-+    }
+         }
+     }
 +    D3DRQ_MarkLostIfNeeded(res, d3dsdo);
 +
 +    return pixel;
-+}
-+
+ }
+ 
 +/*
 + * Class:     sun_java2d_d3d_D3DSurfaceData
 + * Method:    dbSetPixelNative
@@ -37316,16 +40616,14 @@
 +                *(unsigned short*)lRect.pBits = (unsigned short)pixel;
 +            }
 +            pTmpSurface->UnlockRect();
- 
--            SurfaceData_ThrowInvalidPipeException(env,
--                                                  "RestoreDepthBuffer failure");
++
 +            res = pd3dDevice->StretchRect(pTmpSurface, &srcRect, pSrc, &dstRect,
 +                                          D3DTEXF_NONE);
-         }
-     }
++        }
++    }
 +    D3DRQ_MarkLostIfNeeded(res, d3dsdo);
  }
- 
++
 +/*
 + * Class:     sun_java2d_d3d_D3DSurfaceData
 + * Method:    getNativeResourceNative
@@ -37444,10 +40742,10 @@
 +
 +    return JNI_TRUE;
 +}
- }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h	2011-01-08 01:26:50.483202340 +0000
++}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DSurfaceData.h
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DSurfaceData.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -37554,9 +40852,144 @@
  
 -#endif /* D3DSurfaceData_h_Included */
 +#endif /* _D3DSURFACEDATA_H_ */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DTestRaster.h
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTestRaster.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,131 +0,0 @@
+-/*
+- * Copyright (c) 2002, 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-/*
+- * DO NOT EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED BY D3DTestPattern.java
+- */
+-
+-#ifndef D3DTESTRASTER_H
+-#define D3DTESTRASTER_H
+-
+-#define D3D_TEST_RASTER_W (60)
+-#define D3D_TEST_RASTER_H (21)
+-
+-#define D3D_TEXTURE_RASTER_W (12)
+-#define D3D_TEXTURE_RASTER_H (8)
+-
+-typedef int TIntTestRaster[D3D_TEST_RASTER_H][D3D_TEST_RASTER_W];
+-
+-typedef int TIntTextureRaster[D3D_TEXTURE_RASTER_H][D3D_TEXTURE_RASTER_W];
+-
+-typedef int TIntRaster[1][1];
+-
+-int d3dNumTestLines = 11;
+-float d3dTestLines[] = {
+-        20.5, 20.5, 0.5, 20.5,
+-        20.5, 20.5, 3.5, 12.5,
+-        20.5, 20.5, 6.5, 6.5,
+-        20.5, 20.5, 12.5, 3.5,
+-        20.5, 20.5, 20.5, 0.5,
+-        20.5, 20.5, 28.5, 3.5,
+-        20.5, 20.5, 34.5, 6.5,
+-        20.5, 20.5, 37.5, 12.5,
+-        20.5, 20.5, 40.5, 20.5,
+-        41.5, 20.5, 60.5, 19.5,
+-        41.5, 20.5, 42.5, 1.5,
+-};
+-int d3dNumTestRects = 1;
+-float d3dTestRects[] = {
+-        44.5, 0.5, 59.5, 15.5,
+-};
+-TIntTestRaster d3dTestRaster = {
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-};
+-
+-int d3dNumTextureRects = 6;
+-float d3dTextureRects[] = {
+-        0, 0, 4, 21,
+-        5, 0, 20, 10,
+-        21, 0, 33, 8,
+-        34, 0, 40, 4,
+-        34, 6, 60, 10,
+-        5, 12, 60, 22,
+-};
+-TIntTestRaster linInterpArray = {
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0},
+-        {1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0},
+-        {1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-        {0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+-};
+-
+-TIntTextureRaster srcImageArray = {
+-        {0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000},
+-        {0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000},
+-        {0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000},
+-        {0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000},
+-        {0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000},
+-        {0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000},
+-        {0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000, 0xff0000ff, 0xffff0000},
+-        {0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000, 0xff0000ff, 0xff000000},
+-};
+-
+-#endif //D3DTESTRASTER_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
@@ -37577,6 +41010,15 @@
  #include "SurfaceData.h"
 -#include "Region.h"
 -#include "glyphblitting.h"
+-
+-extern "C" {
+-
+-#ifndef D3D_GCACHE_WIDTH
+-  #define D3D_GCACHE_WIDTH 512
+-  #define D3D_GCACHE_HEIGHT 512
+-  #define D3D_GCACHE_CELL_WIDTH 16
+-  #define D3D_GCACHE_CELL_HEIGHT 16
+-#endif
 +#include "D3DContext.h"
 +#include "D3DSurfaceData.h"
 +#include "D3DRenderQueue.h"
@@ -37584,8 +41026,18 @@
 +#include "D3DGlyphCache.h"
 +#include "AccelGlyphCache.h"
 +#include "fontscalerdefs.h"
-+
-+/**
+ 
+ /**
+- * This method is almost exactly the same as the RefineBounds() method
+- * defined in DrawGlyphList.c.  The goal is to determine whether the given
+- * GlyphBlitVector intersects with the given bounding box.  If any part of
+- * the GBV intersects with the bounding box, this method returns true;
+- * otherwise false is returned.  The only step that differs in this method
+- * from RefineBounds() is that we check to see whether all the glyphs in
+- * the GBV will fit in the glyph cache.  If any glyph is too big for a
+- * glyph cache cell, we return FALSE in the useCache out parameter; otherwise
+- * useCache is TRUE, indicating that the caller can be assured that all
+- * the glyphs can be stored in the accelerated glyph cache.
 + * The current "glyph mode" state.  This variable is used to track the
 + * codepath used to render a particular glyph.  This variable is reset to
 + * MODE_NOT_INITED at the beginning of every call to D3DTR_DrawGlyphList().
@@ -37593,7 +41045,10 @@
 + * the current mode, so if the current mode is the same as the mode used
 + * to render the previous glyph, we can avoid doing costly setup operations
 + * each time.
-+ */
+  */
+-jboolean
+-D3DRefineBounds(GlyphBlitVector *gbv, SurfaceDataBounds *bounds,
+-                jboolean *useCache)
 +typedef enum {
 +    MODE_NOT_INITED,
 +    MODE_USE_CACHE_GRAY,
@@ -37637,7 +41092,8 @@
 + */
 +static HRESULT
 +D3DTR_UpdateLCDTextContrast(D3DContext *d3dc, jint contrast)
-+{
+ {
+-    int index;
 +    HRESULT res;
 +    IDirect3DDevice9 *pd3dDevice = d3dc->Get3DDevice();
 +
@@ -37728,32 +41184,9 @@
 +        res = d3dc->GetResourceManager()->GetBlitTexture(&pGlyphTexRes);
 +    }
 +    RETURN_STATUS_IF_FAILED(res);
- 
--extern "C" {
++
 +    pGlyphTex = pGlyphTexRes->GetTexture();
- 
--#ifndef D3D_GCACHE_WIDTH
--  #define D3D_GCACHE_WIDTH 512
--  #define D3D_GCACHE_HEIGHT 512
--  #define D3D_GCACHE_CELL_WIDTH 16
--  #define D3D_GCACHE_CELL_HEIGHT 16
--#endif
--
--/**
-- * This method is almost exactly the same as the RefineBounds() method
-- * defined in DrawGlyphList.c.  The goal is to determine whether the given
-- * GlyphBlitVector intersects with the given bounding box.  If any part of
-- * the GBV intersects with the bounding box, this method returns true;
-- * otherwise false is returned.  The only step that differs in this method
-- * from RefineBounds() is that we check to see whether all the glyphs in
-- * the GBV will fit in the glyph cache.  If any glyph is too big for a
-- * glyph cache cell, we return FALSE in the useCache out parameter; otherwise
-- * useCache is TRUE, indicating that the caller can be assured that all
-- * the glyphs can be stored in the accelerated glyph cache.
-- */
--jboolean
--D3DRefineBounds(GlyphBlitVector *gbv, SurfaceDataBounds *bounds,
--                jboolean *useCache)
++
 +    res = d3dc->GetResourceManager()->
 +        GetCachedDestTexture(dstOps->pResource->GetDesc()->Format,
 +                             &pCachedDestTexRes);
@@ -37920,14 +41353,16 @@
 +                              jint gx1, jint gy1, jint gx2, jint gy2,
 +                              jint agx1, jint agx2,
 +                              jint glyphIndex, jint totalGlyphs)
- {
--    int index;
++{
      jint dx1, dy1, dx2, dy2;
 -    ImageRef glyphImage;
 -    int num = gbv->numGlyphs;
 -    SurfaceDataBounds glyphs;
 -    jboolean tryCache = JNI_TRUE;
--
++    D3DResource *pCachedDestTexRes;
++    IDirect3DSurface9 *pCachedDestSurface, *pDst;
++    HRESULT res;
+ 
 -    glyphs.x1 = glyphs.y1 = 0x7fffffff;
 -    glyphs.x2 = glyphs.y2 = 0x80000000;
 -    for (index = 0; index < num; index++) {
@@ -37940,21 +41375,16 @@
 -        if (glyphs.y1 > dy1) glyphs.y1 = dy1;
 -        if (glyphs.x2 < dx2) glyphs.x2 = dx2;
 -        if (glyphs.y2 < dy2) glyphs.y2 = dy2;
--
++    if (isCachedDestValid && INSIDE(gx1, gy1, gx2, gy2, cachedDestBounds)) {
++        // glyph is already within the cached destination bounds; no need
++        // to read back the entire destination region again, but we do
++        // need to see if the current glyph overlaps the previous glyph...
+ 
 -        if (tryCache &&
 -            ((glyphImage.width > D3D_GCACHE_CELL_WIDTH) ||
 -             (glyphImage.height > D3D_GCACHE_CELL_HEIGHT)))
 -        {
 -            tryCache = JNI_FALSE;
-+    D3DResource *pCachedDestTexRes;
-+    IDirect3DSurface9 *pCachedDestSurface, *pDst;
-+    HRESULT res;
-+
-+    if (isCachedDestValid && INSIDE(gx1, gy1, gx2, gy2, cachedDestBounds)) {
-+        // glyph is already within the cached destination bounds; no need
-+        // to read back the entire destination region again, but we do
-+        // need to see if the current glyph overlaps the previous glyph...
-+
 +        // only use the "adjusted" glyph bounds when checking against
 +        // previous glyph's bounds
 +        gx1 = agx1;
@@ -38087,7 +41517,7 @@
 +            res = pd3dDevice->StretchRect(pDst, &srcRect,
 +                                          pCachedDestSurface, &dstRect,
 +                                          D3DTEXF_NONE);
-         }
++        }
 +
 +        // update the cached bounds and mark it valid
 +        cachedDestBounds.x1 = dx1;
@@ -38095,34 +41525,14 @@
 +        cachedDestBounds.x2 = dx2;
 +        cachedDestBounds.y2 = dy2;
 +        isCachedDestValid = JNI_TRUE;
-     }
- 
--    *useCache = tryCache;
--
--    SurfaceData_IntersectBounds(bounds, &glyphs);
--    return (bounds->x1 < bounds->x2 && bounds->y1 < bounds->y2);
--}
--
--extern JNIEXPORT void JNICALL
--    D3DDrawGlyphList(JNIEnv *env, jobject d3dtr,
--                     jlong pData, jlong pCtx,
--                     ImageRef *glyphs, jint totalGlyphs,
--                     jboolean useCache);
++    }
++
 +    // always update the previous glyph bounds
 +    previousGlyphBounds.x1 = gx1;
 +    previousGlyphBounds.y1 = gy1;
 +    previousGlyphBounds.x2 = gx2;
 +    previousGlyphBounds.y2 = gy2;
- 
--/*
-- * Class:     sun_java2d_d3d_D3DTextRenderer
-- * Method:    doDrawGlyphList
-- * Signature: (JLsun/java2d/pipe/Region;Lsun/font/GlyphList;)V
-- */
--JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DTextRenderer_doDrawGlyphList
--    (JNIEnv *env, jobject d3dtr,
--     jlong pData,
--     jlong pCtx, jobject clip, jobject glyphlist)
++
 +    return res;
 +}
 +
@@ -38131,10 +41541,7 @@
 +                           GlyphInfo *ginfo, jint x, jint y,
 +                           jint glyphIndex, jint totalGlyphs,
 +                           jboolean rgbOrder, jint contrast)
- {
--    GlyphBlitVector* gbv;
--    SurfaceDataBounds bounds;
--    jboolean useCache;
++{
 +    HRESULT res;
 +    D3DGlyphCache *pLCDGCache;
 +    CacheCellInfo *cell;
@@ -38146,9 +41553,7 @@
 +
 +    // the glyph cache is initialized before this method is called
 +    pLCDGCache = d3dc->GetLCDGlyphCache();
- 
--    if ((pData == 0) || (pCtx == 0)) {
--        return;
++
 +    if (glyphMode != MODE_USE_CACHE_LCD) {
 +        D3DTR_DisableGlyphModeState(d3dc);
 +
@@ -38161,9 +41566,8 @@
 +        RETURN_STATUS_IF_FAILED(res);
 +
 +        glyphMode = MODE_USE_CACHE_LCD;
-     }
- 
--    Region_GetBounds(env, clip, &bounds);
++    }
++
 +    gcache = pLCDGCache->GetGlyphCache();
 +    cell = AccelGlyphCache_GetCellInfoForCache(ginfo, gcache);
 +    if (cell == NULL) {
@@ -38175,9 +41579,7 @@
 +        cell = AccelGlyphCache_GetCellInfoForCache(ginfo, gcache);
 +        RETURN_STATUS_IF_NULL(cell, E_FAIL);
 +    }
- 
--    if ((gbv = setupBlitVector(env, glyphlist)) == NULL) {
--        return;
++
 +    cell->timesRendered++;
 +
 +    // location of the glyph in the destination's coordinate space
@@ -38229,11 +41631,8 @@
 +        RETURN_STATUS_IF_FAILED(res);
 +
 +        glyphMode = MODE_NO_CACHE_GRAY;
-     }
- 
--    if (!D3DRefineBounds(gbv, &bounds, &useCache)) {
--        free(gbv);
--        return;
++    }
++
 +    x0 = x;
 +    tw = D3D_MASK_CACHE_TILE_WIDTH;
 +    th = D3D_MASK_CACHE_TILE_HEIGHT;
@@ -38247,16 +41646,21 @@
 +
 +            res = d3dc->GetMaskCache()->AddMaskQuad(sx, sy, x, y, sw, sh,
 +                                                    w, ginfo->image);
-+        }
-     }
- 
--    D3DDrawGlyphList(env, d3dtr,
--                     pData, pCtx,
--                     gbv->glyphs, gbv->numGlyphs, useCache);
--    free(gbv);
-+    return res;
- }
- 
+         }
+     }
+ 
+-    *useCache = tryCache;
+-
+-    SurfaceData_IntersectBounds(bounds, &glyphs);
+-    return (bounds->x1 < bounds->x2 && bounds->y1 < bounds->y2);
++    return res;
+ }
+ 
+-extern JNIEXPORT void JNICALL
+-    D3DDrawGlyphList(JNIEnv *env, jobject d3dtr,
+-                     jlong pData, jlong pCtx,
+-                     ImageRef *glyphs, jint totalGlyphs,
+-                     jboolean useCache);
 +static HRESULT
 +D3DTR_DrawLCDGlyphNoCache(D3DContext *d3dc, D3DSDOps *dstOps,
 +                          GlyphInfo *ginfo, jint x, jint y,
@@ -38273,13 +41677,28 @@
 +    jint w = ginfo->width;
 +    jint h = ginfo->height;
 +    TileFormat tileFormat = rgbOrder ? TILEFMT_3BYTE_RGB : TILEFMT_3BYTE_BGR;
-+
+ 
+-/*
+- * Class:     sun_java2d_d3d_D3DTextRenderer
+- * Method:    doDrawGlyphList
+- * Signature: (JLsun/java2d/pipe/Region;Lsun/font/GlyphList;)V
+- */
+-JNIEXPORT void JNICALL Java_sun_java2d_d3d_D3DTextRenderer_doDrawGlyphList
+-    (JNIEnv *env, jobject d3dtr,
+-     jlong pData,
+-     jlong pCtx, jobject clip, jobject glyphlist)
+-{
+-    GlyphBlitVector* gbv;
+-    SurfaceDataBounds bounds;
+-    jboolean useCache;
 +    IDirect3DDevice9 *pd3dDevice = d3dc->Get3DDevice();
 +    D3DResource *pBlitTextureRes, *pCachedDestTextureRes;
 +    IDirect3DTexture9 *pBlitTexture;
 +    IDirect3DSurface9 *pCachedDestSurface, *pDst;
 +    HRESULT res;
-+
+ 
+-    if ((pData == 0) || (pCtx == 0)) {
+-        return;
 +    J2dTraceLn(J2D_TRACE_VERBOSE, "D3DTR_DrawLCDGlyphNoCache");
 +
 +    RETURN_STATUS_IF_NULL(dstOps->pResource, E_FAIL);
@@ -38305,8 +41724,9 @@
 +        RETURN_STATUS_IF_FAILED(res);
 +
 +        glyphMode = MODE_NO_CACHE_LCD;
-+    }
-+
+     }
+ 
+-    Region_GetBounds(env, clip, &bounds);
 +    x0 = x;
 +    tx1 = 0.0f;
 +    ty1 = 0.0f;
@@ -38314,7 +41734,9 @@
 +    dty1 = 0.0f;
 +    tw = D3DTR_NOCACHE_TILE_SIZE;
 +    th = D3DTR_NOCACHE_TILE_SIZE;
-+
+ 
+-    if ((gbv = setupBlitVector(env, glyphlist)) == NULL) {
+-        return;
 +    for (sy = 0; sy < h; sy += th, y += th) {
 +        x = x0;
 +        sh = ((sy + th) > h) ? (h - sy) : th;
@@ -38376,8 +41798,11 @@
 +                d3dc->FlushVertexQueue();
 +            }
 +        }
-+    }
-+
+     }
+ 
+-    if (!D3DRefineBounds(gbv, &bounds, &useCache)) {
+-        free(gbv);
+-        return;
 +    return res;
 +}
 +
@@ -38402,8 +41827,12 @@
 +    RETURN_STATUS_IF_NULL(images, E_FAIL);
 +    if (usePositions) {
 +        RETURN_STATUS_IF_NULL(positions, E_FAIL);
-+    }
-+
+     }
+ 
+-    D3DDrawGlyphList(env, d3dtr,
+-                     pData, pCtx,
+-                     gbv->glyphs, gbv->numGlyphs, useCache);
+-    free(gbv);
 +    glyphMode = MODE_NOT_INITED;
 +    isCachedDestValid = JNI_FALSE;
 +
@@ -38488,8 +41917,8 @@
 +
 +    D3DTR_DisableGlyphModeState(d3dc);
 +    return res;
-+}
-+
+ }
+ 
 +JNIEXPORT void JNICALL
 +Java_sun_java2d_d3d_D3DTextRenderer_drawGlyphList
 +    (JNIEnv *env, jobject self,
@@ -38537,33 +41966,33 @@
 +                                           images, JNI_ABORT);
 +    }
  }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.h	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DTextRenderer.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,96 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DTextRenderer_h_Included
@@ -38637,33 +42066,1279 @@
 +                            unsigned char *images, unsigned char *positions);
 +
 +#endif /* D3DTextRenderer_h_Included */
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DTextRenderer_md.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DTextRenderer_md.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,341 +0,0 @@
+-/*
+- * Copyright (c) 2005, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include <malloc.h>
+-#include "sun_java2d_d3d_D3DTextRenderer.h"
+-#include "SurfaceData.h"
+-#include "Region.h"
+-#include "glyphblitting.h"
+-#include "fontscalerdefs.h"
+-#include "AccelGlyphCache.h"
+-#include "j2d_md.h"
+-#include "jlong.h"
+-
+-#include "ddrawUtils.h"
+-#include "D3DContext.h"
+-#include "D3DUtils.h"
+-#include "Win32SurfaceData.h"
+-
+-extern "C" {
+-
+-#define MAX_STATIC_QUADS_NUM 40
+-static int indicesInited = 0;
+-static short vertexIndices[MAX_STATIC_QUADS_NUM*6];
+-static J2DLV_QUAD vertexQuads[MAX_STATIC_QUADS_NUM];
+-
+-/**
+- * Initializes the array of index vertices used for rendering
+- * glyphs using cached texture.
+- */
+-static void
+-InitIndexArray()
+-{
+-    int ii, vi;
+-    memset(vertexQuads, 0, sizeof(vertexQuads));
+-    for (ii = 0, vi = 0; ii < MAX_STATIC_QUADS_NUM*6; ii += 6, vi += 4) {
+-        vertexIndices[ii + 0] = vi + 0;
+-        vertexIndices[ii + 1] = vi + 1;
+-        vertexIndices[ii + 2] = vi + 2;
+-        vertexIndices[ii + 3] = vi + 0;
+-        vertexIndices[ii + 4] = vi + 2;
+-        vertexIndices[ii + 5] = vi + 3;
+-    }
+-}
+-
+-/**
+- * Renders each glyph directly from the glyph texture cache.
+- */
+-static HRESULT
+-D3DDrawGlyphList_UseCache(JNIEnv *env, Win32SDOps *wsdo,
+-                          D3DContext *d3dc,
+-                          ImageRef *glyphs, jint totalGlyphs)
+-{
+-    int glyphCounter;
+-    HRESULT res = DDERR_GENERIC;
+-    DXSurface *glyphCacheTexture;
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DDrawGlyphList_UseCache");
+-    int color = d3dc->colorPixel;
+-    int quadCounter = 0;
+-
+-    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-    if (ddTargetSurface == NULL) {
+-        return DDERR_GENERIC;
+-    }
+-    ddTargetSurface->GetExclusiveAccess();
+-    d3dc->GetExclusiveAccess();
+-
+-    glyphCacheTexture = d3dc->GetGlyphCacheTexture();
+-    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-    if (d3dDevice == NULL ||
+-        FAILED(res = d3dc->BeginScene(STATE_MASKOP)))
+-    {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return res;
+-    }
+-
+-    if (FAILED(res = d3dc->SetTexture(glyphCacheTexture))) {
+-        d3dc->EndScene(res);
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return res;
+-    }
+-
+-    if (!indicesInited) {
+-        InitIndexArray();
+-        indicesInited = 1;
+-    }
+-
+-    for (glyphCounter = 0; (glyphCounter < totalGlyphs) && SUCCEEDED(res);
+-         glyphCounter++)
+-    {
+-        // render glyph cached in texture object
+-        const jubyte *pixels = (const jubyte *)glyphs[glyphCounter].pixels;
+-        GlyphInfo *ginfo = (GlyphInfo *)glyphs[glyphCounter].glyphInfo;
+-        CacheCellInfo *cell;
+-        float x1, y1, x2, y2;
+-        float tx1, ty1, tx2, ty2;
+-        J2DLV_QUAD *quad;
+-
+-        // it the glyph is an empty space, skip it
+-        if (!pixels) {
+-            continue;
+-        }
+-
+-        if (ginfo->cellInfo == NULL ||
+-            // REMIND: this is a temp fix to allow a glyph be cached
+-            // in caches for different devices.
+-            // REMIND: check if this is even a problem: we're using
+-            // managed textures, they may be automatically accelerated
+-            // on a different device.
+-            // If the glyph is cached on a different device, cache
+-            // it on this context's device.
+-            // This may result in thrashing if the same glyphs
+-            // get rendered on different devices.
+-            // Note: this is not thread-safe: we may change the coordinates
+-            // while another thread is using this cell.
+-            // A proper fix would allow a glyph to be cached in multiple
+-            // caches at the same time.
+-            d3dc->GetGlyphCache() != ginfo->cellInfo->cacheInfo)
+-        {
+-            // attempt to add glyph to accelerated glyph cache
+-            if (FAILED(d3dc->GlyphCacheAdd(env, ginfo)) ||
+-                ginfo->cellInfo == NULL)
+-            {
+-                continue;
+-            }
+-        }
+-
+-        cell = ginfo->cellInfo;
+-        cell->timesRendered++;
+-
+-        x1 = (float)glyphs[glyphCounter].x;
+-        y1 = (float)glyphs[glyphCounter].y;
+-        x2 = x1 + (float)glyphs[glyphCounter].width;
+-        y2 = y1 + (float)glyphs[glyphCounter].height;
+-        tx1 = cell->tx1;
+-        ty1 = cell->ty1;
+-        tx2 = cell->tx2;
+-        ty2 = cell->ty2;
+-        quad = &vertexQuads[quadCounter++];
+-
+-        D3DU_INIT_VERTEX_QUAD(*quad, x1, y1, x2, y2, color     ,
+-                              tx1, ty1, tx2, ty2);
+-
+-        if (quadCounter == MAX_STATIC_QUADS_NUM &&
+-            SUCCEEDED(res = ddTargetSurface->IsLost()))
+-        {
+-            res = d3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,
+-                                                  D3DFVF_J2DLVERTEX,
+-                                                  vertexQuads,
+-                                                  4*quadCounter,
+-                                                  (LPWORD)vertexIndices,
+-                                                  6*quadCounter, 0);
+-            quadCounter = 0;
+-        }
+-    }
+-
+-    if (quadCounter > 0 && SUCCEEDED(res)) {
+-        res = d3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,
+-                                              D3DFVF_J2DLVERTEX,
+-                                              vertexQuads,
+-                                              4*quadCounter,
+-                                              (LPWORD)vertexIndices,
+-                                              6*quadCounter, 0);
+-    }
+-
+-    d3dc->EndScene(res);
+-
+-    d3dc->ReleaseExclusiveAccess();
+-    ddTargetSurface->ReleaseExclusiveAccess();
+-
+-    return res;
+-}
+-
+-static HRESULT
+-D3DDrawGlyphList_NoCache(JNIEnv *env, Win32SDOps *wsdo,
+-                         D3DContext *d3dc,
+-                         ImageRef *glyphs, jint totalGlyphs)
+-{
+-    int glyphCounter;
+-    float tx1, ty1, tx2, ty2;
+-    jint tw, th;
+-    DXSurface *maskTexture;
+-    static J2DLVERTEX quadVerts[4] = {
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f },
+-        { 0.0f, 0.0f, 0.0f, 0x0, 0.0f, 0.0f }
+-    };
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DDrawGlyphList_NoCache");
+-
+-    DDrawSurface *ddTargetSurface = d3dc->GetTargetSurface();
+-    if (ddTargetSurface == NULL) {
+-        return DDERR_GENERIC;
+-    }
+-    ddTargetSurface->GetExclusiveAccess();
+-    d3dc->GetExclusiveAccess();
+-
+-    HRESULT res = DDERR_GENERIC;
+-
+-    IDirect3DDevice7 *d3dDevice = d3dc->Get3DDevice();
+-    if (d3dDevice == NULL) {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return res;
+-    }
+-
+-    maskTexture = d3dc->GetMaskTexture();
+-    if (maskTexture == NULL ||
+-        FAILED(res = d3dc->BeginScene(STATE_MASKOP)))
+-    {
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return DDERR_GENERIC;
+-    }
+-
+-    if (FAILED(res = d3dc->SetTexture(maskTexture))) {
+-        d3dc->EndScene(res);
+-        d3dc->ReleaseExclusiveAccess();
+-        ddTargetSurface->ReleaseExclusiveAccess();
+-        return res;
+-    }
+-
+-    tx1 = 0.0f;
+-    ty1 = 0.0f;
+-    tw = D3DSD_MASK_TILE_SIZE;
+-    th = D3DSD_MASK_TILE_SIZE;
+-
+-    D3DU_INIT_VERTEX_QUAD_COLOR(quadVerts, d3dc->colorPixel);
+-    for (glyphCounter = 0; (glyphCounter < totalGlyphs) && SUCCEEDED(res);
+-         glyphCounter++)
+-    {
+-        // render system memory glyph image
+-        jint sx, sy, sw, sh;
+-        jint x, y, w, h, x0;
+-        const jubyte *pixels = (const jubyte *)glyphs[glyphCounter].pixels;
+-
+-        if (!pixels) {
+-            continue;
+-        }
+-
+-        x = glyphs[glyphCounter].x;
+-        y = glyphs[glyphCounter].y;
+-        w = glyphs[glyphCounter].width;
+-        h = glyphs[glyphCounter].height;
+-        x0 = x;
+-
+-        for (sy = 0; sy < h; sy += th, y += th) {
+-            x = x0;
+-            sh = ((sy + th) > h) ? (h - sy) : th;
+-
+-            for (sx = 0; sx < w; sx += tw, x += tw) {
+-                sw = ((sx + tw) > w) ? (w - sx) : tw;
+-
+-                if (FAILED(d3dc->UploadImageToTexture(maskTexture,
+-                                                      (jubyte*)pixels,
+-                                                      0, 0, sx, sy,
+-                                                      sw, sh, w)))
+-                {
+-                    continue;
+-                }
+-
+-                // update the lower right texture coordinates
+-                tx2 = ((float)sw) / tw;
+-                ty2 = ((float)sh) / th;
+-
+-                D3DU_INIT_VERTEX_QUAD_XYUV(quadVerts,
+-                                           (float)x, (float)y,
+-                                           (float)(x+sw), (float)(y+sh),
+-                                           tx1, ty1, tx2, ty2);
+-                if (SUCCEEDED(res = ddTargetSurface->IsLost())) {
+-                    res = d3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
+-                                                   D3DFVF_J2DLVERTEX,
+-                                                   quadVerts, 4, 0);
+-                }
+-            }
+-        }
+-    }
+-
+-    d3dc->EndScene(res);
+-
+-    d3dc->ReleaseExclusiveAccess();
+-    ddTargetSurface->ReleaseExclusiveAccess();
+-
+-    return res;
+-}
+-
+-
+-JNIEXPORT void JNICALL
+-D3DDrawGlyphList(JNIEnv *env, jobject d3dtr,
+-                 jlong pData, jlong pCtx,
+-                 ImageRef *glyphs, jint totalGlyphs,
+-                 jboolean useCache)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *)jlong_to_ptr(pData);
+-    D3DContext *d3dc = (D3DContext *)jlong_to_ptr(pCtx);
+-
+-    HRESULT res;
+-    // Note: uncomment to control glyph caching via env. variable.
+-    // useCache = useCache && !getenv("J2D_D3D_NOGLYPHCACHING");
+-
+-    if (d3dc == NULL) {
+-        return;
+-    }
+-
+-    if (useCache && SUCCEEDED(res = d3dc->InitGlyphCache())) {
+-        D3D_EXEC_PRIM_LOOP(env, res, wsdo,
+-                      D3DDrawGlyphList_UseCache(env, wsdo, d3dc, glyphs,
+-                                                totalGlyphs));
+-        return;
+-    }
+-
+-    D3D_EXEC_PRIM_LOOP(env, res, wsdo,
+-                  D3DDrawGlyphList_NoCache(env, wsdo, d3dc, glyphs,
+-                                           totalGlyphs));
+-}
+-
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DUtils.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DUtils.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,606 +0,0 @@
+-/*
+- * Copyright (c) 2005, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-
+-#include "ddrawUtils.h"
+-#include "D3DUtils.h"
+-#include "D3DSurfaceData.h"
+-
+-#ifdef DEBUG
+-// These strings must be in the same order as pixel
+-// formats in D3DSurfaceData.java
+-char * TR_NAMES[] = {
+-    "TR_OPAQUE",
+-    "TR_BITMASK",
+-    "TR_TRANSLUCENT"
+-};
+-
+-char * PF_NAMES[] = {
+-    "PF_INVALID" ,
+-    "PF_INT_ARGB" ,
+-    "PF_INT_RGB" ,
+-    "PF_INT_RGBX",
+-    "PF_INT_BGR" ,
+-    "PF_USHORT_565_RGB" ,
+-    "PF_USHORT_555_RGB" ,
+-    "PF_USHORT_555_RGBX" ,
+-    "PF_INT_ARGB_PRE" ,
+-    "PF_USHORT_4444_ARGB"
+-};
+-#endif // DEBUG
+-
+-/**
+- * This structure could be used when searching for a pixel
+- * format with preferred bit depth.
+- */
+-typedef struct {
+-    // Pointer to a DDPIXELFORMAT structure where the found pixel
+-    // format will be copied to
+-    DDPIXELFORMAT *pddpf;
+-    // If TRUE, the search was successful, FALSE otherwise
+-    BOOL bFoundFormat;
+-    // Preferred bit depth
+-    int preferredDepth;
+-} PixelFormatSearchStruct;
+-
+-jint D3DUtils_GetPixelFormatType(DDPIXELFORMAT*lpddpf);
+-
+-HRESULT WINAPI EnumAlphaTextureFormatsCallback(DDPIXELFORMAT* pddpf,
+-                                               VOID* pContext )
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "EnumAlphaTextureFormatsCallback");
+-    DDPIXELFORMAT* pddpfOut = (DDPIXELFORMAT*)pContext;
+-
+-    // Looking for a 8-bit luminance texture (and probably not alpha-luminance)
+-    if((pddpf->dwFlags & DDPF_ALPHA) && (pddpf->dwAlphaBitDepth == 8))
+-    {
+-        memcpy(pddpfOut, pddpf, sizeof(DDPIXELFORMAT));
+-        return D3DENUMRET_CANCEL;
+-    }
+-
+-    return D3DENUMRET_OK;
+-}
+-
+-HRESULT CALLBACK
+-D3DUtils_TextureSearchCallback(DDPIXELFORMAT *lpddpf,
+-                               void *param)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "D3DUtils_TextureSearchCallback");
+-    jint pfType = D3DUtils_GetPixelFormatType(lpddpf);
+-    if (pfType == PF_INVALID) {
+-        return DDENUMRET_OK;
+-    }
+-
+-    DWORD dwAlphaBitCount = 0;
+-    if (lpddpf->dwFlags & DDPF_ALPHAPIXELS) {
+-        DWORD dwMask = lpddpf->dwRGBAlphaBitMask;
+-        while( dwMask ) {
+-            dwMask = dwMask & ( dwMask - 1 );
+-            dwAlphaBitCount++;
+-        }
+-    }
+-
+-    DWORD dwRGBBitCount = lpddpf->dwRGBBitCount;
+-    WORD wDepthIndex = D3D_DEPTH_IDX(dwRGBBitCount);
+-    WORD wTransparencyIndex =
+-        dwAlphaBitCount > 0 ? TR_TRANSLUCENT_IDX : TR_OPAQUE_IDX;
+-
+-    D3DTextureTable *table = (D3DTextureTable*)param;
+-    D3DTextureTableCell *cell = &(*table)[wTransparencyIndex][wDepthIndex];
+-    if (cell->pfType == PF_INVALID || pfType < cell->pfType) {
+-        // set only if it wasn't set or if current pfType is better than
+-        // the one found previously: it's better to use 565 than 555
+-        memcpy(&cell->pddpf, lpddpf, sizeof(DDPIXELFORMAT));
+-        cell->pfType = pfType;
+-    }
+-    // continue for all pixel formats
+-    return DDENUMRET_OK;
+-}
+-
+-HRESULT
+-WINAPI EnumZBufferFormatsCallback(DDPIXELFORMAT* pddpf,
+-                                  VOID* pContext )
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "EnumZBufferFormatsCallback");
+-    PixelFormatSearchStruct *ppfss = (PixelFormatSearchStruct*)pContext;
+-    DDPIXELFORMAT* pddpfOut = ppfss->pddpf;
+-
+-    // if found a format with the exact depth, return it
+-    if (pddpf->dwZBufferBitDepth == (DWORD)ppfss->preferredDepth) {
+-        ppfss->bFoundFormat = TRUE;
+-        memcpy(pddpfOut, pddpf, sizeof(DDPIXELFORMAT));
+-        return D3DENUMRET_CANCEL;
+-    }
+-    // If a format with exact depth can't be found, look for the best
+-    // available, preferring those with the lowest bit depth to save
+-    // video memory. Also, prefer formats with no stencil bits.
+-    if (!ppfss->bFoundFormat ||
+-        (pddpfOut->dwZBufferBitDepth > pddpf->dwZBufferBitDepth &&
+-         !(pddpf->dwFlags & DDPF_STENCILBUFFER)))
+-    {
+-        ppfss->bFoundFormat = TRUE;
+-        memcpy(pddpfOut, pddpf, sizeof(DDPIXELFORMAT));
+-    }
+-
+-    return D3DENUMRET_OK;
+-}
+-
+-HRESULT
+-WINAPI DeviceEnumCallback(LPSTR strDesc, LPSTR strName,
+-                          LPD3DDEVICEDESC7 pDesc,
+-                          LPVOID pParentInfo)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DeviceEnumCallback");
+-    DEVICES_INFO *devinfo = (DEVICES_INFO*)pParentInfo;
+-
+-    if (pDesc->deviceGUID == IID_IDirect3DHALDevice) {
+-        devinfo->pGUIDs[HAL_IDX] = &IID_IDirect3DHALDevice;
+-    } else if (pDesc->deviceGUID == IID_IDirect3DTnLHalDevice) {
+-        devinfo->pGUIDs[TNL_IDX] = &IID_IDirect3DTnLHalDevice;
+-    } else if (pDesc->deviceGUID == IID_IDirect3DRGBDevice) {
+-        devinfo->pGUIDs[RGB_IDX] = &IID_IDirect3DRGBDevice;
+-    } else if (pDesc->deviceGUID == IID_IDirect3DRefDevice) {
+-        devinfo->pGUIDs[REF_IDX] = &IID_IDirect3DRefDevice;
+-    }
+-    return D3DENUMRET_OK;
+-}
+-
+-HRESULT
+-D3DUtils_FindMaskTileTextureFormat(IDirect3DDevice7 *d3dDevice,
+-                                   DDPIXELFORMAT* pddpf)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_FindMaskTileTextureFormat");
+-    d3dDevice->EnumTextureFormats(EnumAlphaTextureFormatsCallback,
+-                                  (void*)pddpf);
+-    if (pddpf->dwAlphaBitDepth == 8) {
+-        return D3D_OK;
+-    }
+-    return DDERR_GENERIC;
+-}
+-
+-HRESULT
+-D3DUtils_FindDepthBufferFormat(IDirect3D7 *d3dObject,
+-                               int preferredDepth,
+-                               DDPIXELFORMAT* pddpf,
+-                               const GUID *pDeviceGUID)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_FindDepthBufferFormat");
+-    PixelFormatSearchStruct pfss;
+-    pfss.pddpf = pddpf;
+-    pfss.bFoundFormat = FALSE;
+-    pfss.preferredDepth = preferredDepth;
+-
+-    d3dObject->EnumZBufferFormats(*pDeviceGUID,
+-                                  EnumZBufferFormatsCallback,
+-                                  (void*)&pfss);
+-
+-    return pfss.bFoundFormat ? D3D_OK : DDERR_GENERIC;
+-}
+-
+-jint D3DUtils_GetPixelFormatType(DDPIXELFORMAT*lpddpf)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "D3DUtils_GetPixelFormatType");
+-
+-    if (lpddpf == NULL) return PF_INVALID;
+-
+-    DWORD dwFlags = lpddpf->dwFlags;
+-    // skip weird formats
+-    if (lpddpf->dwRGBBitCount < 16   ||
+-        dwFlags & DDPF_ALPHA         || dwFlags & DDPF_ZBUFFER       ||
+-        dwFlags & DDPF_ZPIXELS       || dwFlags & DDPF_LUMINANCE     ||
+-        dwFlags & DDPF_FOURCC        || dwFlags & DDPF_STENCILBUFFER ||
+-        dwFlags & DDPF_BUMPLUMINANCE || dwFlags & DDPF_BUMPDUDV)
+-    {
+-        return PF_INVALID;
+-    }
+-
+-    jint pfType = PF_INVALID;
+-    DWORD aMask = lpddpf->dwRGBAlphaBitMask;
+-    DWORD rMask = lpddpf->dwRBitMask;
+-    DWORD gMask = lpddpf->dwGBitMask;
+-    DWORD bMask = lpddpf->dwBBitMask;
+-
+-    if (rMask == 0x0000f800 &&
+-        gMask == 0x000007e0 &&
+-        bMask == 0x0000001f &&
+-        aMask == 0x00000000)
+-    {
+-        pfType = PF_USHORT_565_RGB;
+-    } else if (rMask == 0x00007C00 &&
+-               gMask == 0x000003E0 &&
+-               bMask == 0x0000001f &&
+-               aMask == 0x00000000)
+-    {
+-        pfType = PF_USHORT_555_RGB;
+-    } else if (rMask == 0x00000f00 &&
+-               gMask == 0x000000f0 &&
+-               bMask == 0x0000000f &&
+-               aMask == 0x0000f000)
+-    {
+-        // REMIND: we currently don't support this
+-        // pixel format, since we don't have the loops for a
+-        // premultiplied version of it. So we'll just use INT_ARGB
+-        // for now
+-        pfType = PF_INVALID;
+-        // pfType = PF_USHORT_4444_ARGB;
+-    } else if (rMask == 0x00ff0000 &&
+-               gMask == 0x0000ff00 &&
+-               bMask == 0x000000ff)
+-    {
+-        if (lpddpf->dwRGBBitCount == 32) {
+-            pfType = (dwFlags & DDPF_ALPHAPIXELS) ?
+-                PF_INT_ARGB : PF_INT_RGB;
+-        } else {
+-            // We currently don't support this format.
+-            // pfType = PF_3BYTE_BGR;
+-            pfType = PF_INVALID;
+-        }
+-    }
+-
+-    return pfType;
+-}
+-
+-void
+-D3DUtils_SetupTextureFormats(IDirect3DDevice7 *d3dDevice,
+-                             D3DTextureTable &table)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_SetupTextureFormats");
+-    if (d3dDevice == NULL || table == NULL) {
+-        return;
+-    }
+-
+-    ZeroMemory(table, sizeof(D3DTextureTable));
+-    int t;
+-    for (t = TR_OPAQUE_IDX; t < TR_MAX_IDX; t++) {
+-        for (int d = DEPTH16_IDX; d < DEPTH_MAX_IDX; d++) {
+-            table[t][d].pfType = PF_INVALID;
+-        }
+-    }
+-    d3dDevice->EnumTextureFormats(D3DUtils_TextureSearchCallback, table);
+-
+-    // We've retrieved the pixel formats for this device. The matrix may
+-    // look something like this, depending on the formats the device supports:
+-    // Transparency/Depth        Depth 16            Depth 24          Depth 32
+-    // ------------------------------------------------------------------------
+-    //      TR_OPAQUE   PF_USHORT_565_RGB          PF_INVALID        PF_INT_RGB
+-    //     TR_BITMASK          PF_INVALID          PF_INVALID        PF_INVALID
+-    // TR_TRANSLUCENT          PF_INVALID          PF_INVALID       PF_INT_ARGB
+-
+-
+-    // we'll be using translucent pixel formats for bitmask images
+-    // for now, this may change later
+-    memcpy(&table[TR_BITMASK_IDX], &table[TR_TRANSLUCENT_IDX],
+-           sizeof(D3DTextureTableCell[DEPTH_MAX_IDX]));
+-    // Transparency/Depth        Depth 16            Depth 24          Depth 32
+-    // ------------------------------------------------------------------------
+-    //      TR_OPAQUE   PF_USHORT_565_RGB          PF_INVALID        PF_INT_RGB
+-    //     TR_BITMASK          PF_INVALID          PF_INVALID       PF_INT_ARGB
+-    // TR_TRANSLUCENT          PF_INVALID          PF_INVALID       PF_INT_ARGB
+-
+-    // REMIND: crude force
+-    // Find substitutes for pixel formats which we didn't find.
+-    // For example, if we didn't find a 24-bit format, 32-bit will be
+-    // a first choice for substitution. But if it wasn't found either,
+-    // then use 16-bit format
+-    D3DTextureTableCell *cell16, *cell24, *cell32;
+-    for (t = TR_OPAQUE_IDX; t < TR_MAX_IDX; t++) {
+-        cell16 = &table[t][DEPTH16_IDX];
+-        cell24 = &table[t][DEPTH24_IDX];
+-        cell32 = &table[t][DEPTH32_IDX];
+-        if (cell32->pfType == PF_INVALID) {
+-            if (cell24->pfType != PF_INVALID) {
+-                memcpy(cell32, cell24, sizeof(D3DTextureTableCell));
+-            } else if (cell16->pfType != PF_INVALID) {
+-                memcpy(cell32, cell16, sizeof(D3DTextureTableCell));
+-            } else {
+-                // no valid pixel formats for this transparency
+-                // type were found
+-                continue;
+-            }
+-        }
+-        // now we know that 32-bit is valid
+-        if (cell24->pfType == PF_INVALID) {
+-            // use 32-bit format as a substitution for 24-bit
+-            memcpy(cell24, cell32, sizeof(D3DTextureTableCell));
+-        }
+-        // now we know that 32- and 24-bit are valid
+-        if (cell16->pfType == PF_INVALID) {
+-            // use 24-bit format as a substitution for 16-bit
+-            memcpy(cell16, cell24, sizeof(D3DTextureTableCell));
+-        }
+-    }
+-    // After this loop the matrix may look something like this:
+-    // Transparency/Depth        Depth 16            Depth 24          Depth 32
+-    // ------------------------------------------------------------------------
+-    //      TR_OPAQUE   PF_USHORT_565_RGB          PF_INT_RGB        PF_INT_RGB
+-    //     TR_BITMASK         PF_INT_ARGB         PF_INT_ARGB       PF_INT_ARGB
+-    // TR_TRANSLUCENT         PF_INT_ARGB         PF_INT_ARGB       PF_INT_ARGB
+-
+-#ifdef DEBUG
+-    // Print out the matrix (should look something like the comment above)
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "Texutre formats table for device %x", d3dDevice);
+-    J2dTraceLn(J2D_TRACE_INFO, "Transparency/Depth     Depth 16            "\
+-               "Depth 24            Depth 32");
+-    J2dTraceLn(J2D_TRACE_INFO, "-------------------------------------------"\
+-               "----------------------------");
+-    for (t = TR_OPAQUE_IDX; t < TR_MAX_IDX; t++) {
+-        J2dTrace1(J2D_TRACE_INFO, "%15s", TR_NAMES[t]);
+-        for (int d = DEPTH16_IDX; d < DEPTH_MAX_IDX; d++) {
+-            J2dTrace1(J2D_TRACE_INFO, "%20s",
+-                      PF_NAMES[table[t][d].pfType]);
+-        }
+-        J2dTrace(J2D_TRACE_INFO, "\n");
+-    }
+-#endif // DEBUG
+-}
+-
+-const GUID *
+-D3DUtils_SelectDeviceGUID(IDirect3D7 *d3dObject)
+-{
+-    static char * RASTERIZER_NAMES[] = {
+-        "TNL", "HAL", "REFERENCE", "RGB"
+-    };
+-    // try to use TnL rasterizer by default
+-    int defIndex = TNL_IDX;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_SelectDeviceGUID");
+-    // unless a different one was requested
+-    char *pRasterizer = getenv("J2D_D3D_RASTERIZER");
+-    if (pRasterizer != NULL) {
+-        if (strncmp(pRasterizer, "ref", 3) == 0) {
+-            defIndex = REF_IDX;
+-        } else if (strncmp(pRasterizer, "rgb", 3) == 0) {
+-            defIndex = RGB_IDX;
+-        } else if (strncmp(pRasterizer, "hal", 3) == 0) {
+-            defIndex = HAL_IDX;
+-        } else if (strncmp(pRasterizer, "tnl", 3) == 0) {
+-            defIndex = TNL_IDX;
+-        }
+-        J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                    "  rasterizer requested: %s",
+-                    RASTERIZER_NAMES[defIndex]);
+-    }
+-
+-    DEVICES_INFO devInfo;
+-    memset(&devInfo, 0, sizeof(devInfo));
+-    HRESULT res;
+-    if (FAILED(res = d3dObject->EnumDevices(DeviceEnumCallback,
+-                                            (VOID*)&devInfo)))
+-    {
+-        DebugPrintDirectDrawError(res, "D3DUtils_SelectDeviceGUID: "\
+-                                  "EnumDevices failed");
+-        return NULL;
+-    }
+-
+-    // return requested rasterizer's guid if it's present
+-    if (devInfo.pGUIDs[defIndex] != NULL) {
+-        J2dRlsTraceLn1(J2D_TRACE_VERBOSE,
+-                       "D3DUtils_SelectDeviceGUID: using %s rasterizer",
+-                       RASTERIZER_NAMES[defIndex]);
+-        return devInfo.pGUIDs[defIndex];
+-    }
+-    // if not, try to find one, starting with the best available
+-    defIndex = TNL_IDX;
+-    do {
+-        if (devInfo.pGUIDs[defIndex] != NULL) {
+-            J2dRlsTraceLn1(J2D_TRACE_VERBOSE,
+-                           "D3DUtils_SelectDeviceGUID: using %s rasterizer",
+-                           RASTERIZER_NAMES[defIndex]);
+-            return devInfo.pGUIDs[defIndex];
+-        }
+-        // While we could use the rgb and ref rasterizers if tnl and
+-        // hal aren't present, it's not practical for performance purposes.
+-        // so we just leave an opportunity to force them.
+-    } while (++defIndex < REF_IDX /*DEV_IDX_MAX*/);
+-
+-
+-    J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                  "D3DUtils_SelectDeviceGUID: "\
+-                  "No Accelerated Rasterizers Found");
+-    return NULL;
+-}
+-
+-
+-/*
+- * This function sets passed matrix to be a custom left-hand off-center
+- * orthogonal matrix. The output is identical to D3DX's function call
+- * D3DXMatrixOrthoOffCenterLH((D3DXMATRIX*)&tx,
+- *                            0.0, width, height, 0.0, -1.0, 1.0);
+- */
+-void
+-D3DUtils_SetOrthoMatrixOffCenterLH(D3DMATRIX *m,
+-                                   float width, float height)
+-{
+-    DASSERT((m != NULL) && (width > 0.0f) && (height > 0.0f));
+-    memset(m, 0, sizeof(D3DMATRIX));
+-    m->_11 =  2.0f/width;
+-    m->_22 = -2.0f/height;
+-    m->_33 =  0.5f;
+-    m->_44 =  1.0f;
+-
+-    m->_41 = -1.0f;
+-    m->_42 =  1.0f;
+-    m->_43 =  0.5f;
+-}
+-
+-void
+-D3DUtils_SetIdentityMatrix(D3DMATRIX *m, BOOL adjust)
+-{
+-    DASSERT(m != NULL);
+-    m->_12 = m->_13 = m->_14 = m->_21 = m->_23 = m->_24 = 0.0f;
+-    m->_31 = m->_32 = m->_34 = m->_43 = 0.0f;
+-    m->_11 = m->_22 = m->_33 = m->_44 = 1.0f;
+-    if (adjust) {
+-        // This is required for proper texel alignment
+-        m->_41 = m->_42 = -0.5f;
+-    } else {
+-        m->_41 = m->_42 = 0.0f;
+-    }
+-}
+-
+-DDrawSurface *
+-D3DUtils_CreatePlainSurface(JNIEnv *env,
+-                            DDraw *ddObject,
+-                            D3DContext *d3dContext,
+-                            int w, int h)
+-{
+-    DXSurface *dxSurface;
+-    jint pType;
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CreatePlainSurface");
+-    if (FAILED(d3dContext->CreateSurface(env, w, h, 32,
+-                                         TR_OPAQUE, D3D_PLAIN_SURFACE,
+-                                         &dxSurface, &pType)))
+-    {
+-        return NULL;
+-    }
+-    return new DDrawSurface(ddObject, dxSurface);
+-}
+-
+-DDrawSurface *
+-D3DUtils_CreateTexture(JNIEnv *env,
+-                       DDraw *ddObject,
+-                       D3DContext *d3dContext,
+-                       int transparency,
+-                       int w, int h)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CreateTexture");
+-    DXSurface *dxSurface;
+-    jint pType;
+-    if (FAILED(d3dContext->CreateSurface(env, w, h, 32,
+-                                         transparency, D3D_TEXTURE_SURFACE,
+-                                         &dxSurface, &pType)))
+-    {
+-        return NULL;
+-    }
+-    return new DDrawSurface(ddObject, dxSurface);
+-}
+-
+-HRESULT
+-D3DUtils_UploadIntImageToXRGBTexture(DDrawSurface *lpTexture,
+-                                     int *pSrc, int width, int height)
+-{
+-    HRESULT res;
+-    int texW = lpTexture->GetDXSurface()->GetWidth();
+-    int texH = lpTexture->GetDXSurface()->GetHeight();
+-    int srcStride = width * 4;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_UploadIntImageToXRGBTexture");
+-    if (width > texW) {
+-        width = texW;
+-    }
+-    if (height > texH) {
+-        height = texH;
+-    }
+-
+-    SurfaceDataRasInfo rasInfo;
+-    if (SUCCEEDED(res = lpTexture->Lock(NULL, &rasInfo,
+-                                        DDLOCK_WAIT|DDLOCK_NOSYSLOCK, NULL)))
+-    {
+-        void *pDstPixels = rasInfo.rasBase;
+-        void *pSrcPixels = (void*)pSrc;
+-
+-        // REMIND: clear the dest first
+-        memset(pDstPixels, 0, texH * rasInfo.scanStride);
+-        do {
+-            memcpy(pDstPixels, pSrcPixels, width * 4);
+-            pSrcPixels = PtrAddBytes(pSrcPixels, srcStride);
+-            pDstPixels = PtrAddBytes(pDstPixels, rasInfo.scanStride);
+-        } while (--height > 0);
+-        res = lpTexture->Unlock(NULL);
+-    }
+-    return res;
+-}
+-
+-HRESULT
+-D3DUtils_CheckD3DCaps(LPD3DDEVICEDESC7 lpDesc7)
+-{
+-    // The device must support fast rasterization
+-    static DWORD dwDevCaps =
+-        (D3DDEVCAPS_DRAWPRIMTLVERTEX | D3DDEVCAPS_HWRASTERIZATION);
+-    BOOL vt = lpDesc7->dwDevCaps & D3DDEVCAPS_DRAWPRIMTLVERTEX;
+-    BOOL rz = lpDesc7->dwDevCaps & D3DDEVCAPS_HWRASTERIZATION;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CheckD3DCaps");
+-    return (lpDesc7->dwDevCaps & dwDevCaps) ?
+-        D3D_OK :
+-        DDERR_GENERIC;
+-}
+-
+-HRESULT
+-D3DUtils_CheckTextureCaps(LPD3DDEVICEDESC7 lpDesc7)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CheckTextureCaps");
+-    // REMIND: we should really check both Tri and Lin caps,
+-    // but hopefully we won't be using line strips soon
+-    LPD3DPRIMCAPS lpDpcTriCaps = &lpDesc7->dpcTriCaps;
+-    // Filtering requirements
+-    static DWORD dwFilterCaps =
+-        (D3DPTFILTERCAPS_LINEAR | D3DPTFILTERCAPS_NEAREST);
+-    // Check for caps used for alpha compositing (implementation of
+-    // Porter-Duff rules)
+-    static DWORD dwBlendCaps =
+-        (D3DPBLENDCAPS_ZERO | D3DPBLENDCAPS_ONE |
+-         D3DPBLENDCAPS_SRCALPHA  | D3DPBLENDCAPS_INVSRCALPHA |
+-         D3DPBLENDCAPS_DESTALPHA | D3DPBLENDCAPS_INVDESTALPHA);
+-
+-    if ((lpDesc7->dwTextureOpCaps & D3DTEXOPCAPS_MODULATE) &&
+-        (lpDpcTriCaps->dwTextureFilterCaps & dwFilterCaps) &&
+-        (lpDpcTriCaps->dwSrcBlendCaps  & dwBlendCaps) &&
+-        (lpDpcTriCaps->dwDestBlendCaps & dwBlendCaps))
+-    {
+-        return D3D_OK;
+-    }
+-    return DDERR_GENERIC;
+-}
+-
+-HRESULT
+-D3DUtils_CheckDeviceCaps(LPD3DDEVICEDESC7 lpDesc7) {
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CheckDeviceCaps");
+-    if (SUCCEEDED(D3DUtils_CheckD3DCaps(lpDesc7)) &&
+-        SUCCEEDED(D3DUtils_CheckTextureCaps(lpDesc7)) &&
+-        SUCCEEDED(D3DUtils_CheckDepthCaps(lpDesc7)))
+-    {
+-        return D3D_OK;
+-    }
+-    return DDERR_GENERIC;
+-}
+-
+-HRESULT
+-D3DUtils_CheckDepthCaps(LPD3DDEVICEDESC7 lpDesc7)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "D3DUtils_CheckDepthCaps");
+-    // Check for required depth-buffer operations
+-    // (see D3DContext::SetClip() for more info).
+-    static DWORD dwZCmpCaps = (D3DPCMPCAPS_ALWAYS | D3DPCMPCAPS_LESS);
+-    // D3DPMISCCAPS_MASKZ capability allows enabling/disabling
+-    // depth buffer updates.
+-    if ((lpDesc7->dpcTriCaps.dwMiscCaps & D3DPMISCCAPS_MASKZ) &&
+-        (lpDesc7->dpcTriCaps.dwZCmpCaps & dwZCmpCaps))
+-    {
+-        return D3D_OK;
+-    }
+-    return DDERR_GENERIC;
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DUtils.h
+--- openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DUtils.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,287 +0,0 @@
+-/*
+- * Copyright (c) 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef D3DUTILS_H
+-#define D3DUTILS_H
+-
+-#include "D3DContext.h"
+-
+-// - Types and macros used in SelectDeviceGUID -----------------------
+-// Indexes for the rasterizers:
+-// TNL, HAL, REF, RGB
+-#define TNL_IDX (0)
+-#define HAL_IDX (1)
+-#define REF_IDX (2)
+-#define RGB_IDX (3)
+-#define DEV_IDX_MAX (RGB_IDX+1)
+-
+-typedef struct {
+-    const GUID *pGUIDs[4];
+-} DEVICES_INFO;
+-
+-// - Utility funcions for dealing with pixel formats ----------------
+-const GUID *
+-D3DUtils_SelectDeviceGUID(IDirect3D7 *d3dObject);
+-
+-HRESULT
+-D3DUtils_FindDepthBufferFormat(IDirect3D7 *d3dObject,
+-                               int preferredDepth,
+-                               DDPIXELFORMAT* pddpf,
+-                               const GUID *pDeviceGUID);
+-HRESULT
+-D3DUtils_FindMaskTileTextureFormat(IDirect3DDevice7 *d3dDevice,
+-                                   DDPIXELFORMAT* pddpf);
+-void
+-D3DUtils_SetupTextureFormats(IDirect3DDevice7 *d3dDevice,
+-                             D3DTextureTable &table);
+-
+-// - Utility funcions for working with matricies ---------------------
+-void
+-D3DUtils_SetIdentityMatrix(D3DMATRIX *m, BOOL adjust = TRUE);
+-
+-void
+-D3DUtils_SetOrthoMatrixOffCenterLH(D3DMATRIX *m,
+-                                   float width, float height);
+-DDrawSurface *
+-D3DUtils_CreatePlainSurface(JNIEnv *env, DDraw *ddObject,
+-                            D3DContext *d3dContext,
+-                            int w, int h);
+-
+-DDrawSurface *
+-D3DUtils_CreateTexture(JNIEnv *env, DDraw *ddObject,
+-                       D3DContext *d3dContext,
+-                       int transparency,
+-                       int w, int h);
+-
+-HRESULT
+-D3DUtils_UploadIntImageToXRGBTexture(DDrawSurface *lpTexture,
+-                                     int *pSrc, int width, int height);
+-
+-// - Utility functions for checking various capabilities of the device
+-
+-HRESULT
+-D3DUtils_CheckD3DCaps(LPD3DDEVICEDESC7 lpDesc7);
+-
+-HRESULT
+-D3DUtils_CheckDepthCaps(LPD3DDEVICEDESC7 lpDesc7);
+-
+-HRESULT
+-D3DUtils_CheckTextureCaps(LPD3DDEVICEDESC7 lpDesc7);
+-
+-HRESULT
+-D3DUtils_CheckDeviceCaps(LPD3DDEVICEDESC7 lpDesc7);
+-
+-// - Utility macros error handling of d3d operations -----------------
+-
+-/*  #define NO_D3D_CHECKING */
+-
+-#ifdef NO_D3D_CHECKING
+-
+-#define D3DU_PRIM_LOOP_BEGIN(RES, DST_WSDO)
+-#define D3DU_PRIM2_LOOP_BEGIN(RES, SRC_WSDO, DST_WSDO)
+-#define D3DU_PRIM_LOOP_END(ENV, RES, DST_WSDO, PRIM)
+-#define D3DU_PRIM2_LOOP_END(ENV, RES, SRC_WSDO, DST_WSDO, PRIM)
+-
+-#else /* NO_D3D_CHECKING */
+-
+-#ifndef MAX_BUSY_ATTEMPTS
+-  #define MAX_BUSY_ATTEMPTS 50  // Arbitrary number of times to attempt
+-#endif
+-
+-
+-#define D3DU_PRIM_LOOP_BEGIN(RES, DST_WSDO) \
+-do { \
+-    int attempts = 0; \
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) { \
+-        if (FAILED((DST_WSDO)->lpSurface->IsLost())) { \
+-            RES = DDERR_SURFACELOST; \
+-        } else {
+-
+-#define D3DU_PRIM2_LOOP_BEGIN(RES, SRC_WSDO, DST_WSDO) \
+-do { \
+-    int attempts = 0; \
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) { \
+-        if (FAILED((DST_WSDO)->lpSurface->IsLost()) || \
+-            FAILED((SRC_WSDO)->lpSurface->IsLost())) \
+-        { \
+-            RES = DDERR_SURFACELOST; \
+-        } else {
+-
+-#define D3DU_PRIM_LOOP_END(ENV, RES, DST_WSDO, PRIM) \
+-        } \
+-        if (SUCCEEDED(RES)) { \
+-            break; \
+-        } else if (RES == DDERR_SURFACEBUSY || RES == DDERR_WASSTILLDRAWING) { \
+-            J2dTraceLn(J2D_TRACE_VERBOSE, #PRIM ## ": surface is busy."); \
+-            continue; \
+-        } else if (RES == DDERR_SURFACELOST) { \
+-            J2dTraceLn(J2D_TRACE_INFO, #PRIM ## ": dest surface lost."); \
+-            DST_WSDO->RestoreSurface(ENV, DST_WSDO); \
+-            break; \
+-        } else { \
+-            DebugPrintDirectDrawError(RES, #PRIM); \
+-        } \
+-     } \
+-} while (0)
+-
+-#define D3DU_PRIM2_LOOP_END(ENV, RES, SRC_WSDO, DST_WSDO, PRIM) \
+-        } \
+-        if (SUCCEEDED(RES)) { \
+-            break; \
+-        } else if (RES == DDERR_SURFACEBUSY || RES == DDERR_WASSTILLDRAWING) { \
+-            J2dTraceLn(J2D_TRACE_VERBOSE, #PRIM ## ": surface is busy."); \
+-            continue; \
+-        } else if (RES == DDERR_SURFACELOST) { \
+-            if (FAILED((DST_WSDO)->lpSurface->IsLost())) { \
+-                J2dTraceLn(J2D_TRACE_INFO, #PRIM ## ": dst surface lost."); \
+-                (DST_WSDO)->RestoreSurface(ENV, (DST_WSDO)); \
+-            } \
+-            if (FAILED((SRC_WSDO)->lpSurface->IsLost())) { \
+-                J2dTraceLn(J2D_TRACE_INFO, #PRIM ## ": src surface lost."); \
+-                (SRC_WSDO)->RestoreSurface(ENV, (SRC_WSDO)); \
+-            } \
+-            break; \
+-        } else { \
+-            DebugPrintDirectDrawError(RES, #PRIM); \
+-        } \
+-     } \
+-} while (0)
+-
+-#endif /* NO_D3D_CHECKING */
+-
+-// - Utility macros for initializing vertex structures ---------------
+-
+-#define D3D_EXEC_PRIM_LOOP(ENV, RES, DST_WSDO, PRIM) \
+-  D3DU_PRIM_LOOP_BEGIN(RES, DST_WSDO); \
+-  RES = (PRIM); \
+-  D3DU_PRIM_LOOP_END(ENV, RES, DST_WSDO, PRIM);
+-
+-#define D3DU_INIT_VERTEX_PENT_XY(VQUAD, X1, Y1, X2, Y2) \
+-do { \
+-    D3DU_INIT_VERTEX_QUAD_XY(VQUAD, X1, Y1, X2, Y2); \
+-    (VQUAD)[4].x = (X1); (VQUAD)[4].y = (Y1); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_PENT_COLOR(VQUAD, VCOLOR) \
+-do { \
+-    D3DU_INIT_VERTEX_QUAD_COLOR(VQUAD, VCOLOR); \
+-    (VQUAD)[4].color = (VCOLOR); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD_XY(VQUAD, X1, Y1, X2, Y2) \
+-do { \
+-    (VQUAD)[0].x = (X1); (VQUAD)[0].y = (Y1); \
+-    (VQUAD)[1].x = (X2); (VQUAD)[1].y = (Y1); \
+-    (VQUAD)[2].x = (X2); (VQUAD)[2].y = (Y2); \
+-    (VQUAD)[3].x = (X1); (VQUAD)[3].y = (Y2); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD_XYZ(VQUAD, X1, Y1, X2, Y2, Z) \
+-do { \
+-    D3DU_INIT_VERTEX_QUAD_XY(VQUAD, X1, Y1, X2, Y2); \
+-    (VQUAD)[0].z = (Z); \
+-    (VQUAD)[1].z = (Z); \
+-    (VQUAD)[2].z = (Z); \
+-    (VQUAD)[3].z = (Z); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD_COLOR(VQUAD, VCOLOR) \
+-do { \
+-    (VQUAD)[0].color = (VCOLOR); \
+-    (VQUAD)[1].color = (VCOLOR); \
+-    (VQUAD)[2].color = (VCOLOR); \
+-    (VQUAD)[3].color = (VCOLOR); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD_UV(VQUAD, TU1, TV1, TU2, TV2) \
+-do { \
+-    (VQUAD)[0].tu = (TU1);  (VQUAD)[0].tv = (TV1); \
+-    (VQUAD)[1].tu = (TU2);  (VQUAD)[1].tv = (TV1); \
+-    (VQUAD)[2].tu = (TU2);  (VQUAD)[2].tv = (TV2); \
+-    (VQUAD)[3].tu = (TU1);  (VQUAD)[3].tv = (TV2); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD_XYUV(VQUAD, X1, Y1, X2, Y2, TU1, TV1, TU2, TV2) \
+-do { \
+-    D3DU_INIT_VERTEX_QUAD_XY(VQUAD, X1, Y1, X2, Y2); \
+-    D3DU_INIT_VERTEX_QUAD_UV(VQUAD, TU1, TV1, TU2, TV2); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_QUAD(VQUAD, X1, Y1, X2, Y2, VCOLOR, TU1, TV1, TU2, TV2) \
+-do { \
+-    D3DU_INIT_VERTEX_QUAD_XYUV(VQUAD, X1, Y1, X2, Y2, TU1, TV1, TU2, TV2); \
+-    D3DU_INIT_VERTEX_QUAD_COLOR(VQUAD, VCOLOR); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_6(VQUAD, X1, Y1, X2, Y2, VCOLOR, TU1, TV1, TU2, TV2) \
+-do { \
+-    D3DU_INIT_VERTEX_XY_6(VHEX, X1, Y1, X2, Y2); \
+-    D3DU_INIT_VERTEX_UV_6(VHEX, TU1, TV1, TU2, TV2); \
+-    D3DU_INIT_VERTEX_COLOR_6(VHEX, VCOLOR); \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_UV_6(VHEX, TU1, TV1, TU2, TV2) \
+-do { \
+-    (VHEX)[0].tu = TU1;  (VHEX)[0].tv = TV1; \
+-    (VHEX)[1].tu = TU2;  (VHEX)[1].tv = TV1; \
+-    (VHEX)[2].tu = TU1;  (VHEX)[2].tv = TV2; \
+-    (VHEX)[3].tu = TU1;  (VHEX)[3].tv = TV2; \
+-    (VHEX)[4].tu = TU2;  (VHEX)[4].tv = TV1; \
+-    (VHEX)[5].tu = TU2;  (VHEX)[5].tv = TV2; \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_COLOR_6(VHEX, VCOLOR) \
+-do { \
+-    (VHEX)[0].color = VCOLOR; \
+-    (VHEX)[1].color = VCOLOR; \
+-    (VHEX)[2].color = VCOLOR; \
+-    (VHEX)[3].color = VCOLOR; \
+-    (VHEX)[4].color = VCOLOR; \
+-    (VHEX)[5].color = VCOLOR; \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_XY_6(VHEX, X1, Y1, X2, Y2) \
+-do { \
+-    (VHEX)[0].x = X1;  (VHEX)[0].y = Y1; \
+-    (VHEX)[1].x = X2;  (VHEX)[1].y = Y1; \
+-    (VHEX)[2].x = X1;  (VHEX)[2].y = Y2; \
+-    (VHEX)[3].x = X1;  (VHEX)[3].y = Y2; \
+-    (VHEX)[4].x = X2;  (VHEX)[4].y = Y1; \
+-    (VHEX)[5].x = X2;  (VHEX)[5].y = Y2; \
+-} while (0)
+-
+-#define D3DU_INIT_VERTEX_XYZ_6(VHEX, X1, Y1, X2, Y2, Z) \
+-do { \
+-    D3DU_INIT_VERTEX_XY_6(VHEX, X1, Y1, X2, Y2); \
+-    (VHEX)[0].z = (Z);  \
+-    (VHEX)[1].z = (Z);  \
+-    (VHEX)[2].z = (Z);  \
+-    (VHEX)[3].z = (Z);  \
+-    (VHEX)[4].z = (Z);  \
+-    (VHEX)[5].z = (Z);  \
+-} while (0)
+-
+-
+-#endif // D3DUTILS_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,823 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#include "D3DPipeline.h"
@@ -39464,33 +44139,33 @@
 +
 +    return res;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.h openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.h	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/d3d/D3DVertexCacher.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/d3d/D3DVertexCacher.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,108 @@
 +/*
-+ * Copyright 2007-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.  Sun designates this
++ * Copyright (c) 2007, 2008, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef D3DVERTEXCACHER_H
@@ -39576,9 +44251,9 @@
 +};
 +
 +#endif // D3DVERTEXCACHER_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c
---- openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c
+--- openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLGraphicsConfig.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -39617,9 +44292,9 @@
      }
  
      return wglinfo->context->caps;
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c
---- openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/opengl/WGLSurfaceData.c
+--- openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.c	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -39832,9 +44507,9 @@
 +
 +    return JNI_TRUE;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/opengl/WGLSurfaceData.h
+--- openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/opengl/WGLSurfaceData.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
@@ -39857,9 +44532,602 @@
      HDC pbufferDC;
  } WGLSDOps;
  
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp openjdk/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/DDBlitLoops.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/DDBlitLoops.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,413 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include <stdlib.h>
+-#include <jni.h>
+-#include <sun_java2d_windows_DDBlitLoops.h>
+-#include <sun_java2d_windows_DDScaleLoops.h>
+-#include "ddrawUtils.h"
+-#include "GraphicsPrimitiveMgr.h"
+-#include "Region.h"
+-#include "Trace.h"
+-
+-extern int currNumDevices;
+-extern CriticalSection windowMoveLock;
+-
+-extern "C" {
+-
+-/**
+- * Return TRUE if rCheck is contained within rContainer
+- */
+-INLINE BOOL RectInRect(RECT *rCheck, RECT *rContainer)
+-{
+-    // Assumption: left <= right, top <= bottom
+-    if (rCheck->left >= rContainer->left &&
+-        rCheck->right <= rContainer->right &&
+-        rCheck->top >= rContainer->top &&
+-        rCheck->bottom <= rContainer->bottom)
+-    {
+-        return TRUE;
+-    } else {
+-        return FALSE;
+-    }
+-}
+-
+-/**
+- * Returns whether the given rectangle (in screen-relative
+- * coords) is within the rectangle of the given device.
+- * NOTE: A side-effect of this function is offsetting the
+- * rectangle by the left/top of the monitor rectangle.
+- */
+-INLINE BOOL RectInDevice(RECT *rect, AwtWin32GraphicsDevice *device)
+-{
+-    MONITOR_INFO *mi = device->GetMonitorInfo();
+-    ::OffsetRect(rect, mi->rMonitor.left, mi->rMonitor.top);
+-    if (!RectInRect(rect, &mi->rMonitor)) {
+-        return TRUE;
+-    }
+-    return FALSE;
+-}
+-
+-/**
+- * Need to handle Blt to other devices iff:
+- *    - there are >1 devices on the system
+- *    - at least one of src/dest is an onscreen window
+- *    - the onscreen window overlaps with
+- *    a monitor which is not the monitor associated with the window
+- */
+-void MultimonBlt(JNIEnv *env, Win32SDOps *wsdoSrc, Win32SDOps *wsdoDst,
+-                 jobject clip,
+-                 jint srcx, jint srcy,
+-                 jint dstx, jint dsty,
+-                 RECT *rSrc, RECT *rDst)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "MultimonBlt");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  srcx=%-4d srcy=%-4d dstx=%-4d dsty=%-4d",
+-                srcx, srcy, dstx, dsty);
+-    if (rSrc == NULL) {
+-        J2dTraceLn(J2D_TRACE_ERROR, "MultimonBlt: null rSrc");
+-        return;
+-    }
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  rSrc: l=%-4d t=%-4d r=%-4d b=%-4d",
+-                rSrc->left, rSrc->top, rSrc->right, rSrc->bottom);
+-    if (rDst == NULL) {
+-        J2dTraceLn(J2D_TRACE_ERROR, "MultimonBlt: null rDst");
+-        return;
+-    }
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  rDst: l=%-4d t=%-4d r=%-4d b=%-4d",
+-                rDst->left, rDst->top, rDst->right, rDst->bottom);
+-    int currentDevice = -1;
+-    RECT rectToIntersect;
+-
+-    if (!(wsdoSrc->window || wsdoDst->window))
+-    {
+-        // Neither surface is onscreen: nothing to do
+-        return;
+-    }
+-    BOOL doGdiBlt = FALSE;
+-    if (wsdoSrc->window) {
+-        doGdiBlt = RectInDevice(rSrc, wsdoSrc->device);
+-        if (doGdiBlt) {
+-            currentDevice = wsdoSrc->device->GetDeviceIndex();
+-            rectToIntersect = *rSrc;
+-        }
+-    } else if (wsdoDst->window) {
+-        doGdiBlt = RectInDevice(rDst, wsdoDst->device);
+-        if (doGdiBlt) {
+-            currentDevice = wsdoDst->device->GetDeviceIndex();
+-            rectToIntersect = *rDst;
+-        }
+-    }
+-    if (doGdiBlt) {
+-        // Need to invoke Setup functions to setup HDCs because we used
+-        // the NoSetup versions of GetOps for performance reasons
+-        SurfaceData_InvokeSetup(env, (SurfaceDataOps*)wsdoSrc);
+-        SurfaceData_InvokeSetup(env, (SurfaceDataOps*)wsdoDst);
+-        HDC hdcSrc = wsdoSrc->GetDC(env, wsdoSrc, 0, NULL, NULL, NULL, 0);
+-        if (!hdcSrc) {
+-            J2dTraceLn(J2D_TRACE_WARNING,
+-                       "MultimonBlt: Null src HDC in MultimonBlt");
+-            return;
+-        }
+-        HDC hdcDst = wsdoDst->GetDC(env, wsdoDst, 0, NULL, clip, NULL, 0);
+-        if (!hdcDst) {
+-            J2dTraceLn(J2D_TRACE_WARNING,
+-                       "MultimonBlt: Null dst HDC in MultimonBlt");
+-            wsdoSrc->ReleaseDC(env, wsdoSrc, hdcSrc);
+-            return;
+-        }
+-        for (int i = 0; i < currNumDevices; ++i) {
+-            // Assumption: can't end up here for copies between two
+-            // different windows; it must be a copy between offscreen
+-            // surfaces or a window and an offscreen surface.  We've
+-            // already handled the Blt to window on the window's native
+-            // GraphicsDevice, so skip that device now.
+-            if (i == currentDevice) {
+-                continue;
+-            }
+-            MONITOR_INFO *mi = AwtWin32GraphicsDevice::GetMonitorInfo(i);
+-            RECT rIntersect;
+-            ::IntersectRect(&rIntersect, &rectToIntersect, &mi->rMonitor);
+-            if (!::IsRectEmpty(&rIntersect)) {
+-                int newSrcX = srcx + (rIntersect.left - rectToIntersect.left);
+-                int newSrcY = srcy + (rIntersect.top - rectToIntersect.top);
+-                int newDstX = dstx + (rIntersect.left - rectToIntersect.left);
+-                int newDstY = dsty + (rIntersect.top - rectToIntersect.top);
+-                int newW = rIntersect.right - rIntersect.left;
+-                int newH = rIntersect.bottom - rIntersect.top;
+-                ::BitBlt(hdcDst, newDstX, newDstY, newW, newH, hdcSrc,
+-                    newSrcX, newSrcY, SRCCOPY);
+-            }
+-        }
+-        wsdoSrc->ReleaseDC(env, wsdoSrc, hdcSrc);
+-        wsdoDst->ReleaseDC(env, wsdoDst, hdcDst);
+-    }
+-}
+-
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDBlitLoops_Blit
+-    (JNIEnv *env, jobject joSelf,
+-     jobject srcData, jobject dstData,
+-     jobject composite, jobject clip,
+-     jint srcx, jint srcy,
+-     jint dstx, jint dsty,
+-     jint width, jint height)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDBlitLoops_Blit");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  srcx=%-4d srcy=%-4d dstx=%-4d dsty=%-4d",
+-                srcx, srcy, dstx, dsty);
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "  width=%-4d height=%-4d", width, height);
+-    POINT ptDst = {0, 0};
+-    POINT ptSrc = {0, 0};
+-    Win32SDOps *wsdoSrc = Win32SurfaceData_GetOpsNoSetup(env, srcData);
+-    Win32SDOps *wsdoDst = Win32SurfaceData_GetOpsNoSetup(env, dstData);
+-    RegionData clipInfo;
+-
+-    if (!wsdoSrc->ddInstance || !wsdoDst->ddInstance) {
+-        // Some situations can cause us to fail on primary
+-        // creation, resulting in null lpSurface and null ddInstance
+-        // for a Win32Surface object.. Just noop this call in that case.
+-        return;
+-    }
+-
+-    if (wsdoSrc->invalid || wsdoDst->invalid) {
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "DDBlitLoops_Blit: invalid surface data");
+-        return;
+-    }
+-
+-    RECT rSrc = {srcx, srcy, srcx + width, srcy + height};
+-    RECT rDst = {dstx, dsty, dstx + width, dsty + height};
+-    if (Region_GetInfo(env, clip, &clipInfo)) {
+-        return;
+-    }
+-
+-    /* If dst and/or src are offscreen surfaces, need to make sure
+-       that Blt is within the boundaries of those surfaces.  If not,
+-       clip the surface in question and also clip the other
+-       surface by the same amount.
+-     */
+-    if (!wsdoDst->window) {
+-        CLIP2RECTS(rDst, 0, 0, wsdoDst->w, wsdoDst->h, rSrc);
+-    }
+-    CLIP2RECTS(rDst,
+-               clipInfo.bounds.x1, clipInfo.bounds.y1,
+-               clipInfo.bounds.x2, clipInfo.bounds.y2,
+-               rSrc);
+-    if (!wsdoSrc->window) {
+-        CLIP2RECTS(rSrc, 0, 0, wsdoSrc->w, wsdoSrc->h, rDst);
+-    }
+-    Region_IntersectBoundsXYXY(&clipInfo,
+-                               rDst.left, rDst.top,
+-                               rDst.right, rDst.bottom);
+-    if (Region_IsEmpty(&clipInfo)) {
+-        return;
+-    }
+-    if (wsdoDst->window || wsdoSrc->window) {
+-        if ((wsdoDst->window && !::IsWindowVisible(wsdoDst->window)) ||
+-            (wsdoSrc->window && !::IsWindowVisible(wsdoSrc->window)))
+-        {
+-            return;
+-        }
+-        // The windowMoveLock CriticalSection ensures that a window cannot
+-        // move while we are in the middle of copying pixels into it.  See
+-        // the WM_WINDOWPOSCHANGING code in awt_Component.cpp for more
+-        // information.
+-        windowMoveLock.Enter();
+-        if (wsdoDst->window) {
+-            ::ClientToScreen(wsdoDst->window, &ptDst);
+-            MONITOR_INFO *mi = wsdoDst->device->GetMonitorInfo();
+-            ptDst.x -= wsdoDst->insets.left;
+-            ptDst.y -= wsdoDst->insets.top;
+-            ptDst.x -= mi->rMonitor.left;
+-            ptDst.y -= mi->rMonitor.top;
+-            ::OffsetRect(&rDst, ptDst.x, ptDst.y);
+-        }
+-        if (wsdoSrc->window) {
+-            MONITOR_INFO *mi = wsdoDst->device->GetMonitorInfo();
+-            ::ClientToScreen(wsdoSrc->window, &ptSrc);
+-            ptSrc.x -= wsdoSrc->insets.left;
+-            ptSrc.y -= wsdoSrc->insets.top;
+-            ptSrc.x -= mi->rMonitor.left;
+-            ptSrc.y -= mi->rMonitor.top;
+-            ::OffsetRect(&rSrc, ptSrc.x, ptSrc.y);
+-        }
+-    }
+-    if (Region_IsRectangular(&clipInfo)) {
+-        DDBlt(env, wsdoSrc, wsdoDst, &rDst, &rSrc);
+-    } else {
+-        SurfaceDataBounds span;
+-        RECT rSrcSpan, rDstSpan;
+-        ptSrc.x += srcx - dstx;
+-        ptSrc.y += srcy - dsty;
+-        Region_StartIteration(env, &clipInfo);
+-        while (Region_NextIteration(&clipInfo, &span)) {
+-            ::SetRect(&rDstSpan, span.x1, span.y1, span.x2, span.y2);
+-            ::CopyRect(&rSrcSpan, &rDstSpan);
+-            ::OffsetRect(&rDstSpan, ptDst.x, ptDst.y);
+-            ::OffsetRect(&rSrcSpan, ptSrc.x, ptSrc.y);
+-            DDBlt(env, wsdoSrc, wsdoDst, &rDstSpan, &rSrcSpan);
+-        }
+-        Region_EndIteration(env, &clipInfo);
+-    }
+-    if (wsdoDst->window || wsdoSrc->window) {
+-        windowMoveLock.Leave();
+-    }
+-
+-    if (currNumDevices > 1) {
+-        // Also need to handle Blit in multimon case, where part of the
+-        // source or dest lies on a different device
+-        MultimonBlt(env, wsdoSrc, wsdoDst, clip, srcx, srcy, dstx, dsty,
+-                    &rSrc, &rDst);
+-    }
+-}
+-
+-
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDScaleLoops_Scale
+-    (JNIEnv *env, jobject joSelf,
+-     jobject srcData, jobject dstData,
+-     jobject composite,
+-     jint srcx, jint srcy,
+-     jint dstx, jint dsty,
+-     jint srcWidth, jint srcHeight,
+-     jint dstWidth, jint dstHeight)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDScaleLoops_Scale");
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  srcx=%-4d srcy=%-4d dstx=%-4d dsty=%-4d",
+-                srcx, srcy, dstx, dsty);
+-    J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                "  srcWidth=%-4d srcHeight=%-4d dstWidth=%-4d dstHeight=%-4d",
+-                srcWidth, srcHeight, dstWidth, dstHeight);
+-    POINT ptDst = {0, 0};
+-    POINT ptSrc = {0, 0};
+-    Win32SDOps *wsdoSrc = Win32SurfaceData_GetOpsNoSetup(env, srcData);
+-    Win32SDOps *wsdoDst = Win32SurfaceData_GetOpsNoSetup(env, dstData);
+-
+-    if (!wsdoSrc->ddInstance || !wsdoDst->ddInstance) {
+-        // Some situations can cause us to fail on primary
+-        // creation, resulting in null lpSurface and null ddInstance
+-        // for a Win32Surface object.. Just noop this call in that case.
+-        return;
+-    }
+-
+-    if (wsdoSrc->invalid || wsdoDst->invalid) {
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "DDBlitLoops_Scale: invalid surface data");
+-        return;
+-    }
+-
+-    RECT rSrc = {srcx, srcy, srcx + srcWidth, srcy + srcHeight};
+-    RECT rDst = {dstx, dsty, dstx + dstWidth, dsty + dstHeight};
+-
+-    /* If dst and/or src are offscreen surfaces, need to make sure
+-       that Blt is within the boundaries of those surfaces.  If not,
+-       clip the surface in question and also rescale the other
+-       surface according to the new scaling rectangle.
+-     */
+-    if (!wsdoDst->window &&
+-        (dstx < 0 || dsty < 0 ||
+-         rDst.right > wsdoDst->w || rDst.bottom > wsdoDst->h))
+-    {
+-        RECT newRDst;
+-        newRDst.left = max(0, rDst.left);
+-        newRDst.top = max(0, rDst.top);
+-        newRDst.right = min(wsdoDst->w, rDst.right);
+-        newRDst.bottom = min(wsdoDst->h, rDst.bottom);
+-        double srcDstScaleW = (double)srcWidth/(double)dstWidth;
+-        double srcDstScaleH = (double)srcHeight/(double)dstHeight;
+-        rSrc.left += (int)(srcDstScaleW * (newRDst.left - rDst.left));
+-        rSrc.top += (int)(srcDstScaleH * (newRDst.top - rDst.top));
+-        rSrc.right += (int)(srcDstScaleW * (newRDst.right - rDst.right));
+-        rSrc.bottom += (int)(srcDstScaleH * (newRDst.bottom - rDst.bottom));
+-        rDst = newRDst;
+-    }
+-    if (!wsdoSrc->window &&
+-        (srcx < 0 || srcy < 0 ||
+-         rSrc.right > wsdoSrc->w || rSrc.bottom > wsdoSrc->h))
+-    {
+-        RECT newRSrc;
+-        newRSrc.left = max(0, rSrc.left);
+-        newRSrc.top = max(0, rSrc.top);
+-        newRSrc.right = min(wsdoSrc->w, rSrc.right);
+-        newRSrc.bottom = min(wsdoSrc->h, rSrc.bottom);
+-        double dstSrcScaleW = (double)dstWidth/(double)srcWidth;
+-        double dstSrcScaleH = (double)dstHeight/(double)srcHeight;
+-        rDst.left += (int)(dstSrcScaleW * (newRSrc.left - rSrc.left));
+-        rDst.top += (int)(dstSrcScaleH * (newRSrc.top - rSrc.top));
+-        rDst.right += (int)(dstSrcScaleW * (newRSrc.right - rSrc.right));
+-        rDst.bottom += (int)(dstSrcScaleH * (newRSrc.bottom - rSrc.bottom));
+-        rSrc = newRSrc;
+-    }
+-    if (wsdoDst->window || wsdoSrc->window) {
+-        if ((wsdoDst->window && !::IsWindowVisible(wsdoDst->window)) ||
+-            (wsdoSrc->window && !::IsWindowVisible(wsdoSrc->window)))
+-        {
+-            return;
+-        }
+-        // The windowMoveLock CriticalSection ensures that a window cannot
+-        // move while we are in the middle of copying pixels into it.  See
+-        // the WM_WINDOWPOSCHANGING code in awt_Component.cpp for more
+-        // information.
+-        windowMoveLock.Enter();
+-        if (wsdoDst->window) {
+-            ::ClientToScreen(wsdoDst->window, &ptDst);
+-            MONITOR_INFO *mi = wsdoDst->device->GetMonitorInfo();
+-            ptDst.x -= wsdoDst->insets.left;
+-            ptDst.y -= wsdoDst->insets.top;
+-            ptDst.x -= mi->rMonitor.left;
+-            ptDst.y -= mi->rMonitor.top;
+-            ::OffsetRect(&rDst, ptDst.x, ptDst.y);
+-        }
+-        if (wsdoSrc->window) {
+-            MONITOR_INFO *mi = wsdoDst->device->GetMonitorInfo();
+-            ::ClientToScreen(wsdoSrc->window, &ptSrc);
+-            ptSrc.x -= wsdoSrc->insets.left;
+-            ptSrc.y -= wsdoSrc->insets.top;
+-            ptSrc.x -= mi->rMonitor.left;
+-            ptSrc.y -= mi->rMonitor.top;
+-            ::OffsetRect(&rSrc, ptSrc.x, ptSrc.y);
+-        }
+-    }
+-    DDBlt(env, wsdoSrc, wsdoDst, &rDst, &rSrc);
+-    if (wsdoDst->window || wsdoSrc->window) {
+-        windowMoveLock.Leave();
+-    }
+-
+-    if (currNumDevices > 1) {
+-        // Also need to handle Blit in multimon case, where part of the
+-        // source or dest lies on a different device
+-        MultimonBlt(env, wsdoSrc, wsdoDst, NULL, srcx, srcy, dstx, dsty,
+-                    &rSrc, &rDst);
+-    }
+-}
+-
+-
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/DDRenderer.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/DDRenderer.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,172 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "sun_java2d_windows_DDRenderer.h"
+-#include "Win32SurfaceData.h"
+-
+-#include <ddraw.h>
+-#include "ddrawUtils.h"
+-#include "Trace.h"
+-
+-/*
+- * Class:     sun_java2d_windows_DDRenderer
+- * Method:    doDrawLineDD
+- * Signature: (Lsun/java2d/SurfaceData;IIIII)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDRenderer_doDrawLineDD
+-    (JNIEnv *env, jobject wr,
+-     jobject sData,
+-     jint color,
+-     jint x1, jint y1, jint x2, jint y2)
+-{
+-    Win32SDOps      *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-    RECT            fillRect;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDRenderer_doDrawLineDD");
+-
+-    // Assume x1 <= x2 and y1 <= y2 (that's the way the
+-    // Java code is written)
+-    fillRect.left = x1;
+-    fillRect.top = y1;
+-    fillRect.right = x2+1;
+-    fillRect.bottom = y2+1;
+-    DDColorFill(env, sData, wsdo, &fillRect, color);
+-}
+-
+-
+-/*
+- * Class:     sun_java2d_windows_DDRenderer
+- * Method:    doFillRect
+- * Signature: (Lsun/java2d/SurfaceData;IIIII)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDRenderer_doFillRectDD
+-    (JNIEnv *env, jobject wr,
+-     jobject sData,
+-     jint color,
+-     jint left, jint top, jint right, jint bottom)
+-{
+-    Win32SDOps      *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-    RECT            fillRect;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDRenderer_doFillRectDD");
+-
+-    fillRect.left = left;
+-    fillRect.top = top;
+-    fillRect.right = right;
+-    fillRect.bottom = bottom;
+-    DDColorFill(env, sData, wsdo, &fillRect, color);
+-}
+-
+-
+-/*
+- * Class:     sun_java2d_windows_DDRenderer
+- * Method:    doDrawRectDD
+- * Signature: (Lsun/java2d/SurfaceData;IIIII)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDRenderer_doDrawRectDD
+-    (JNIEnv *env, jobject wr,
+-     jobject sData,
+-     jint color,
+-     jint x, jint y, jint w, jint h)
+-{
+-    Win32SDOps      *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-    RECT            fillRect;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDRenderer_doDrawRectDD");
+-
+-    if (w == 0 || h == 0) {
+-        fillRect.left = x;
+-        fillRect.top = y;
+-        fillRect.right = w + 1;
+-        fillRect.bottom = h + 1;
+-        DDColorFill(env, sData, wsdo, &fillRect, color);
+-    }
+-    else {
+-        fillRect.left = x;
+-        fillRect.top = y;
+-        fillRect.right = x + w + 1;
+-        fillRect.bottom = y + 1;
+-        if (!DDColorFill(env, sData, wsdo, &fillRect, color))
+-            return;
+-        fillRect.top = y + 1;
+-        fillRect.right = x + 1;
+-        fillRect.bottom = y + h + 1;
+-        if (!DDColorFill(env, sData, wsdo, &fillRect, color))
+-            return;
+-        fillRect.left = x + 1;
+-        fillRect.top = y + h;
+-        fillRect.right = x + w + 1;
+-        fillRect.bottom = y + h + 1;
+-        if (!DDColorFill(env, sData, wsdo, &fillRect, color))
+-            return;
+-        fillRect.left = x + w;
+-        fillRect.top = y + 1;
+-        fillRect.bottom = y + h;
+-        if (!DDColorFill(env, sData, wsdo, &fillRect, color))
+-            return;
+-    }
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_DDRenderer
+- * Method:    devCopyArea
+- * Signature: (Lsun/awt/windows/SurfaceData;IIIIII)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_DDRenderer_devCopyArea
+-    (JNIEnv *env, jobject wr,
+-     jobject sData,
+-     jint srcx, jint srcy,
+-     jint dx, jint dy,
+-     jint width, jint height)
+-{
+-    Win32SDOps *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-    J2dTraceLn(J2D_TRACE_INFO, "DDRenderer_devCopyArea");
+-    J2dTrace4(J2D_TRACE_VERBOSE, "  sx=%-4d sy=%-4d dx=%-4d dy=%-4d",
+-                srcx, srcy, dx, dy);
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "  w=%-4d h=%-4d", width, height);
+-    if (wsdo == NULL) {
+-        return;
+-    }
+-
+-    RECT rSrc = {srcx, srcy, srcx + width, srcy + height};
+-    if (DDCanBlt(wsdo)) {
+-        RECT rDst = rSrc;
+-        ::OffsetRect(&rDst, dx, dy);
+-
+-        DDBlt(env,wsdo, wsdo, &rDst, &rSrc);
+-        return;
+-    }
+-    HDC hDC = wsdo->GetDC(env, wsdo, 0, NULL, NULL, NULL, 0);
+-    if (hDC == NULL) {
+-        return;
+-    }
+-
+-    VERIFY(::ScrollDC(hDC, dx, dy, &rSrc, NULL, NULL, NULL));
+-    wsdo->ReleaseDC(env, wsdo, hDC);
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -39886,9 +45154,9 @@
      jint lockFlags;
  
      srcInfo.bounds.x1 = srcx;
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp openjdk/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/GDIRenderer.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIRenderer.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -40099,9 +45367,9 @@
      HDC hDC = wsdo->GetDC(env, wsdo, 0, NULL, NULL, NULL, 0);
      if (hDC == NULL) {
          return;
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,1204 @@
 +/*
 + * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -41307,33 +46575,33 @@
 +        wsdo->InvalidateSD(env, wsdo);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,246 @@
 +/*
-+ * Copyright 1999-2008 Sun Microsystems 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.  Sun designates this
++ * Copyright (c) 1999, 2010, 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.  Oracle designates this
 + * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * 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.
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
 + */
 +
 +#ifndef _WIN32SURFACEDATA_H_
@@ -41557,9 +46825,2850 @@
 +
 +
 +#endif _WIN32SURFACEDATA_H_
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/RegistryKey.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/RegistryKey.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,270 +0,0 @@
+-/*
+- * Copyright (c) 2003, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-/**
+- * This class encapsulates simple interaction with the Windows Registry.
+- * Use of the class should generally follow one of two forms:
+- * (1) Need to get set just one value:
+- *     int val = RegistryKey::GetIntValue(keyName, valueName);
+- * This function creates a temporary registry key object, reads the value
+- * from it, and closes the key.
+- * (2) Need to get/set several values:
+- *   {
+- *     RegistryKey key(keyName, permissions);
+- *     int val = key.GetIntValue(valueName);
+- *     // other key operations
+- *   }
+- * Upon going out of scope, the RegistryKey object is automatically disposed,
+- * which closes the key.  This is important: if you instead create an instance
+- * like this:
+- *     RegistryKey *key = new RegistryKey(keyName, permissions);
+- * then you need to remember to delete that object, else you will leave a
+- * registry key open, which could cause various problems such as leaks
+- * and synchronization.
+- *
+- * One important item implemented in this class is the ability to force
+- * a flush during a registry set operation.  This was implemented because
+- * the primary usage for the registry at this time is in storing results
+- * of testing; if we happen to crash (the application or system) during the
+- * tests, we want to ensure that that information was recorded.  If we
+- * rely on the default lazy behavior of the registry, then we have no way of
+- * knowing whether our last settings into the registry were recorded before
+- * the process died.
+- */
+-
+-#include <windows.h>
+-#include <stdio.h>
+-#include "Trace.h"
+-#include "WindowsFlags.h"
+-#include "RegistryKey.h"
+-
+-/**
+- * Constructs a registry key object.  permissions can be any of the
+- * allowable values for keys, but are generally KEY_WRITE or
+- * KEY_QUERY_VALUE.  If the key does not yet exist in the registry, it
+- * will be created here.
+- * Note that we use HKEY_CURRENT_USER as the registry hierarchy; this is
+- * because we want any user (restricted or administrator) to be able to
+- * read and write these test results; storing the results in a more central
+- * location (e.g., HKEY_LOCAL_MACHINE) would prevent usage by users without
+- * permission to read and write in that registry hierarchy.
+- */
+-RegistryKey::RegistryKey(WCHAR *keyName, REGSAM permissions)
+-{
+-    hKey = NULL; // default value
+-    if (disableRegistry) {
+-        return;
+-    }
+-    DWORD disposition;
+-    DWORD ret = RegCreateKeyEx(HKEY_CURRENT_USER, keyName, 0, 0,
+-                               REG_OPTION_NON_VOLATILE, permissions,
+-                               NULL, &hKey, &disposition);
+-    if (ret != ERROR_SUCCESS) {
+-        PrintRegistryError(ret, "RegCreateKeyEx");
+-    }
+-}
+-
+-/**
+- * Destruction of the registry key object; this closes the key if
+- * if was opened.
+- */
+-RegistryKey::~RegistryKey()
+-{
+-    if (hKey) {
+-        RegCloseKey(hKey);
+-    }
+-}
+-
+-DWORD RegistryKey::EnumerateSubKeys(DWORD index, WCHAR *subKeyName,
+-                                    DWORD *buffSize)
+-{
+-    if (disableRegistry) {
+-        // truncate the enumeration
+-        return ERROR_NO_MORE_ITEMS;
+-    }
+-    FILETIME lastWriteTime;
+-    return RegEnumKeyEx(hKey, index, subKeyName, buffSize, NULL, NULL, NULL,
+-                        &lastWriteTime);
+-}
+-
+-/**
+- * Retrieves the value of the given parameter from the registry.
+- * If no such value exists in the registry, it returns the default
+- * value of J2D_ACCEL_UNVERIFIED.
+- */
+-int RegistryKey::GetIntValue(WCHAR *valueName)
+-{
+-    DWORD valueLength = 4;
+-    int regValue = J2D_ACCEL_UNVERIFIED;
+-    if (!disableRegistry) {
+-        RegQueryValueEx(hKey, valueName, NULL, NULL, (LPBYTE) & regValue,
+-                        & valueLength);
+-    }
+-    // QueryValue could fail if value does not exist, but in this
+-    // case regValue still equals the UNVERIFIED state, so no need to
+-    // catch failure.
+-    return regValue;
+-}
+-
+-/**
+- * Static method which opens a registry key with the given keyName and
+- * calls GetIntValue(valueName) on that key.
+- */
+-int RegistryKey::GetIntValue(WCHAR *keyName, WCHAR *valueName)
+-{
+-    RegistryKey key(keyName, KEY_QUERY_VALUE);
+-    return key.GetIntValue(valueName);
+-}
+-
+-/**
+- * Sets the specified value in the given key, returning TRUE for
+- * success and FALSE for failure (errors are not expected in
+- * this function and indicate some unknown problem with registry
+- * interaction).  The flush parameter indicates that we should force
+- * the registry to record this value after setting it (as opposed
+- * to allowing the registry to write the value lazily).
+- */
+-BOOL RegistryKey::SetIntValue(WCHAR *valueName, int regValue, BOOL flush)
+-{
+-    if (disableRegistry) {
+-        return TRUE;
+-    }
+-    if (!hKey) {
+-        PrintRegistryError(0, "Null hKey in SetIntValue");
+-        return FALSE;
+-    }
+-    DWORD valueLength = 4;
+-    DWORD ret = RegSetValueEx(hKey, valueName, 0, REG_DWORD, (LPBYTE)&regValue,
+-                        valueLength);
+-    if (ret != ERROR_SUCCESS) {
+-        PrintRegistryError(ret, "RegSetValueEx");
+-        return FALSE;
+-    }
+-    if (flush) {
+-        ret = RegFlushKey(hKey);
+-        if (ret != ERROR_SUCCESS) {
+-            PrintRegistryError(ret, "RegFlushKey");
+-            return FALSE;
+-        }
+-    }
+-    return TRUE;
+-}
+-
+-/**
+- * Static method which opens a registry key with the given keyName and
+- * calls SetIntValue(valueName, regValue, flush) on that key.
+- */
+-BOOL RegistryKey::SetIntValue(WCHAR *keyName, WCHAR *valueName,
+-                              int regValue, BOOL flush)
+-{
+-    RegistryKey key(keyName, KEY_WRITE);
+-    return key.SetIntValue(valueName, regValue, flush);
+-}
+-
+-/**
+- * Deletes the key with the given key name.  This is useful when using
+- * the -Dsun.java2d.accelReset flag, which resets the registry values
+- * to force the startup tests to be rerun and re-recorded.
+- *
+- */
+-void RegistryKey::DeleteKey(WCHAR *keyName)
+-{
+-    if (disableRegistry) {
+-        return;
+-    }
+-    // We should be able to do this with the ShDeleteKey() function, but
+-    // that is apparently not available on the ia64 sdk, so we revert back
+-    // to recursively deleting all subkeys until we can delete the key in
+-    // question
+-    DWORD buffSize = 1024;
+-    WCHAR subKeyName[1024];
+-    int subKeyIndex = 0;
+-    FILETIME lastWriteTime;
+-    HKEY hKey;
+-    DWORD ret = RegOpenKeyEx(HKEY_CURRENT_USER, keyName, 0, KEY_ALL_ACCESS,
+-                             &hKey);
+-    if (ret != ERROR_SUCCESS) {
+-        PrintRegistryError(ret, "DeleteKey, during RegOpenKeyEx");
+-    }
+-    while ((ret = RegEnumKeyEx(hKey, subKeyIndex, subKeyName, &buffSize,
+-                               NULL, NULL, NULL, &lastWriteTime)) ==
+-           ERROR_SUCCESS)
+-    {
+-        WCHAR subKeyBuffer[1024];
+-        swprintf(subKeyBuffer, L"%s\\%s", keyName, subKeyName);
+-        DeleteKey(subKeyBuffer);
+-        ++subKeyIndex;
+-        buffSize = 1024;
+-    }
+-    ret = RegCloseKey(hKey);
+-    if (ret != ERROR_SUCCESS) {
+-        PrintRegistryError(ret, "DeleteKey, during RegCloseKey");
+-    }
+-    ret = RegDeleteKey(HKEY_CURRENT_USER, keyName);
+-    if (ret != ERROR_SUCCESS) {
+-        PrintRegistryError(ret, "DeleteKey, during RegDeleteKey");
+-    }
+-}
+-
+-void RegistryKey::PrintValue(WCHAR *keyName, WCHAR *valueName,
+-                             WCHAR *msg)
+-{
+-    int value = GetIntValue(keyName, valueName);
+-    switch (value) {
+-    case J2D_ACCEL_UNVERIFIED:
+-        printf("%S: %s\n", msg, "UNVERIFIED");
+-        break;
+-    case J2D_ACCEL_TESTING:
+-        printf("%S: %s\n", msg, "TESTING (may indicate crash during test)");
+-        break;
+-    case J2D_ACCEL_FAILURE:
+-        printf("%S: %s\n", msg, "FAILURE");
+-        break;
+-    case J2D_ACCEL_SUCCESS:
+-        printf("%S: %s\n", msg, "SUCCESS");
+-        break;
+-    default:
+-        printf("No registry value for key, value %S, %S\n",
+-                keyName, valueName);
+-        break;
+-    }
+-}
+-
+-/**
+- * Debugging utility: prints information about errors received
+- * during interaction with the registry.
+- */
+-void RegistryKey::PrintRegistryError(LONG errNum, char *message)
+-{
+-    WCHAR errString[255];
+-    int numChars =  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, errNum, 0,
+-        errString, 255, NULL);
+-    if (numChars == 0) {
+-        J2dTraceLn1(J2D_TRACE_ERROR, "problem with formatmessage, err = %d\n",
+-                    GetLastError());
+-    }
+-    J2dTraceLn3(J2D_TRACE_ERROR, "problem with %s, errNum, string = %d, %S\n",
+-                message, errNum, errString);
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/RegistryKey.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/RegistryKey.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,72 +0,0 @@
+-/*
+- * Copyright (c) 2003, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-
+-#ifndef REGISTRYKEY_H
+-#define REGISTRYKEY_H
+-
+-
+-/**
+- * Meaning of the following variables:
+- * - UNVERIFIED: this value has not yet been tested (and needs to be)
+- * - TESTING: this value is currently being tested.  If we get this value
+- * from the registry, this indicates that we probably crashed while we were
+- * testing it last time, so we should disable the appropriate component.
+- * - FAILURE: this component failed testing, so it should be disabled
+- * - SUCCESS: this component succeeded, so we can enable it
+- */
+-#define J2D_ACCEL_UNVERIFIED   -1
+-#define J2D_ACCEL_TESTING      0
+-#define J2D_ACCEL_FAILURE      1
+-#define J2D_ACCEL_SUCCESS      2
+-
+-class RegistryKey {
+-public:
+-    RegistryKey(WCHAR *keyName, REGSAM permissions);
+-    ~RegistryKey();
+-
+-    DWORD EnumerateSubKeys(DWORD index, WCHAR *subKeyName,
+-                           DWORD *buffSize);
+-
+-    int  GetIntValue(WCHAR *valueName);
+-
+-    static int  GetIntValue(WCHAR *keyName, WCHAR *valueName);
+-
+-    BOOL SetIntValue(WCHAR *valueName, int regValue, BOOL flush);
+-
+-    static BOOL SetIntValue(WCHAR *keyName, WCHAR *valueName, int regValue,
+-                            BOOL flush);
+-
+-    static void DeleteKey(WCHAR *keyName);
+-
+-    static void PrintValue(WCHAR *keyName, WCHAR *valueName,
+-                           WCHAR *msg);
+-
+-private:
+-    HKEY hKey;
+-    static void PrintRegistryError(LONG errNum, char *message);
+-};
+-
+-#endif REGISTRYKEY_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/Win32OffScreenSurfaceData.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/Win32OffScreenSurfaceData.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,727 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "sun_java2d_windows_Win32OffScreenSurfaceData.h"
+-
+-#include "Win32SurfaceData.h"
+-
+-#include "Trace.h"
+-#include "Region.h"
+-#include "awt_Component.h"
+-#include "debug_trace.h"
+-#include "ddrawUtils.h"
+-#include "awt_Win32GraphicsDevice.h"
+-#include "D3DContext.h"
+-
+-#include "jni_util.h"
+-
+-/**
+- * This source file contains support code for loops using the
+- * SurfaceData interface to talk to a Win32 drawable from native
+- * code.
+- */
+-
+-JNIEXPORT void JNICALL
+-Win32OSSD_InitDC(JNIEnv *env, Win32SDOps *wsdo, HDC hdc,
+-                 jint type, jint *patrop,
+-                 jobject clip, jobject comp, jint color);
+-jfieldID ddSurfacePuntedID;
+-jmethodID markSurfaceLostMID;
+-static HBRUSH   nullbrush;
+-static HPEN     nullpen;
+-
+-extern BOOL ddVramForced;
+-
+-LockFunc Win32OSSD_Lock;
+-GetRasInfoFunc Win32OSSD_GetRasInfo;
+-UnlockFunc Win32OSSD_Unlock;
+-DisposeFunc Win32OSSD_Dispose;
+-GetDCFunc Win32OSSD_GetDC;
+-ReleaseDCFunc Win32OSSD_ReleaseDC;
+-InvalidateSDFunc Win32OSSD_InvalidateSD;
+-RestoreSurfaceFunc Win32OSSD_RestoreSurface;
+-
+-extern "C" {
+-
+-/*
+- * Class:     sun_java2d_windows_Win32OffScreenSurfaceData
+- * Method:    initIDs
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_initIDs(JNIEnv *env,
+-                                                          jclass wsd)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OffScreenSurfaceData_initIDs");
+-    ddSurfacePuntedID = env->GetFieldID(wsd, "ddSurfacePunted", "Z");
+-    markSurfaceLostMID = env->GetMethodID(wsd, "markSurfaceLost", "()V");
+-    nullbrush = (HBRUSH) ::GetStockObject(NULL_BRUSH);
+-    nullpen = (HPEN) ::GetStockObject(NULL_PEN);
+-}
+-
+-void Win32OSSD_DisableDD(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_DisableDD");
+-
+-    wsdo->RestoreSurface(env, wsdo);
+-    jobject sdObject = env->NewLocalRef(wsdo->sdOps.sdObject);
+-    if (sdObject != NULL) {
+-        J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                       "Win32OSSD_DisableDD: disabling DirectDraw"\
+-                       " for surface 0x%x", wsdo);
+-        JNU_CallMethodByName(env, NULL, sdObject, "disableDD", "()V");
+-        env->DeleteLocalRef(sdObject);
+-    }
+-}
+-
+-void disposeOSSD_WSDO(JNIEnv* env, Win32SDOps* wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "disposeOSSD_WSDO");
+-    if (wsdo->device != NULL) {
+-        wsdo->device->Release();
+-        wsdo->device = NULL;
+-    }
+-    delete wsdo->surfaceLock;
+-}
+-
+-jboolean initOSSD_WSDO(JNIEnv* env, Win32SDOps* wsdo, jint width, jint height,
+-                       jint screen, jint transparency)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "initOSSD_WSDO screen=%d", screen);
+-
+-    {
+-        Devices::InstanceAccess devices;
+-        wsdo->device = devices->GetDeviceReference(screen, FALSE);
+-    }
+-    if (wsdo->device == NULL) {
+-        J2dTraceLn1(J2D_TRACE_WARNING,
+-                    "initOSSD_WSDO: Incorrect "\
+-                    "screen number (screen=%d)", screen);
+-        wsdo->invalid = TRUE;
+-        return JNI_FALSE;
+-    }
+-
+-    wsdo->transparency = transparency;
+-    wsdo->w = width;
+-    wsdo->h = height;
+-    wsdo->surfacePuntData.disablePunts = TRUE;
+-    return JNI_TRUE;
+-}
+-
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_initSurface
+-    (JNIEnv *env,
+-     jobject sData,
+-     jint depth,
+-     jint width, jint height,
+-     jint screen,
+-     jboolean isVolatile,
+-     jint transparency)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, sData);
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_initSurface");
+-    jboolean status =
+-        initOSSD_WSDO(env, wsdo, width, height, screen, transparency);
+-
+-    if (status == JNI_FALSE || !DDCreateSurface(wsdo)) {
+-        J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                       "Win32OffScreenSurfaceData_initSurface: Error creating "\
+-                       "offscreen surface (transparency=%d), throwing IPE",
+-                       transparency);
+-        SurfaceData_ThrowInvalidPipeException(env,
+-                                              "Can't create offscreen surf");
+-        return;
+-    } else {
+-        wsdo->surfacePuntData.lpSurfaceVram = wsdo->lpSurface;
+-    }
+-    // 8 is somewhat arbitrary; we want the threshhold to represent a
+-    // significant portion of the surface area in order to avoid
+-    // punting for occasional, small reads
+-    wsdo->surfacePuntData.pixelsReadThreshold = width * height / 8;
+-    /**
+-     * Only enable our punt-to-sysmem-surface scheme for surfaces that are:
+-     *   - non-transparent (we really only intended this workaround for
+-     *     back buffers, which are usually opaque)
+-     *   - volatile (non-volatile images should not even get into the punt
+-     *     situation since they should not be a rendering destination, but
+-     *     we check this just to make sure)
+-     * And only do so if the user did not specify that punting be disabled
+-     */
+-    wsdo->surfacePuntData.disablePunts = (transparency != TR_OPAQUE) ||
+-                                         !isVolatile                 ||
+-                                         ddVramForced;
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32OffScreenSurfaceData
+- * Method:    restoreSurface
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_restoreSurface(JNIEnv *env,
+-                                                                 jobject sData)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO,
+-               "Win32OSSD_restoreSurface: restoring offscreen");
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, sData);
+-
+-    // Might have gotten here by some default action.  Make sure that the
+-    // surface is marked as lost before bothering to try to restore it.
+-    if (!wsdo->surfaceLost) {
+-        return;
+-    }
+-
+-    // Attempt to restore and lock the surface (to make sure the restore worked)
+-    if (DDRestoreSurface(wsdo) && DDLock(env, wsdo, NULL, NULL)) {
+-        DDUnlock(env, wsdo);
+-        wsdo->surfaceLost = FALSE;
+-    } else {
+-        // Failure - throw exception
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "Win32OSSD_restoreSurface: problems"\
+-                      " restoring, throwing IPE");
+-        SurfaceData_ThrowInvalidPipeException(env, "RestoreSurface failure");
+-    }
+-}
+-
+-
+-/*
+- * Class:     sun_java2d_windows_Win32OffScreenSurfaceData
+- * Method:    initOps
+- * Signature: (Ljava/lang/Object;)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_initOps(JNIEnv *env,
+-                                                          jobject wsd,
+-                                                          jint depth,
+-                                                          jint transparency)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OffScreenSurfaceData_initOps");
+-    Win32SDOps *wsdo =
+-        (Win32SDOps *)SurfaceData_InitOps(env, wsd, sizeof(Win32SDOps));
+-    wsdo->sdOps.Lock = Win32OSSD_Lock;
+-    wsdo->sdOps.GetRasInfo = Win32OSSD_GetRasInfo;
+-    wsdo->sdOps.Unlock = Win32OSSD_Unlock;
+-    wsdo->sdOps.Dispose = Win32OSSD_Dispose;
+-    wsdo->RestoreSurface = Win32OSSD_RestoreSurface;
+-    wsdo->GetDC = Win32OSSD_GetDC;
+-    wsdo->ReleaseDC = Win32OSSD_ReleaseDC;
+-    wsdo->InvalidateSD = Win32OSSD_InvalidateSD;
+-    wsdo->invalid = JNI_FALSE;
+-    wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-    wsdo->window = NULL;
+-    wsdo->backBufferCount = 0;
+-    wsdo->depth = depth;
+-    switch (depth) {
+-        case 8:
+-            wsdo->pixelStride = 1;
+-            break;
+-        case 15: //555
+-            wsdo->pixelStride = 2;
+-            wsdo->pixelMasks[0] = 0x1f << 10;
+-            wsdo->pixelMasks[1] = 0x1f << 5;
+-            wsdo->pixelMasks[2] = 0x1f;
+-            break;
+-        case 16: //565
+-            wsdo->pixelStride = 2;
+-            wsdo->pixelMasks[0] = 0x1f << 11;
+-            wsdo->pixelMasks[1] = 0x3f << 5;
+-            wsdo->pixelMasks[2] = 0x1f;
+-            break;
+-        case 24:
+-            wsdo->pixelStride = 3;
+-            break;
+-        case 32: //888
+-            wsdo->pixelStride = 4;
+-            wsdo->pixelMasks[0] = 0xff0000;
+-            wsdo->pixelMasks[1] = 0x00ff00;
+-            wsdo->pixelMasks[2] = 0x0000ff;
+-            break;
+-    }
+-    wsdo->surfaceLock = new CriticalSection();
+-    wsdo->surfaceLost = FALSE;
+-    wsdo->transparency = transparency;
+-    wsdo->surfacePuntData.usingDDSystem = FALSE;
+-    wsdo->surfacePuntData.lpSurfaceSystem = NULL;
+-    wsdo->surfacePuntData.lpSurfaceVram = NULL;
+-    wsdo->surfacePuntData.numBltsSinceRead = 0;
+-    wsdo->surfacePuntData.pixelsReadSinceBlt = 0;
+-    wsdo->surfacePuntData.numBltsThreshold = 2;
+-    wsdo->gdiOpPending = FALSE;
+-}
+-
+-JNIEXPORT Win32SDOps * JNICALL
+-Win32OffScreenSurfaceData_GetOps(JNIEnv *env, jobject sData)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "Win32OffScreenSurfaceData_GetOps");
+-    SurfaceDataOps *ops = SurfaceData_GetOps(env, sData);
+-    if (ops == NULL) {
+-        JNU_ThrowNullPointerException(env, "SurfaceData native ops");
+-    } else if (ops->Lock != Win32OSSD_Lock) {
+-        SurfaceData_ThrowInvalidPipeException(env, "not a Win32 SurfaceData");
+-        ops = NULL;
+-    }
+-    return (Win32SDOps *) ops;
+-}
+-
+-} /* extern "C" */
+-
+-void Win32OSSD_RestoreSurface(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_RestoreSurface");
+-    wsdo->surfaceLost = TRUE;
+-    jobject sdObject = env->NewLocalRef(wsdo->sdOps.sdObject);
+-    if (sdObject != NULL) {
+-        // markSurfaceLost will end up throwing an InvalidPipeException
+-        // if this surface belongs to a managed image.
+-        env->CallVoidMethod(sdObject, markSurfaceLostMID);
+-        env->DeleteLocalRef(sdObject);
+-    }
+-}
+-
+-void Win32OSSD_LockByDD(JNIEnv *env, Win32SDOps *wsdo, jint lockflags,
+-                        SurfaceDataRasInfo *pRasInfo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_LockByDD");
+-
+-    if ((lockflags & SD_LOCK_READ) &&
+-        !wsdo->surfacePuntData.disablePunts)
+-    {
+-        wsdo->surfacePuntData.numBltsSinceRead = 0;
+-        if (!wsdo->surfacePuntData.usingDDSystem) {
+-            int w = pRasInfo->bounds.x2 - pRasInfo->bounds.x1;
+-            int h = pRasInfo->bounds.y2 - pRasInfo->bounds.y1;
+-            wsdo->surfacePuntData.pixelsReadSinceBlt += w * h;
+-            // Note that basing this decision on the bounds is somewhat
+-            // incorrect because locks of type FASTEST will simply send
+-            // in bounds that equal the area of the entire surface.
+-            // To do this correctly, we would need to return
+-            // SLOWLOCK and recalculate the punt data in GetRasInfo()
+-            if (wsdo->surfacePuntData.pixelsReadSinceBlt >
+-                wsdo->surfacePuntData.pixelsReadThreshold)
+-            {
+-                // Create the system surface if it doesn't exist
+-                if (!wsdo->surfacePuntData.lpSurfaceSystem) {
+-                    wsdo->surfacePuntData.lpSurfaceSystem =
+-                        wsdo->ddInstance->ddObject->CreateDDOffScreenSurface(
+-                        wsdo->w, wsdo->h, wsdo->depth,
+-                        wsdo->transparency, DDSCAPS_SYSTEMMEMORY);
+-                    if (wsdo->surfacePuntData.lpSurfaceSystem) {
+-                        // 4941350: Double-check that the surface we created
+-                        // matches the depth expected.
+-                        int sysmemDepth =
+-                            wsdo->surfacePuntData.lpSurfaceSystem->GetSurfaceDepth();
+-                        if (!DDSurfaceDepthsCompatible(wsdo->depth, sysmemDepth)) {
+-                            // There is clearly a problem here; release
+-                            // the punting surface
+-                            J2dTraceLn2(J2D_TRACE_WARNING,
+-                                        "Win32OSSD_LockByDD: Punting error: "\
+-                                        "wsdo->depth=%d memory surface depth=%d",
+-                                        wsdo->depth, sysmemDepth);
+-                            DDReleaseSurfaceMemory(wsdo->surfacePuntData.
+-                                lpSurfaceSystem);
+-                            wsdo->surfacePuntData.lpSurfaceSystem = NULL;
+-                        } else {
+-                            DDCOLORKEY ddck;
+-                            HRESULT ddResult =
+-                                wsdo->surfacePuntData.lpSurfaceVram->GetColorKey(
+-                                DDCKEY_SRCBLT, &ddck);
+-                            if (ddResult == DD_OK) {
+-                                // Vram surface has colorkey - use same colorkey on sys
+-                                ddResult =
+-                                    wsdo->surfacePuntData.lpSurfaceSystem->SetColorKey(
+-                                    DDCKEY_SRCBLT, &ddck);
+-                            }
+-                        }
+-                    }
+-                }
+-                // Assuming no errors in system creation, copy contents
+-                if (wsdo->surfacePuntData.lpSurfaceSystem) {
+-                    if (wsdo->surfacePuntData.lpSurfaceSystem->Blt(NULL,
+-                            wsdo->surfacePuntData.lpSurfaceVram, NULL,
+-                            DDBLT_WAIT, NULL) == DD_OK)
+-                    {
+-                        J2dTraceLn2(J2D_TRACE_INFO,
+-                                    "Win32OSSD_LockByDD: punting VRAM to sys: "\
+-                                    "0x%x -> 0x%x",
+-                                    wsdo->surfacePuntData.lpSurfaceVram,
+-                                    wsdo->surfacePuntData.lpSurfaceSystem);
+-                        wsdo->lpSurface = wsdo->surfacePuntData.lpSurfaceSystem;
+-                        wsdo->surfacePuntData.usingDDSystem = TRUE;
+-                        // Notify the Java level that this surface has
+-                        // been punted to avoid performance penalties from
+-                        // copying from VRAM cached versions of other images
+-                        // when we should use system memory versions instead.
+-                        jobject sdObject =
+-                            env->NewLocalRef(wsdo->sdOps.sdObject);
+-                        if (sdObject) {
+-                            // Only bother with this optimization if the
+-                            // reference is still valid
+-                            env->SetBooleanField(sdObject, ddSurfacePuntedID,
+-                                                 JNI_TRUE);
+-                            env->DeleteLocalRef(sdObject);
+-                        }
+-                    }
+-                }
+-            }
+-        }
+-    }
+-
+-    if (!DDLock(env, wsdo, NULL, pRasInfo))
+-        return;
+-
+-    wsdo->lockType = WIN32SD_LOCK_BY_DDRAW;
+-}
+-
+-
+-jint Win32OSSD_Lock(JNIEnv *env,
+-                    SurfaceDataOps *ops,
+-                    SurfaceDataRasInfo *pRasInfo,
+-                    jint lockflags)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-    J2dTraceLn1(J2D_TRACE_INFO, "Win32OSSD_Lock: lockflags=0x%x",
+-                lockflags);
+-    wsdo->surfaceLock->Enter();
+-    if (wsdo->invalid) {
+-        wsdo->surfaceLock->Leave();
+-        SurfaceData_ThrowInvalidPipeException(env, "invalid sd");
+-        return SD_FAILURE;
+-    }
+-
+-    if (wsdo->lockType != WIN32SD_LOCK_UNLOCKED) {
+-        wsdo->surfaceLock->Leave();
+-        JNU_ThrowInternalError(env, "Win32OSSD_Lock cannot nest locks");
+-        return SD_FAILURE;
+-    }
+-
+-    if (lockflags & SD_LOCK_RD_WR) {
+-        if (pRasInfo->bounds.x1 < 0) pRasInfo->bounds.x1 = 0;
+-        if (pRasInfo->bounds.y1 < 0) pRasInfo->bounds.y1 = 0;
+-        if (pRasInfo->bounds.x2 > wsdo->w) pRasInfo->bounds.x2 = wsdo->w;
+-        if (pRasInfo->bounds.y2 > wsdo->h) pRasInfo->bounds.y2 = wsdo->h;
+-        if (DDUseDDraw(wsdo)) {
+-            Win32OSSD_LockByDD(env, wsdo, lockflags, pRasInfo);
+-        }
+-        if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-            wsdo->lockFlags = lockflags;
+-            wsdo->surfaceLock->Leave();
+-            return SD_FAILURE;
+-        }
+-    } else {
+-        // They didn't ask for a lock, so they don't get one
+-        wsdo->lockType = WIN32SD_LOCK_BY_NULL;
+-    }
+-    wsdo->lockFlags = lockflags;
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "Win32OSSD_Lock: flags=0x%x type=%d",
+-                wsdo->lockFlags, wsdo->lockType);
+-    return 0;
+-}
+-
+-void Win32OSSD_GetRasInfo(JNIEnv *env,
+-                          SurfaceDataOps *ops,
+-                          SurfaceDataRasInfo *pRasInfo)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-    jint lockflags = wsdo->lockFlags;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_GetRasInfo");
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "Win32OSSD_GetRasInfo: lockType=UNLOCKED");
+-        memset(pRasInfo, 0, sizeof(*pRasInfo));
+-        return;
+-    }
+-
+-    if (wsdo->lockType != WIN32SD_LOCK_BY_DDRAW) {
+-        /* They didn't lock for anything - we won't give them anything */
+-        pRasInfo->rasBase = NULL;
+-        pRasInfo->pixelStride = 0;
+-        pRasInfo->pixelBitOffset = 0;
+-        pRasInfo->scanStride = 0;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_LUT) {
+-        pRasInfo->lutBase =
+-            (long *) wsdo->device->GetSystemPaletteEntries();
+-        pRasInfo->lutSize = 256;
+-    } else {
+-        pRasInfo->lutBase = NULL;
+-        pRasInfo->lutSize = 0;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_INVCOLOR) {
+-        pRasInfo->invColorTable = wsdo->device->GetSystemInverseLUT();
+-        ColorData *cData = wsdo->device->GetColorData();
+-        pRasInfo->redErrTable = cData->img_oda_red;
+-        pRasInfo->grnErrTable = cData->img_oda_green;
+-        pRasInfo->bluErrTable = cData->img_oda_blue;
+-    } else {
+-        pRasInfo->invColorTable = NULL;
+-        pRasInfo->redErrTable = NULL;
+-        pRasInfo->grnErrTable = NULL;
+-        pRasInfo->bluErrTable = NULL;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_INVGRAY) {
+-        pRasInfo->invGrayTable =
+-            wsdo->device->GetColorData()->pGrayInverseLutData;
+-    } else {
+-        pRasInfo->invGrayTable = NULL;
+-    }
+-}
+-
+-void Win32OSSD_Unlock(JNIEnv *env,
+-                      SurfaceDataOps *ops,
+-                      SurfaceDataRasInfo *pRasInfo)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_Unlock");
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-        JNU_ThrowInternalError(env, "Unmatched unlock on Win32OS SurfaceData");
+-        return;
+-    }
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_BY_DDRAW) {
+-        DDUnlock(env, wsdo);
+-    }
+-    wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-    wsdo->surfaceLock->Leave();
+-}
+-
+-static void
+-GetClipFromRegion(JNIEnv *env, jobject clip, RECT &r)
+-{
+-    SurfaceDataBounds bounds;
+-    Region_GetBounds(env, clip, &bounds);
+-    r.left = bounds.x1;
+-    r.top = bounds.y1;
+-    r.right = bounds.x2;
+-    r.bottom = bounds.y2;
+-}
+-
+-/*
+- * REMIND: This mechanism is just a prototype of a way to manage a
+- * small cache of DC objects.  It is incomplete in the following ways:
+- *
+- * - It is not thread-safe!  It needs appropriate locking and release calls
+- *   (perhaps the AutoDC mechanisms from Kestrel)
+- * - It does hardly any error checking (What if GetDCEx returns NULL?)
+- * - It cannot handle printer DCs, their resolution, or Embedded DCs
+- * - It always selects a clip region, even if the clip is the window bounds
+- * - There is very little error checking (null DC returned from GetDCEx, etc)
+- * - It should probably "live" in the native SurfaceData object to allow
+- *   alternate implementations for printing and embedding
+- * - It doesn't handle XOR
+- * - It caches the client bounds to determine if clipping is really needed
+- *   (no way to invalidate the cached bounds and there is probably a better
+- *    way to manage clip validation in any case)
+- */
+-
+-extern COLORREF CheckGrayColor(Win32SDOps *wsdo, int c);
+-HDC Win32OSSD_GetDC(JNIEnv *env, Win32SDOps *wsdo,
+-                    jint type, jint *patrop,
+-                    jobject clip, jobject comp, jint color)
+-{
+-    // REMIND: Should lock around all accesses to "last<mumble>"
+-    J2dTraceLn1(J2D_TRACE_INFO, "Win32OSSD_GetDC: color=0x%x", color);
+-
+-    if (wsdo->invalid) {
+-        SurfaceData_ThrowInvalidPipeException(env, "invalid sd");
+-        return (HDC) NULL;
+-    }
+-
+-    HDC hdc;
+-    HRESULT res = wsdo->lpSurface->GetDC(&hdc);
+-    if (res != DD_OK) {
+-        if (res == DDERR_CANTCREATEDC) {
+-            // this may be a manifestations of an unrecoverable error caused by
+-            // address space exaustion when heap size is too large
+-            Win32OSSD_DisableDD(env, wsdo);
+-        }
+-        // Note: DDrawSurface::GetDC() releases its surfaceLock
+-        // when it returns an error here, so do not call ReleaseDC()
+-        // to force the release of surfaceLock
+-        SurfaceData_ThrowInvalidPipeException(env, "invalid sd");
+-        return (HDC) NULL;
+-    }
+-
+-    // Initialize the DC
+-    Win32OSSD_InitDC(env, wsdo, hdc, type, patrop, clip, comp, color);
+-    return hdc;
+-}
+-
+-JNIEXPORT void JNICALL
+-Win32OSSD_InitDC(JNIEnv *env, Win32SDOps *wsdo, HDC hdc,
+-                 jint type, jint *patrop,
+-                 jobject clip, jobject comp, jint color)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_InitDC");
+-    // Initialize DC.  Assume nothing about the DC since ddraw DC's are
+-    // created from scratch every time
+-
+-    // Since we can't get here in XOR mode (ISCOPY only), we will ignore the
+-    // comp and force the patrop to PATCOPY if necessary.
+-    if (patrop != NULL) {
+-        *patrop = PATCOPY;
+-    }
+-
+-    if (clip == NULL) {
+-        ::SelectClipRgn(hdc, (HRGN) NULL);
+-    } else {
+-        RECT r;
+-        GetClipFromRegion(env, clip, r);
+-        // Only bother setting clip if it's smaller than our window
+-        if ((r.left > 0) || (r.top > 0) ||
+-            (r.right < wsdo->w) || (r.bottom < wsdo->h)) {
+-            J2dTraceLn4(J2D_TRACE_VERBOSE,
+-                        "Win32OSSD_InitDC: clipRect "\
+-                        "l=%-4d t=%-4d r=%-4d b=%-4d",
+-                        r.left, r.top, r.right, r.bottom);
+-            //Make the window-relative rect a client-relative one for Windows
+-            ::OffsetRect(&r, -wsdo->insets.left, -wsdo->insets.top);
+-            if (r.left > r.right) r.left = r.right;
+-            if (r.top > r.bottom) r.top = r.bottom;
+-            HRGN hrgn = ::CreateRectRgnIndirect(&r);
+-            ::SelectClipRgn(hdc, hrgn);
+-            ::DeleteObject(hrgn);
+-        }
+-    }
+-    if (type & BRUSH) {
+-        if (wsdo->brushclr != color || (wsdo->brush == NULL)) {
+-            if (wsdo->brush != NULL) {
+-                wsdo->brush->Release();
+-            }
+-            wsdo->brush = AwtBrush::Get(CheckGrayColor(wsdo, color));
+-            wsdo->brushclr = color;
+-        }
+-        // always select a new brush - the DC is new every time
+-        ::SelectObject(hdc, wsdo->brush->GetHandle());
+-    } else if (type & NOBRUSH) {
+-        ::SelectObject(hdc, nullbrush);
+-    }
+-    if (type & PEN) {
+-        if (wsdo->penclr != color || (wsdo->pen == NULL)) {
+-            if (wsdo->pen != NULL) {
+-                wsdo->pen->Release();
+-            }
+-            wsdo->pen = AwtPen::Get(CheckGrayColor(wsdo, color));
+-            wsdo->penclr = color;
+-        }
+-        // always select a new pen - the DC is new every time
+-        ::SelectObject(hdc, wsdo->pen->GetHandle());
+-    } else if (type & NOPEN) {
+-        ::SelectObject(hdc, nullpen);
+-    }
+-}
+-
+-void Win32OSSD_ReleaseDC(JNIEnv *env, Win32SDOps *wsdo, HDC hdc)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_ReleaseDC");
+-    wsdo->lpSurface->ReleaseDC(hdc);
+-    wsdo->gdiOpPending = TRUE;
+-}
+-
+-void Win32OSSD_InvalidateSD(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OSSD_InvalidateSD");
+-    wsdo->invalid = JNI_TRUE;
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32OffScreenSurfaceData
+- * Method:    invalidateSD
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_nativeInvalidate(JNIEnv *env,
+-                                                                   jobject wsd)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OffScreenSurfaceData_nativeInvalidate");
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, wsd);
+-    if (wsdo != NULL) {
+-        wsdo->InvalidateSD(env, wsdo);
+-    }
+-}
+-
+-
+-/*
+- * Method:    Win32OSSD_Dispose
+- */
+-void
+-Win32OSSD_Dispose(JNIEnv *env, SurfaceDataOps *ops)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps*)ops;
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "Win32OSSD_Dispose vram=0%x sysm=0%x",
+-                wsdo->surfacePuntData.lpSurfaceVram,
+-                wsdo->surfacePuntData.lpSurfaceSystem);
+-    // REMIND: Need to delete a lot of other things here as well, starting
+-    // with the offscreen surface
+-
+-    // ops is assumed non-null as it is checked in SurfaceData_DisposeOps
+-    if (wsdo->surfacePuntData.lpSurfaceVram) {
+-        delete wsdo->surfacePuntData.lpSurfaceVram;
+-    }
+-    if (wsdo->surfacePuntData.lpSurfaceSystem) {
+-        delete wsdo->surfacePuntData.lpSurfaceSystem;
+-    }
+-    if (wsdo->brush != NULL) {
+-        wsdo->brush->Release();
+-    }
+-    if (wsdo->pen != NULL) {
+-        wsdo->pen->Release();
+-    }
+-    wsdo->lpSurface = NULL;
+-    disposeOSSD_WSDO(env, wsdo);
+-}
+-
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_setTransparentPixel(JNIEnv *env,
+-                                                                      jobject wsd,
+-                                                                      jint pixel)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, wsd);
+-    DDSetColorKey(env, wsdo, pixel);
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32OffScreenSurfaceData
+- * Method:    flush
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32OffScreenSurfaceData_flush(JNIEnv *env,
+-                                                        jobject wsd)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32OffScreenSurfaceData_flush");
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, wsd);
+-    if (wsdo != NULL) {
+-        // Note that wsdo may be null if there was some error during
+-        // construction, such as a surface depth we could not handle
+-        DDReleaseSurfaceMemory(wsdo->surfacePuntData.lpSurfaceSystem);
+-        DDReleaseSurfaceMemory(wsdo->surfacePuntData.lpSurfaceVram);
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/Win32SurfaceData.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/Win32SurfaceData.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1344 +0,0 @@
+-/*
+- * Copyright (c) 1999, 2007, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "sun_java2d_windows_Win32SurfaceData.h"
+-
+-#include "Win32SurfaceData.h"
+-#include "GraphicsPrimitiveMgr.h"
+-#include "Region.h"
+-#include "Disposer.h"
+-#include "WindowsFlags.h"
+-#include "awt_Component.h"
+-#include "ddrawUtils.h"
+-#include "awt_Palette.h"
+-#include "awt_Win32GraphicsDevice.h"
+-#include "gdefs.h"
+-#include "D3DContext.h"
+-#include "Trace.h"
+-#include "Devices.h"
+-
+-#include "jni_util.h"
+-
+-static LockFunc Win32SD_Lock;
+-static GetRasInfoFunc Win32SD_GetRasInfo;
+-static UnlockFunc Win32SD_Unlock;
+-static DisposeFunc Win32SD_Dispose;
+-static SetupFunc Win32SD_Setup;
+-static GetDCFunc Win32SD_GetDC;
+-static ReleaseDCFunc Win32SD_ReleaseDC;
+-static InvalidateSDFunc Win32SD_InvalidateSD;
+-
+-static HBRUSH   nullbrush;
+-static HPEN     nullpen;
+-
+-static jclass xorCompClass;
+-
+-static jboolean beingShutdown = JNI_FALSE;
+-extern BOOL isFullScreen; // TODO/REMIND : Multi-montior fullscreen support
+-extern HWND hwndFullScreen;
+-extern int gBackBufferCount;
+-extern BOOL ddrawParamsChanged;
+-extern int currNumDevices;
+-extern CriticalSection windowMoveLock;
+-
+-extern "C"
+-{
+-GeneralDisposeFunc DisposeThreadGraphicsInfo;
+-jobject JNI_GetCurrentThread(JNIEnv *env);
+-int threadInfoIndex = TLS_OUT_OF_INDEXES;
+-
+-static jclass threadClass = NULL;
+-static jmethodID currentThreadMethodID = NULL;
+-
+-void SetupThreadGraphicsInfo(JNIEnv *env, Win32SDOps *wsdo) {
+-    J2dTraceLn(J2D_TRACE_INFO, "SetupThreadGraphicsInfo");
+-
+-    // REMIND: handle error when creation fails
+-    ThreadGraphicsInfo *info =
+-        (ThreadGraphicsInfo*)TlsGetValue(threadInfoIndex);
+-    if (info == NULL) {
+-        info = new ThreadGraphicsInfo;
+-        ZeroMemory(info, sizeof(ThreadGraphicsInfo));
+-        TlsSetValue(threadInfoIndex, (LPVOID)info);
+-        J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                    "  current batch limit for for thread 0x%x is %d",
+-                     GetCurrentThreadId(), ::GdiGetBatchLimit());
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  setting to the limit to 1");
+-        // Fix for bug 4374079
+-        ::GdiSetBatchLimit(1);
+-
+-        Disposer_AddRecord(env, JNI_GetCurrentThread(env),
+-                           DisposeThreadGraphicsInfo,
+-                           ptr_to_jlong(info));
+-    }
+-
+-    HDC oldhDC = info->hDC;
+-    // the hDC is NULL for offscreen surfaces - we don't store it
+-    // in TLS as it must be created new every time.
+-    if (((oldhDC == NULL) && wsdo->window != NULL) || (info->wsdo != wsdo)) {
+-
+-        // Init graphics state, either because this is our first time
+-        // using it in this thread or because this thread is now
+-        // dealing with a different window than it was last time.
+-
+-        // Release cached DC. We use deferred DC releasing mechanism because
+-        // the DC is associated with cached wsdo and component peer,
+-        // which may've been disposed by this time, and we have
+-        // no means of checking against it.
+-        if (oldhDC != NULL) {
+-            MoveDCToPassiveList(oldhDC);
+-            info->hDC = NULL;
+-        }
+-
+-        if (wsdo->window != NULL){
+-            HDC hDC;
+-            // This is a window surface
+-            // First, init the HDC object
+-            AwtComponent *comp = Win32SurfaceData_GetComp(env, wsdo);
+-            if (comp == NULL) {
+-                return;
+-            }
+-            hDC = comp->GetDCFromComponent();
+-            if (hDC != NULL) {
+-                ::SelectObject(hDC, nullbrush);
+-                ::SelectObject(hDC, nullpen);
+-                ::SelectClipRgn(hDC, (HRGN) NULL);
+-                ::SetROP2(hDC, R2_COPYPEN);
+-                wsdo->device->SelectPalette(hDC);
+-                // Note that on NT4 we don't need to do a realize here: the
+-                // palette-sharing takes care of color issues for us.  But
+-                // on win98 if we don't realize a DC's palette, that
+-                // palette does not appear to have correct access to the
+-                // logical->system mapping.
+-                wsdo->device->RealizePalette(hDC);
+-
+-                // Second, init the rest of the graphics state
+-                ::GetClientRect(wsdo->window, &info->bounds);
+-                // Make window-relative from client-relative
+-                ::OffsetRect(&info->bounds, wsdo->insets.left, wsdo->insets.top);
+-                //Likewise, translate GDI calls from client-relative to window-relative
+-                ::OffsetViewportOrgEx(hDC, -wsdo->insets.left, -wsdo->insets.top, NULL);
+-            }
+-
+-            // Finally, set these new values in the info for this thread
+-            info->hDC = hDC;
+-        }
+-
+-        // cached brush and pen are not associated with any DC, and can be
+-        // reused, but have to set type to 0 to indicate that no pen/brush
+-        // were set to the new hdc
+-        info->type = 0;
+-
+-        if (info->clip != NULL) {
+-            env->DeleteWeakGlobalRef(info->clip);
+-        }
+-        info->clip = NULL;
+-
+-        if (info->comp != NULL) {
+-            env->DeleteWeakGlobalRef(info->comp);
+-        }
+-        info->comp = NULL;
+-
+-        info->xorcolor = 0;
+-        info->patrop = PATCOPY;
+-
+-        info->wsdo = wsdo;
+-    }
+-}
+-
+-/**
+- * Releases native data stored in Thread local storage.
+- * Called by the Disposer when the associated thread dies.
+- */
+-void DisposeThreadGraphicsInfo(JNIEnv *env, jlong tgi) {
+-    J2dTraceLn(J2D_TRACE_INFO, "DisposeThreadGraphicsInfo");
+-    ThreadGraphicsInfo *info = (ThreadGraphicsInfo*)jlong_to_ptr(tgi);
+-    if (info != NULL) {
+-        if (info->hDC != NULL) {
+-            // move the DC from the active dcs list to
+-            // the passive dc list to be released later
+-            MoveDCToPassiveList(info->hDC);
+-        }
+-
+-        if (info->clip != NULL) {
+-            env->DeleteWeakGlobalRef(info->clip);
+-        }
+-        if (info->comp != NULL) {
+-            env->DeleteWeakGlobalRef(info->comp);
+-        }
+-
+-        if (info->brush != NULL) {
+-            info->brush->Release();
+-        }
+-        if (info->pen != NULL) {
+-            info->pen->Release();
+-        }
+-
+-        delete info;
+-    }
+-}
+-
+-/**
+- * Returns current Thread object.
+- */
+-jobject
+-JNI_GetCurrentThread(JNIEnv *env) {
+-    return env->CallStaticObjectMethod(threadClass, currentThreadMethodID);
+-} /* JNI_GetCurrentThread() */
+-
+-/**
+- * Return the data associated with this thread.
+- * NOTE: This function assumes that the SetupThreadGraphicsInfo()
+- * function has already been called for this situation (thread,
+- * window, etc.), so we can assume that the thread info contains
+- * a valid hDC.  This should usually be the case since Win32SD_Setup
+- * is called as part of the GetOps() process.
+- */
+-ThreadGraphicsInfo *GetThreadGraphicsInfo(JNIEnv *env,
+-                                          Win32SDOps *wsdo) {
+-    return (ThreadGraphicsInfo*)TlsGetValue(threadInfoIndex);
+-}
+-
+-__inline HDC GetThreadDC(JNIEnv *env, Win32SDOps *wsdo) {
+-    ThreadGraphicsInfo *info =
+-        (ThreadGraphicsInfo *)GetThreadGraphicsInfo(env, wsdo);
+-    if (!info) {
+-        return (HDC) NULL;
+-    }
+-    return info->hDC;
+-}
+-
+-} // extern "C"
+-
+-/**
+- * This source file contains support code for loops using the
+- * SurfaceData interface to talk to a Win32 drawable from native
+- * code.
+- */
+-
+-static BOOL Win32SD_CheckMonitorArea(Win32SDOps *wsdo,
+-                                     SurfaceDataBounds *bounds,
+-                                     HDC hDC)
+-{
+-    HWND hW = wsdo->window;
+-    BOOL retCode = TRUE;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_CheckMonitorArea");
+-    int numScreens;
+-    {
+-        Devices::InstanceAccess devices;
+-        numScreens = devices->GetNumDevices();
+-    }
+-    if( numScreens > 1 ) {
+-
+-        MONITOR_INFO *miInfo;
+-        RECT rSect ={0,0,0,0};
+-        RECT rView ={bounds->x1, bounds->y1, bounds->x2, bounds->y2};
+-        retCode = FALSE;
+-
+-        miInfo = wsdo->device->GetMonitorInfo();
+-
+-        POINT ptOrig = {0, 0};
+-        ::ClientToScreen(hW, &ptOrig);
+-        ::OffsetRect(&rView,
+-            (ptOrig.x), (ptOrig.y));
+-
+-        ::IntersectRect(&rSect,&rView,&(miInfo->rMonitor));
+-
+-        if( FALSE == ::IsRectEmpty(&rSect) ) {
+-            if( TRUE == ::EqualRect(&rSect,&rView) ) {
+-                retCode = TRUE;
+-            }
+-        }
+-    }
+-    return retCode;
+-}
+-
+-extern "C" {
+-
+-void
+-initThreadInfoIndex()
+-{
+-    if (threadInfoIndex == TLS_OUT_OF_INDEXES) {
+-        threadInfoIndex = TlsAlloc();
+-    }
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32SurfaceData
+- * Method:    initIDs
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32SurfaceData_initIDs(JNIEnv *env, jclass wsd,
+-                                                 jclass XORComp)
+-{
+-    jclass tc;
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SurfaceData_initIDs");
+-    nullbrush = (HBRUSH) ::GetStockObject(NULL_BRUSH);
+-    nullpen = (HPEN) ::GetStockObject(NULL_PEN);
+-
+-    initThreadInfoIndex();
+-
+-    xorCompClass = (jclass)env->NewGlobalRef(XORComp);
+-
+-    tc = env->FindClass("java/lang/Thread");
+-    DASSERT(tc != NULL);
+-    threadClass = (jclass)env->NewGlobalRef(tc);
+-    DASSERT(threadClass != NULL);
+-    currentThreadMethodID =
+-        env->GetStaticMethodID(threadClass,
+-                               "currentThread",  "()Ljava/lang/Thread;");
+-    DASSERT(currentThreadMethodID != NULL);
+-}
+-
+-void Win32SD_RestoreSurface(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_RestoreSurface: restoring primary");
+-
+-    if (!DDRestoreSurface(wsdo)) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "Win32SD_RestoreSurface: problems restoring primary");
+-    } else {
+-        // Force repaint of the window when we restore the surface
+-        ::InvalidateRect(wsdo->window, NULL, FALSE);
+-    }
+-}
+-
+-
+-/*
+- * Class:     sun_java2d_windows_Win32SurfaceData
+- * Method:    initOps
+- * Signature: (Ljava/lang/Object;IIIIII)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32SurfaceData_initOps(JNIEnv *env, jobject wsd,
+-                                                 jobject peer, jint depth,
+-                                                 jint redMask, jint greenMask,
+-                                                 jint blueMask, jint backBufferCount,
+-                                                 jint screen)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SurfaceData_initOps");
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_InitOps(env, wsd, sizeof(Win32SDOps));
+-    wsdo->sdOps.Lock = Win32SD_Lock;
+-    wsdo->sdOps.GetRasInfo = Win32SD_GetRasInfo;
+-    wsdo->sdOps.Unlock = Win32SD_Unlock;
+-    wsdo->sdOps.Dispose = Win32SD_Dispose;
+-    wsdo->sdOps.Setup = Win32SD_Setup;
+-    wsdo->RestoreSurface = Win32SD_RestoreSurface;
+-    wsdo->GetDC = Win32SD_GetDC;
+-    wsdo->ReleaseDC = Win32SD_ReleaseDC;
+-    wsdo->InvalidateSD = Win32SD_InvalidateSD;
+-    wsdo->invalid = JNI_FALSE;
+-    wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-    wsdo->peer = env->NewWeakGlobalRef(peer);
+-    wsdo->depth = depth;
+-    wsdo->pixelMasks[0] = redMask;
+-    wsdo->pixelMasks[1] = greenMask;
+-    wsdo->pixelMasks[2] = blueMask;
+-    // Init the DIB pixelStride and pixel masks according to
+-    // the pixel depth. In the 8-bit case, there are no
+-    // masks as a palette DIB is used instead. Likewise
+-    // in the 24-bit case, Windows doesn't expect the masks
+-    switch (depth) {
+-        case 8:
+-            wsdo->pixelStride = 1;
+-            break;
+-        case 15: //555
+-            wsdo->pixelStride = 2;
+-            break;
+-        case 16: //565
+-            wsdo->pixelStride = 2;
+-            break;
+-        case 24:
+-            wsdo->pixelStride = 3;
+-            break;
+-        case 32: //888
+-            wsdo->pixelStride = 4;
+-            break;
+-    }
+-    // Win32SurfaceData_GetWindow will throw NullPointerException
+-    // if wsdo->window is NULL
+-    wsdo->window = Win32SurfaceData_GetWindow(env, wsdo);
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "  wsdo=0x%x wsdo->window=0x%x",
+-                wsdo, wsdo->window);
+-
+-    wsdo->backBufferCount = backBufferCount;
+-    {
+-        Devices::InstanceAccess devices;
+-        wsdo->device = devices->GetDeviceReference(screen, FALSE);
+-    }
+-    if (wsdo->device == NULL ||
+-        !DDSurfaceDepthsCompatible(depth, wsdo->device->GetBitDepth()))
+-    {
+-        if (wsdo->device != NULL) {
+-            J2dTraceLn2(J2D_TRACE_WARNING,
+-                        "Win32SurfaceData_initOps: Surface depth mismatch: "\
+-                        "wsdo->depth=%d device depth=%d. Surface invalidated.",
+-                        wsdo->depth, wsdo->device->GetBitDepth());
+-        } else {
+-            J2dTraceLn1(J2D_TRACE_WARNING,
+-                        "Win32SurfaceData_initOps: Incorrect "\
+-                        "screen number (screen=%d). Surface invalidated.",
+-                        screen);
+-        }
+-
+-        wsdo->invalid = JNI_TRUE;
+-        wsdo->lpSurface = NULL;
+-        wsdo->ddInstance = NULL;
+-
+-    } else if (wsdo->window != NULL &&
+-               DDCanCreatePrimary((HMONITOR)wsdo->device->GetMonitor()))
+-    {
+-        // Create the surface on the windows event thread to avoid
+-        // problems with fullscreen window creation and manipulation
+-        if (!((BOOL)::SendMessage(wsdo->window, WM_AWT_DD_CREATE_SURFACE,
+-                                  (WPARAM)wsdo, NULL)))
+-        {
+-            // We only get here if the device can handle ddraw but
+-            // cannot create a primary.  This can happen if, for example,
+-            // another application has exclusive access to the device.
+-            // In this situation, we null-out the ddraw-related pointers
+-            // which ends up noop'ing ddraw operations on this surface
+-            // (our window is effectively not visible in this situation,
+-            // so noops are fine).
+-            wsdo->lpSurface = NULL;
+-            wsdo->ddInstance = NULL;
+-        }
+-    }
+-    else {
+-        wsdo->lpSurface = NULL;
+-        wsdo->ddInstance = NULL;
+-    }
+-    wsdo->surfaceLock = new CriticalSection();
+-    wsdo->transparency = TR_OPAQUE;
+-    wsdo->bitmap = NULL;
+-    wsdo->bmdc = NULL;
+-    wsdo->bmCopyToScreen = FALSE;
+-    wsdo->gdiOpPending = FALSE;
+-}
+-
+-JNIEXPORT Win32SDOps * JNICALL
+-Win32SurfaceData_GetOps(JNIEnv *env, jobject sData)
+-{
+-    SurfaceDataOps *ops = SurfaceData_GetOps(env, sData);
+-    // REMIND: There was originally a condition check here to make sure
+-    // that we were really dealing with a Win32SurfaceData object, but
+-    // it did not allow for the existence of other win32-accelerated
+-    // surface data objects (e.g., Win32OffScreenSurfaceData).  I've
+-    // removed the check for now, but we should replace it with another,
+-    // more general check against Win32-related surfaces.
+-    return (Win32SDOps *) ops;
+-}
+-
+-JNIEXPORT Win32SDOps * JNICALL
+-Win32SurfaceData_GetOpsNoSetup(JNIEnv *env, jobject sData)
+-{
+-    // use the 'no setup' version of GetOps
+-    SurfaceDataOps *ops = SurfaceData_GetOpsNoSetup(env, sData);
+-    return (Win32SDOps *) ops;
+-}
+-
+-JNIEXPORT AwtComponent * JNICALL
+-Win32SurfaceData_GetComp(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    PDATA pData;
+-    jobject localObj = env->NewLocalRef(wsdo->peer);
+-
+-    if (localObj == NULL || (pData = JNI_GET_PDATA(localObj)) == NULL) {
+-        J2dTraceLn1(J2D_TRACE_WARNING,
+-                    "Win32SurfaceData_GetComp: Null pData? pData=0x%x",
+-                    pData);
+-        if (beingShutdown == JNI_TRUE) {
+-            wsdo->invalid = JNI_TRUE;
+-            return (AwtComponent *) NULL;
+-        }
+-        try {
+-            AwtToolkit::GetInstance().VerifyActive();
+-        } catch (awt_toolkit_shutdown&) {
+-            beingShutdown = JNI_TRUE;
+-            wsdo->invalid = JNI_TRUE;
+-            return (AwtComponent *) NULL;
+-        }
+-        if (wsdo->invalid == JNI_TRUE) {
+-            SurfaceData_ThrowInvalidPipeException(env,
+-                "Win32SurfaceData: bounds changed");
+-        } else {
+-            JNU_ThrowNullPointerException(env, "component argument pData");
+-        }
+-        return (AwtComponent *) NULL;
+-    }
+-    return static_cast<AwtComponent*>(pData);
+-}
+-
+-JNIEXPORT HWND JNICALL
+-Win32SurfaceData_GetWindow(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    HWND window = wsdo->window;
+-
+-    if (window == (HWND) NULL) {
+-        AwtComponent *comp = Win32SurfaceData_GetComp(env, wsdo);
+-        if (comp == NULL) {
+-            J2dTraceLn(J2D_TRACE_WARNING,
+-                   "Win32SurfaceData_GetWindow: null component");
+-            return (HWND) NULL;
+-        }
+-        comp->GetInsets(&wsdo->insets);
+-        window = comp->GetHWnd();
+-        if (::IsWindow(window) == FALSE) {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "Win32SurfaceData_GetWindow: disposed component");
+-            JNU_ThrowNullPointerException(env, "disposed component");
+-            return (HWND) NULL;
+-        }
+-        wsdo->window = window;
+-    }
+-
+-    return window;
+-}
+-
+-} /* extern "C" */
+-
+-static jboolean Win32SD_SimpleClip(JNIEnv *env, Win32SDOps *wsdo,
+-                                   SurfaceDataBounds *bounds,
+-                                   HDC hDC)
+-{
+-    RECT rClip;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_SimpleClip");
+-    if (hDC == NULL) {
+-        return JNI_FALSE;
+-    }
+-
+-    int nComplexity = ::GetClipBox(hDC, &rClip);
+-
+-    switch (nComplexity) {
+-    case COMPLEXREGION:
+-        {
+-            J2dTraceLn(J2D_TRACE_VERBOSE,
+-                       "  complex clipping region");
+-            // if complex user/system clip, more detailed testing required
+-            // check to see if the view itself has a complex clip.
+-            // ::GetClipBox is only API which returns overlapped window status
+-            // so we set the rView as our clip, and then see if resulting
+-            // clip is complex.
+-            // Only other way to figure this out would be to walk the
+-            // overlapping windows (no API to get the actual visible clip
+-            // list).  Then we'd still have to merge that info with the
+-            // clip region for the dc (if it exists).
+-            // REMIND: we can cache the CreateRectRgnIndirect result,
+-            // and only override with ::SetRectRgn
+-
+-            // First, create a region handle (need existing HRGN for
+-            // the following call).
+-            HRGN rgnSave = ::CreateRectRgn(0, 0, 0, 0);
+-            int  clipStatus = ::GetClipRgn(hDC, rgnSave);
+-            if (-1 == clipStatus) {
+-                J2dTraceLn(J2D_TRACE_WARNING,
+-                           "Win32SD_SimpleClip: failed due to clip status");
+-                ::DeleteObject(rgnSave);
+-                return JNI_FALSE;
+-            }
+-            HRGN rgnBounds = ::CreateRectRgn(
+-                bounds->x1 - wsdo->insets.left,
+-                bounds->y1 - wsdo->insets.top,
+-                bounds->x2 - wsdo->insets.left,
+-                bounds->y2 - wsdo->insets.top);
+-            ::SelectClipRgn(hDC, rgnBounds);
+-            nComplexity = ::GetClipBox(hDC, &rClip);
+-            ::SelectClipRgn(hDC, clipStatus? rgnSave: NULL);
+-            ::DeleteObject(rgnSave);
+-            ::DeleteObject(rgnBounds);
+-
+-            // Now, test the new clip box.  If it's still not a
+-            // SIMPLE region, then our bounds must intersect part of
+-            // the clipping article
+-            if (SIMPLEREGION != nComplexity) {
+-                J2dTraceLn(J2D_TRACE_WARNING,
+-                           "Win32SD_SimpleClip: failed due to complexity");
+-                return JNI_FALSE;
+-            }
+-        }
+-        // NOTE: No break here - we want to fall through into the
+-        // SIMPLE case, adjust our bounds by the new rClip rect
+-        // and make sure that our locking bounds are not empty.
+-    case SIMPLEREGION:
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  simple clipping region");
+-        // Constrain the bounds to the given clip box
+-        if (bounds->x1 < rClip.left) {
+-            bounds->x1 = rClip.left;
+-        }
+-        if (bounds->y1 < rClip.top) {
+-            bounds->y1 = rClip.top;
+-        }
+-        if (bounds->x2 > rClip.right) {
+-            bounds->x2 = rClip.right;
+-        }
+-        if (bounds->y2 > rClip.bottom) {
+-            bounds->y2 = rClip.bottom;
+-        }
+-        // If the bounds are 0 or negative, then the bounds have
+-        // been obscured by the clip box, so return FALSE
+-        if ((bounds->x2 <= bounds->x1) ||
+-            (bounds->y2 <= bounds->y1)) {
+-            // REMIND: We should probably do something different here
+-            // instead of simply returning FALSE.  Since the bounds are
+-            // empty we won't end up drawing anything, so why spend the
+-            // effort of returning false and having GDI do a LOCK_BY_DIB?
+-            // Perhaps we need a new lock code that will indicate that we
+-            // shouldn't bother drawing?
+-            J2dTraceLn(J2D_TRACE_WARNING,
+-                       "Win32SD_SimpleClip: failed due to empty bounds");
+-            return JNI_FALSE;
+-        }
+-        break;
+-    case NULLREGION:
+-    case ERROR:
+-    default:
+-        J2dTraceLn1(J2D_TRACE_ERROR,
+-                   "Win32SD_SimpleClip: failed due to incorrect complexity=%d",
+-                    nComplexity);
+-        return JNI_FALSE;
+-    }
+-
+-    return JNI_TRUE;
+-}
+-
+-static void Win32SD_TryLockByDD(JNIEnv *env, Win32SDOps *wsdo,
+-                                SurfaceDataRasInfo *pRasInfo, HDC hDC)
+-{
+-    RECT winrect;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_LockByDD");
+-
+-    ::GetWindowRect(wsdo->window, &winrect);
+-    ::OffsetRect(&winrect, wsdo->insets.left, wsdo->insets.top);
+-
+-    /* On NT-based OS's, winddow can move even while we have the primary
+-     * surface locked.  Must prevent this or else we may render to the
+-     * wrong place on the screen. */
+-    windowMoveLock.Enter();
+-
+-    if (!DDLock(env, wsdo, NULL, pRasInfo)) {
+-        windowMoveLock.Leave();
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "Win32SD_TryLockByDD: DDLock failed");
+-        return;
+-    }
+-
+-    // If DD lock successful, update window location in wsdo
+-    ::GetWindowRect(wsdo->window, &winrect);
+-    wsdo->x = winrect.left;
+-    wsdo->y = winrect.top;
+-    if (currNumDevices > 1) {
+-        MONITOR_INFO *mi = wsdo->device->GetMonitorInfo();
+-        wsdo->x -= mi->rMonitor.left;
+-        wsdo->y -= mi->rMonitor.top;
+-    }
+-    if (!Win32SD_SimpleClip(env, wsdo, &pRasInfo->bounds, hDC) ||
+-        !Win32SD_CheckMonitorArea(wsdo, &pRasInfo->bounds, hDC))
+-    {
+-        DDUnlock(env, wsdo);
+-        windowMoveLock.Leave();
+-        J2dTraceLn(J2D_TRACE_WARNING, "Win32SD_TryLockByDD: failed because "\
+-                   "of clip, cursor or monitor area");
+-        return;
+-    }
+-
+-    wsdo->lockType = WIN32SD_LOCK_BY_DDRAW;
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "Win32SD_TryLockByDD: succeeded");
+-}
+-
+-static jint Win32SD_Lock(JNIEnv *env,
+-                         SurfaceDataOps *ops,
+-                         SurfaceDataRasInfo *pRasInfo,
+-                         jint lockflags)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-    int ret = SD_SUCCESS;
+-    HDC hDC;
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_Lock");
+-
+-    /* This surfaceLock replaces an earlier implementation which used a
+-    monitor associated with the peer.  That implementation was prone
+-    to deadlock problems, so it was replaced by a lock that does not
+-    have dependencies outside of this thread or object.
+-    However, this lock doesn't necessarily do all that we want.
+-    For example, a user may issue a call which results in a DIB lock
+-    and another call which results in a DDraw Blt.  We can't guarantee
+-    what order these operations happen in (they are driver and
+-    video-card dependent), so locking around the issue of either of
+-    those calls won't necessarily guarantee a particular result.
+-    The real solution might be to move away from mixing our
+-    rendering API's.  That is, if we only used DDraw, then we could
+-    guarantee that all rendering operations would happen in a given
+-    order.  Similarly for GDI.  But by mixing them, we leave our
+-    code at the mercy of driver bugs.*/
+-    wsdo->surfaceLock->Enter();
+-    if (wsdo->invalid == JNI_TRUE) {
+-        J2dTraceLn(J2D_TRACE_WARNING, "Win32SD_Lock: surface is invalid");
+-        wsdo->surfaceLock->Leave();
+-        if (beingShutdown != JNI_TRUE) {
+-            SurfaceData_ThrowInvalidPipeException(env,
+-                "Win32SurfaceData: bounds changed");
+-        }
+-        return SD_FAILURE;
+-    }
+-    if (wsdo->lockType != WIN32SD_LOCK_UNLOCKED) {
+-        wsdo->surfaceLock->Leave();
+-        if (!safe_ExceptionOccurred(env)) {
+-            JNU_ThrowInternalError(env, "Win32 LockRasData cannot nest locks");
+-        }
+-        return SD_FAILURE;
+-    }
+-
+-    hDC = wsdo->GetDC(env, wsdo, 0, NULL, NULL, NULL, 0);
+-    if (hDC == NULL) {
+-        wsdo->surfaceLock->Leave();
+-        if (beingShutdown != JNI_TRUE) {
+-            JNU_ThrowNullPointerException(env, "HDC for component");
+-        }
+-        return SD_FAILURE;
+-    }
+-
+-    if (lockflags & SD_LOCK_RD_WR) {
+-        // Do an initial clip to the client region of the window
+-        RECT crect;
+-        ::GetClientRect(wsdo->window, &crect);
+-
+-        // Translate to window coords
+-        crect.left += wsdo->insets.left;
+-        crect.top += wsdo->insets.top;
+-        crect.right += wsdo->insets.left;
+-        crect.bottom += wsdo->insets.top;
+-
+-        SurfaceDataBounds *bounds = &pRasInfo->bounds;
+-
+-        if (bounds->x1 < crect.left) {
+-            bounds->x1 = crect.left;
+-        }
+-        if (bounds->y1 < crect.top) {
+-            bounds->y1 = crect.top;
+-        }
+-        if (bounds->x2 > crect.right) {
+-            bounds->x2 = crect.right;
+-        }
+-        if (bounds->y2 > crect.bottom) {
+-            bounds->y2 = crect.bottom;
+-        }
+-
+-        if (useDDLock && DDUseDDraw(wsdo)) {
+-            Win32SD_TryLockByDD(env, wsdo, pRasInfo, hDC);
+-        }
+-        if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE,
+-                       "Win32SD_Lock: dd lock failed, try to lock by DIB");
+-            if (bounds->x2 > bounds->x1 && bounds->y2 > bounds->y1) {
+-                wsdo->lockType = WIN32SD_LOCK_BY_DIB;
+-                if (lockflags & SD_LOCK_FASTEST) {
+-                    ret = SD_SLOWLOCK;
+-                }
+-                J2dTraceLn(J2D_TRACE_VERBOSE, " locked by DIB");
+-            } else {
+-                wsdo->ReleaseDC(env, wsdo, hDC);
+-                wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-                wsdo->surfaceLock->Leave();
+-                ret = SD_FAILURE;
+-                J2dTraceLn(J2D_TRACE_ERROR,
+-                           "Win32SD_Lock: error locking by DIB");
+-            }
+-        } else {
+-            J2dTraceLn(J2D_TRACE_VERBOSE, "Win32SD_Lock: locked by DDraw");
+-            // Surface is already locked - release DC
+-            wsdo->ReleaseDC(env, wsdo, hDC);
+-        }
+-    } else {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "Win32SD_Lock: surface wasn't locked");
+-        /* They didn't lock for anything - we won't give them anything */
+-        wsdo->ReleaseDC(env, wsdo, hDC);
+-        wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-        wsdo->surfaceLock->Leave();
+-        ret = SD_FAILURE;
+-    }
+-
+-    wsdo->lockFlags = lockflags;
+-    return ret;
+-}
+-
+-static void Win32SD_GetRasInfo(JNIEnv *env,
+-                               SurfaceDataOps *ops,
+-                               SurfaceDataRasInfo *pRasInfo)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-    jint lockflags = wsdo->lockFlags;
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_GetRasInfo");
+-    HDC hDC = GetThreadDC(env, wsdo);
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-        memset(pRasInfo, 0, sizeof(*pRasInfo));
+-        return;
+-    }
+-
+-    if (useDDLock && DDUseDDraw(wsdo)           &&
+-        wsdo->lockType == WIN32SD_LOCK_BY_DIB   &&
+-        (lockflags & SD_LOCK_FASTEST))
+-    {
+-        Win32SD_TryLockByDD(env, wsdo, pRasInfo, hDC);
+-        if (wsdo->lockType == WIN32SD_LOCK_BY_DDRAW) {
+-            wsdo->ReleaseDC(env, wsdo, hDC);
+-        }
+-    }
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_BY_DDRAW) {
+-        // Adjust the rasBase to point to the upper left pixel of our drawing area
+-        pRasInfo->rasBase = (void *) ((intptr_t)pRasInfo->rasBase +
+-                                      (wsdo->x * pRasInfo->pixelStride) +
+-                                      (wsdo->y * pRasInfo->scanStride));
+-    } else if (wsdo->lockType == WIN32SD_LOCK_BY_DIB) {
+-        int x, y, w, h;
+-        int pixelStride = wsdo->pixelStride;
+-        // do not subtract insets from x,y as we take care of it in SD_GetDC
+-        x = pRasInfo->bounds.x1;
+-        y = pRasInfo->bounds.y1;
+-        w = pRasInfo->bounds.x2 - x;
+-        h = pRasInfo->bounds.y2 - y;
+-
+-        struct tagBitmapheader  {
+-            BITMAPINFOHEADER bmiHeader;
+-            union {
+-                DWORD           dwMasks[3];
+-                RGBQUAD         palette[256];
+-            } colors;
+-        } bmi;
+-
+-        // Need to create bitmap if we don't have one already or
+-        // if the existing one is not large enough for this operation
+-        // or if we are in 8 bpp display mode (because we need to
+-        // make sure that the latest palette info gets loaded into
+-        // the bitmap)
+-        // REMIND: we should find some way to dynamically force bitmap
+-        // recreation only when the palette changes
+-        if (pixelStride == 1 || !wsdo->bitmap || (w > wsdo->bmWidth) ||
+-            (h > wsdo->bmHeight))
+-        {
+-            if (wsdo->bitmap) {
+-                // delete old objects
+-                J2dTraceLn(J2D_TRACE_VERBOSE,
+-                           "Win32SD_GetRasInfo: recreating GDI bitmap");
+-                if (wsdo->bmdc) {   // should not be null
+-                    ::SelectObject(wsdo->bmdc, wsdo->oldmap);
+-                    ::DeleteDC(wsdo->bmdc);
+-                    wsdo->bmdc = 0;
+-                }
+-                ::DeleteObject(wsdo->bitmap);
+-                wsdo->bitmap = 0;
+-            }
+-            bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
+-            bmi.bmiHeader.biWidth = w;
+-            bmi.bmiHeader.biHeight = -h;
+-            wsdo->bmWidth = w;
+-            wsdo->bmHeight = h;
+-            bmi.bmiHeader.biPlanes = 1;
+-            bmi.bmiHeader.biBitCount = pixelStride * 8;
+-            // 1,3 byte use BI_RGB, 2,4 byte use BI_BITFIELD...
+-            bmi.bmiHeader.biCompression =
+-                (pixelStride & 1)
+-                    ? BI_RGB
+-                    : BI_BITFIELDS;
+-            bmi.bmiHeader.biSizeImage = 0;
+-            bmi.bmiHeader.biXPelsPerMeter = 0;
+-            bmi.bmiHeader.biYPelsPerMeter = 0;
+-            bmi.bmiHeader.biClrUsed = 0;
+-            bmi.bmiHeader.biClrImportant = 0;
+-            if (pixelStride == 1) {
+-                // we can use systemEntries here because
+-                // RGBQUAD is xRGB and systemEntries are stored as xRGB
+-                memcpy(bmi.colors.palette, wsdo->device->GetSystemPaletteEntries(),
+-                       sizeof(bmi.colors.palette));
+-            } else {
+-                // For non-index cases, init the masks for the pixel depth
+-                for (int i = 0; i < 3; i++) {
+-                    bmi.colors.dwMasks[i] = wsdo->pixelMasks[i];
+-                }
+-            }
+-
+-            // REMIND: This would be better if moved to the Lock function
+-            // so that errors could be dealt with.
+-            wsdo->bitmap = ::CreateDIBSection(hDC, (BITMAPINFO *) &bmi,
+-                                              DIB_RGB_COLORS, &wsdo->bmBuffer, NULL, 0);
+-            if (wsdo->bitmap != 0) {
+-                // scanStride is cached along with reuseable bitmap
+-                // Round up to the next DWORD boundary
+-                wsdo->bmScanStride = (wsdo->bmWidth * pixelStride + 3) & ~3;
+-                wsdo->bmdc = ::CreateCompatibleDC(hDC);
+-                if (wsdo->bmdc == 0) {
+-                    ::DeleteObject(wsdo->bitmap);
+-                    wsdo->bitmap = 0;
+-                } else {
+-                    wsdo->oldmap = (HBITMAP) ::SelectObject(wsdo->bmdc,
+-                                                            wsdo->bitmap);
+-                }
+-            }
+-        }
+-        if (wsdo->bitmap != 0) {
+-            if (lockflags & SD_LOCK_NEED_PIXELS) {
+-                int ret = ::BitBlt(wsdo->bmdc, 0, 0, w, h,
+-                                   hDC, x, y, SRCCOPY);
+-                ::GdiFlush();
+-            }
+-            wsdo->x = x;
+-            wsdo->y = y;
+-            wsdo->w = w;
+-            wsdo->h = h;
+-            pRasInfo->rasBase = (char *)wsdo->bmBuffer - (x*pixelStride +
+-                                y*wsdo->bmScanStride);
+-            pRasInfo->pixelStride = pixelStride;
+-            pRasInfo->pixelBitOffset = 0;
+-            pRasInfo->scanStride = wsdo->bmScanStride;
+-            if (lockflags & SD_LOCK_WRITE) {
+-                // If the user writes to the bitmap then we should
+-                // copy the bitmap to the screen during Unlock
+-                wsdo->bmCopyToScreen = TRUE;
+-            }
+-        } else {
+-            pRasInfo->rasBase = NULL;
+-            pRasInfo->pixelStride = 0;
+-            pRasInfo->pixelBitOffset = 0;
+-            pRasInfo->scanStride = 0;
+-        }
+-    } else {
+-        /* They didn't lock for anything - we won't give them anything */
+-        pRasInfo->rasBase = NULL;
+-        pRasInfo->pixelStride = 0;
+-        pRasInfo->pixelBitOffset = 0;
+-        pRasInfo->scanStride = 0;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_LUT) {
+-        pRasInfo->lutBase =
+-            (long *) wsdo->device->GetSystemPaletteEntries();
+-        pRasInfo->lutSize = 256;
+-    } else {
+-        pRasInfo->lutBase = NULL;
+-        pRasInfo->lutSize = 0;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_INVCOLOR) {
+-        pRasInfo->invColorTable = wsdo->device->GetSystemInverseLUT();
+-        ColorData *cData = wsdo->device->GetColorData();
+-        pRasInfo->redErrTable = cData->img_oda_red;
+-        pRasInfo->grnErrTable = cData->img_oda_green;
+-        pRasInfo->bluErrTable = cData->img_oda_blue;
+-    } else {
+-        pRasInfo->invColorTable = NULL;
+-        pRasInfo->redErrTable = NULL;
+-        pRasInfo->grnErrTable = NULL;
+-        pRasInfo->bluErrTable = NULL;
+-    }
+-    if (wsdo->lockFlags & SD_LOCK_INVGRAY) {
+-        pRasInfo->invGrayTable =
+-            wsdo->device->GetColorData()->pGrayInverseLutData;
+-    } else {
+-        pRasInfo->invGrayTable = NULL;
+-    }
+-}
+-
+-static void Win32SD_Setup(JNIEnv *env,
+-                          SurfaceDataOps *ops)
+-{
+-    // Call SetupTGI to ensure that this thread already has a DC that is
+-    // compatible with this window.  This means that we won't be calling
+-    // ::SendMessage(GETDC) in the middle of a lock procedure, which creates
+-    // a potential deadlock situation.
+-    // Note that calling SetupTGI here means that anybody needing a DC
+-    // later in this rendering process need only call GetTGI, which
+-    // assumes that the TGI structure is valid for this thread/window.
+-    SetupThreadGraphicsInfo(env, (Win32SDOps*)ops);
+-}
+-
+-
+-static void Win32SD_Unlock(JNIEnv *env,
+-                           SurfaceDataOps *ops,
+-                           SurfaceDataRasInfo *pRasInfo)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *) ops;
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_Unlock");
+-    HDC hDC = GetThreadDC(env, wsdo);
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_UNLOCKED) {
+-        if (!safe_ExceptionOccurred(env)) {
+-            JNU_ThrowInternalError(env,
+-                                   "Unmatched unlock on Win32 SurfaceData");
+-        }
+-        return;
+-    }
+-
+-    if (wsdo->lockType == WIN32SD_LOCK_BY_DDRAW) {
+-        DDUnlock(env, wsdo);
+-        windowMoveLock.Leave();
+-        wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-    } else if (wsdo->lockType == WIN32SD_LOCK_BY_DIB) {
+-        if (wsdo->lockFlags & SD_LOCK_WRITE) {
+-            J2dTraceLn(J2D_TRACE_VERBOSE,
+-                       "Win32SD_Unlock: do Blt of the bitmap");
+-            if (wsdo->bmCopyToScreen && ::IsWindowVisible(wsdo->window)) {
+-                // Don't bother copying to screen if our window has gone away
+-                // or if the bitmap was not actually written to during this
+-                // Lock/Unlock procedure.
+-                ::BitBlt(hDC, wsdo->x, wsdo->y, wsdo->w, wsdo->h,
+-                    wsdo->bmdc, 0, 0, SRCCOPY);
+-                ::GdiFlush();
+-            }
+-            wsdo->bmCopyToScreen = FALSE;
+-        }
+-        wsdo->lockType = WIN32SD_LOCK_UNLOCKED;
+-        wsdo->ReleaseDC(env, wsdo, hDC);
+-    }
+-    wsdo->surfaceLock->Leave();
+-}
+-
+-/*
+- * REMIND: This mechanism is just a prototype of a way to manage a
+- * small cache of DC objects.  It is incomplete in the following ways:
+- *
+- * - It is not thread-safe!  It needs appropriate locking and release calls
+- *   (perhaps the AutoDC mechanisms from Kestrel)
+- * - It does hardly any error checking (What if GetDCEx returns NULL?)
+- * - It cannot handle printer DCs and their resolution
+- * - It should probably "live" in the native SurfaceData object to allow
+- *   alternate implementations for printing and embedding
+- * - It doesn't handle XOR
+- * - It caches the client bounds to determine if clipping is really needed
+- *   (no way to invalidate the cached bounds and there is probably a better
+- *    way to manage clip validation in any case)
+- */
+-
+-#define COLORFOR(c)     (PALETTERGB(((c)>>16)&0xff,((c)>>8)&0xff,((c)&0xff)))
+-
+-COLORREF CheckGrayColor(Win32SDOps *wsdo, int c) {
+-    if (wsdo->device->GetGrayness() != GS_NOTGRAY) {
+-        int g = (77 *(c & 0xFF) +
+-                 150*((c >> 8) & 0xFF) +
+-                 29 *((c >> 16) & 0xFF) + 128) / 256;
+-        c = g | (g << 8) | (g << 16);
+-    }
+-    return COLORFOR(c);
+-}
+-
+-static HDC Win32SD_GetDC(JNIEnv *env, Win32SDOps *wsdo,
+-                         jint type, jint *patrop,
+-                         jobject clip, jobject comp, jint color)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_GetDC");
+-
+-    if (wsdo->invalid == JNI_TRUE) {
+-        if (beingShutdown != JNI_TRUE) {
+-            SurfaceData_ThrowInvalidPipeException(env, "bounds changed");
+-        }
+-        return (HDC) NULL;
+-    }
+-
+-    ThreadGraphicsInfo *info = GetThreadGraphicsInfo(env, wsdo);
+-    Win32SD_InitDC(env, wsdo, info, type, patrop, clip, comp, color);
+-    return info->hDC;
+-}
+-
+-JNIEXPORT void JNICALL
+-Win32SD_InitDC(JNIEnv *env, Win32SDOps *wsdo, ThreadGraphicsInfo *info,
+-               jint type, jint *patrop,
+-               jobject clip, jobject comp, jint color)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_InitDC");
+-
+-    // init clip
+-    if (clip == NULL) {
+-        if (info->type & CLIP) {
+-            ::SelectClipRgn(info->hDC, (HRGN) NULL);
+-            info->type ^= CLIP;
+-        }
+-        if (info->clip != NULL) {
+-            env->DeleteWeakGlobalRef(info->clip);
+-            info->clip = NULL;
+-        }
+-    } else if (!env->IsSameObject(clip, info->clip)) {
+-        SurfaceDataBounds span;
+-        RegionData clipInfo;
+-        if (Region_GetInfo(env, clip, &clipInfo)) {
+-            // return; // REMIND: What to do here?
+-        }
+-
+-        if (Region_IsEmpty(&clipInfo)) {
+-            HRGN hrgn = ::CreateRectRgn(0, 0, 0, 0);
+-            ::SelectClipRgn(info->hDC, hrgn);
+-            ::DeleteObject(hrgn);
+-            info->type |= CLIP;
+-        } else if (Region_IsRectangular(&clipInfo)) {
+-            if (clipInfo.bounds.x1 <= info->bounds.left &&
+-                clipInfo.bounds.y1 <= info->bounds.top &&
+-                clipInfo.bounds.x2 >= info->bounds.right &&
+-                clipInfo.bounds.y2 >= info->bounds.bottom)
+-            {
+-                if (info->type & CLIP) {
+-                    ::SelectClipRgn(info->hDC, (HRGN) NULL);
+-                    info->type ^= CLIP;
+-                }
+-            } else {
+-                // Make the window-relative rect a client-relative
+-                // one for Windows
+-                HRGN hrgn =
+-                    ::CreateRectRgn(clipInfo.bounds.x1 - wsdo->insets.left,
+-                                    clipInfo.bounds.y1 - wsdo->insets.top,
+-                                    clipInfo.bounds.x2 - wsdo->insets.left,
+-                                    clipInfo.bounds.y2 - wsdo->insets.top);
+-                ::SelectClipRgn(info->hDC, hrgn);
+-                ::DeleteObject(hrgn);
+-                info->type |= CLIP;
+-            }
+-        } else {
+-            int leftInset = wsdo->insets.left;
+-            int topInset = wsdo->insets.top;
+-            Region_StartIteration(env, &clipInfo);
+-            jint numrects = Region_CountIterationRects(&clipInfo);
+-            DWORD nCount = sizeof(RGNDATAHEADER) + numrects * sizeof(RECT);
+-            RGNDATA *lpRgnData = (RGNDATA *) safe_Malloc(nCount);
+-            lpRgnData->rdh.dwSize = sizeof(RGNDATAHEADER);
+-            lpRgnData->rdh.iType = RDH_RECTANGLES;
+-            lpRgnData->rdh.nCount = numrects;
+-            lpRgnData->rdh.nRgnSize = 0;
+-            lpRgnData->rdh.rcBound.left = clipInfo.bounds.x1 - leftInset;
+-            lpRgnData->rdh.rcBound.top = clipInfo.bounds.y1 - topInset;
+-            lpRgnData->rdh.rcBound.right = clipInfo.bounds.x2 - leftInset;
+-            lpRgnData->rdh.rcBound.bottom = clipInfo.bounds.y2 - topInset;
+-            RECT *pRect = (RECT *) &(((RGNDATA *)lpRgnData)->Buffer);
+-            while (Region_NextIteration(&clipInfo, &span)) {
+-                pRect->left = span.x1 - leftInset;
+-                pRect->top = span.y1 - topInset;
+-                pRect->right = span.x2 - leftInset;
+-                pRect->bottom = span.y2 - topInset;
+-                pRect++;
+-            }
+-            Region_EndIteration(env, &clipInfo);
+-            HRGN hrgn = ::ExtCreateRegion(NULL, nCount, lpRgnData);
+-            free(lpRgnData);
+-            ::SelectClipRgn(info->hDC, hrgn);
+-            ::DeleteObject(hrgn);
+-            info->type |= CLIP;
+-        }
+-        if (info->clip != NULL) {
+-            env->DeleteWeakGlobalRef(info->clip);
+-        }
+-        info->clip = env->NewWeakGlobalRef(clip);
+-    }
+-
+-    // init composite
+-    if ((comp == NULL) || !env->IsInstanceOf(comp, xorCompClass)) {
+-        if (info->comp != NULL) {
+-            env->DeleteWeakGlobalRef(info->comp);
+-            info->comp = NULL;
+-            info->patrop = PATCOPY;
+-            ::SetROP2(info->hDC, R2_COPYPEN);
+-        }
+-    } else {
+-        if (!env->IsSameObject(comp, info->comp)) {
+-            info->xorcolor = GrPrim_CompGetXorColor(env, comp);
+-            if (info->comp != NULL) {
+-                env->DeleteWeakGlobalRef(info->comp);
+-            }
+-            info->comp = env->NewWeakGlobalRef(comp);
+-            info->patrop = PATINVERT;
+-            ::SetROP2(info->hDC, R2_XORPEN);
+-        }
+-        color ^= info->xorcolor;
+-    }
+-
+-    if (patrop != NULL) {
+-        *patrop = info->patrop;
+-    }
+-
+-    // init brush and pen
+-    if (type & BRUSH) {
+-        if (info->brushclr != color || (info->brush == NULL)) {
+-            if (info->type & BRUSH) {
+-                ::SelectObject(info->hDC, nullbrush);
+-                info->type ^= BRUSH;
+-            }
+-            if (info->brush != NULL) {
+-                info->brush->Release();
+-            }
+-            info->brush = AwtBrush::Get(CheckGrayColor(wsdo, color));
+-            info->brushclr = color;
+-        }
+-        if ((info->type & BRUSH) == 0) {
+-            ::SelectObject(info->hDC, info->brush->GetHandle());
+-            info->type ^= BRUSH;
+-        }
+-    } else if (type & NOBRUSH) {
+-        if (info->type & BRUSH) {
+-            ::SelectObject(info->hDC, nullbrush);
+-            info->type ^= BRUSH;
+-        }
+-    }
+-    if (type & PEN) {
+-        if (info->penclr != color || (info->pen == NULL)) {
+-            if (info->type & PEN) {
+-                ::SelectObject(info->hDC, nullpen);
+-                info->type ^= PEN;
+-            }
+-            if (info->pen != NULL) {
+-                info->pen->Release();
+-            }
+-            info->pen = AwtPen::Get(CheckGrayColor(wsdo, color));
+-            info->penclr = color;
+-        }
+-        if ((info->type & PEN) == 0) {
+-            ::SelectObject(info->hDC, info->pen->GetHandle());
+-            info->type ^= PEN;
+-        }
+-    } else if (type & NOPEN) {
+-        if (info->type & PEN) {
+-            ::SelectObject(info->hDC, nullpen);
+-            info->type ^= PEN;
+-        }
+-    }
+-}
+-
+-static void Win32SD_ReleaseDC(JNIEnv *env, Win32SDOps *wsdo, HDC hDC)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_ReleaseDC");
+-    // Don't actually do anything here: every thread holds its own
+-    // wsdo-specific DC until the thread goes away or the wsdo
+-    // is disposed.
+-
+-    // we don't track gdi operations for on-screen surfaces
+-    // by setting wsdo->gdiOpPending to TRUE here
+-    // because we do not need an extra sync before DD-locking
+-    // the on-screen surface (sync is a dd-lock)
+-}
+-
+-
+-static void Win32SD_InvalidateSD(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_InvalidateSD");
+-    J2dTraceLn2(J2D_TRACE_VERBOSE, "  wsdo=0x%x wsdo->window=0x%x",
+-                wsdo, wsdo->window);
+-
+-    wsdo->invalid = JNI_TRUE;
+-}
+-
+-
+-
+-/*
+- * Method:    Win32SD_Dispose
+- */
+-static void
+-Win32SD_Dispose(JNIEnv *env, SurfaceDataOps *ops)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SD_Dispose");
+-    // ops is assumed non-null as it is checked in SurfaceData_DisposeOps
+-    Win32SDOps *wsdo = (Win32SDOps*)ops;
+-    if (wsdo->bitmap) {
+-        // delete old objects
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  disposing the GDI bitmap");
+-        if (wsdo->bmdc) {   // should not be null
+-            ::SelectObject(wsdo->bmdc, wsdo->oldmap);
+-            ::DeleteDC(wsdo->bmdc);
+-            wsdo->bmdc = 0;
+-        }
+-        ::DeleteObject(wsdo->bitmap);
+-        wsdo->bitmap = 0;
+-    }
+-    DDDestroySurface(wsdo);
+-    env->DeleteWeakGlobalRef(wsdo->peer);
+-    if (wsdo->device != NULL) {
+-        wsdo->device->Release();
+-        wsdo->device = NULL;
+-    }
+-    delete wsdo->surfaceLock;
+-}
+-
+-
+-/*
+- * Class:     sun_java2d_windows_Win32SurfaceData
+- * Method:    invalidateSD
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32SurfaceData_invalidateSD(JNIEnv *env, jobject wsd)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SurfaceData_invalidateSD");
+-    Win32SDOps *wsdo = Win32SurfaceData_GetOpsNoSetup(env, wsd);
+-    if (wsdo != NULL) {
+-        wsdo->InvalidateSD(env, wsdo);
+-    }
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32SurfaceData
+- * Method:    restoreSurface
+- * Signature: ()V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32SurfaceData_restoreSurface(JNIEnv *env,
+-                                                        jobject sData)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO,
+-               "Win32SurfaceData_restoreSurface: restoring primary");
+-    Win32SDOps *wsdo = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-
+-    // Attempt to restore and lock the surface (to make sure the restore worked)
+-    if (DDRestoreSurface(wsdo) && DDLock(env, wsdo, NULL, NULL)) {
+-        DDUnlock(env, wsdo);
+-    } else {
+-        // Failure - throw exception
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "Win32SurfaceData_restoreSurface: "\
+-                      "problems restoring primary");
+-        SurfaceData_ThrowInvalidPipeException(env, "RestoreSurface failure");
+-    }
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_Win32SurfaceData
+- * Method:    flip
+- * Signature: (Lsun/awt/windows/Win32SurfaceData;)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_Win32SurfaceData_flip(JNIEnv *env,
+-                                              jobject sData, jobject dData)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32SurfaceData_flip");
+-    if (dData == NULL) {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "Win32SurfaceData_flip: dData is null");
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "Could not flip offscreen Surface");
+-        return;
+-    }
+-    Win32SDOps *wsdo_s = Win32SurfaceData_GetOpsNoSetup(env, sData);
+-    Win32SDOps *wsdo_d = Win32SurfaceData_GetOpsNoSetup(env, dData);
+-    if (!DDFlip(env, wsdo_s, wsdo_d)) {
+-        J2dTraceLn(J2D_TRACE_WARNING, "Win32SurfaceData_flip: flipping error");
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "Could not flip offscreen Surface");
+-    }
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/Win32SurfaceData.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/Win32SurfaceData.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,303 +0,0 @@
+-/*
+- * Copyright (c) 1999, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef _WIN32SURFACEDATA_H_
+-#define _WIN32SURFACEDATA_H_
+-
+-
+-#include "SurfaceData.h"
+-
+-#include "colordata.h"
+-#include "awt_Brush.h"
+-#include "awt_Pen.h"
+-#include "awt_Win32GraphicsDevice.h"
+-
+-#include "stdhdrs.h"
+-#include <ddraw.h>
+-
+-
+-#define TEST_SURFACE_BITS(a,f) (((a)&(f)) == (f))
+-
+-/**
+- * This include file contains support definitions for loops using the
+- * SurfaceData interface to talk to a Win32 drawable from native code.
+- */
+-
+-typedef struct _Win32SDOps Win32SDOps;
+-
+-/* These defined in ddrawObject.h */
+-class DDraw;
+-class DDrawSurface;
+-class DDrawClipper;
+-class DDrawDisplayMode;
+-
+-/*
+- * Typedef for the structure which contains the ddObject reference, as
+- * well as a refCount so that we know when we can delete the ddObject
+- * and this structure.  We have to keep around the old ddObject even
+- * after creating a new one because there may be multiple other surfaces
+- * that still reference the old ddObject.  When all of those surfaces
+- * have been recreated with the new ddObject, the old one can be
+- * released.
+- */
+-typedef struct  {
+-    DDraw                   *ddObject;
+-    int                     refCount;
+-    DDrawSurface            *primary;
+-    DDrawSurface            *syncSurface;
+-    DDrawClipper            *clipper;
+-    CriticalSection         *primaryLock;
+-    BOOL                    valid;
+-    HMONITOR                hMonitor;
+-    BOOL                    capsSet;
+-    BOOL                    canBlt;
+-    HWND                    hwndFullScreen;
+-    int                     backBufferCount;
+-    int                     context;
+-    BOOL                    accelerated;
+-} DDrawObjectStruct;
+-
+-#define CONTEXT_NORMAL 0
+-#define CONTEXT_DISPLAY_CHANGE 1
+-#define CONTEXT_ENTER_FULL_SCREEN 2
+-#define CONTEXT_CHANGE_BUFFER_COUNT 3
+-#define CONTEXT_EXIT_FULL_SCREEN 4
+-
+-/*
+- * The definitions of the various attribute flags for requesting
+- * which rendering objects should be selected into the HDC returned
+- * from GetDC().
+- */
+-#define PEN             1
+-#define NOPEN           2
+-#define BRUSH           4
+-#define NOBRUSH         8
+-#define CLIP            16              /* For tracking purposes only */
+-#define PENBRUSH        (PEN | BRUSH)
+-#define PENONLY         (PEN | NOBRUSH)
+-#define BRUSHONLY       (BRUSH | NOPEN)
+-
+-/*
+- * This function retrieves an HDC for rendering to the destination
+- * managed by the indicated Win32SDOps structure.
+- *
+- * The env parameter should be the JNIEnv of the surrounding JNI context.
+- *
+- * The ops parameter should be a pointer to the ops object upon which
+- * this function is being invoked.
+- *
+- * The flags parameter should be an inclusive OR of any of the attribute
+- * flags defined above.
+- *
+- * The patrop parameter should be a pointer to a jint that will receive
+- * the appropriate ROP code (PATCOPY or PATINVERT) based on the current
+- * composite, or NULL if the ROP code will be ignored by the caller.
+- *
+- * The clip parameter should be a pointer to a rectangle indicating the
+- * desired clip.
+- *
+- * The comp parameter should be a pointer to a Composite object, or NULL
+- * which means the Src (default) compositing rule will be used.
+- *
+- * The pixel parameter should be a 24-bit XRGB value indicating the
+- * color that will be used for rendering.  The upper 8 bits are allowed
+- * to be any value.
+- *
+- * The ReleaseDC function should be called to release the lock on the DC
+- * after a given atomic set of rendering operations is complete.
+- *
+- * Note to callers:
+- *      This function may use JNI methods so it is important that the
+- *      caller not have any outstanding GetPrimitiveArrayCritical or
+- *      GetStringCritical locks which have not been released.
+- */
+-typedef HDC GetDCFunc(JNIEnv *env,
+-                      Win32SDOps *wsdo,
+-                      jint flags,
+-                      jint *patrop,
+-                      jobject clip,
+-                      jobject comp,
+-                      jint color);
+-
+-/*
+- * This function releases an HDC that was retrieved from the GetDC
+- * function of the indicated Win32SDOps structure.
+- *
+- * The env parameter should be the JNIEnv of the surrounding JNI context.
+- *
+- * The ops parameter should be a pointer to the ops object upon which
+- * this function is being invoked.
+- *
+- * The hdc parameter should be the handle to the HDC object that was
+- * returned from the GetDC function.
+- *
+- * Note to callers:
+- *      This function may use JNI methods so it is important that the
+- *      caller not have any outstanding GetPrimitiveArrayCritical or
+- *      GetStringCritical locks which have not been released.
+- */
+-typedef void ReleaseDCFunc(JNIEnv *env,
+-                           Win32SDOps *wsdo,
+-                           HDC hdc);
+-
+-
+-typedef void InvalidateSDFunc(JNIEnv *env,
+-                              Win32SDOps *wsdo);
+-
+-typedef void RestoreSurfaceFunc(JNIEnv *env, Win32SDOps *wsdo);
+-
+-#define READS_PUNT_THRESHOLD 2
+-#define BLTS_UNPUNT_THRESHOLD  4
+-typedef struct {
+-    jboolean            disablePunts;
+-    jint                pixelsReadThreshold;
+-    jint                numBltsThreshold;
+-    jboolean            usingDDSystem;
+-    DDrawSurface        *lpSurfaceSystem;
+-    DDrawSurface        *lpSurfaceVram;
+-    jint                numBltsSinceRead;
+-    jint                pixelsReadSinceBlt;
+-} SurfacePuntData;
+-/*
+- * A structure that holds all state global to the native surfaceData
+- * object.
+- *
+- * Note:
+- * This structure will be shared between different threads that
+- * operate on the same surfaceData, so it should not contain any
+- * variables that could be changed by one thread thus placing other
+- * threads in a state of confusion.  For example, the hDC field was
+- * removed because each thread now has its own shared DC.  But the
+- * window field remains because once it is set for a given wsdo
+- * structure it stays the same until that structure is destroyed.
+- */
+-struct _Win32SDOps {
+-    SurfaceDataOps      sdOps;
+-    jboolean            invalid;
+-    GetDCFunc           *GetDC;
+-    ReleaseDCFunc       *ReleaseDC;
+-    InvalidateSDFunc    *InvalidateSD;
+-    jint                lockType;       // REMIND: store in TLS
+-    jint                lockFlags;      // REMIND: store in TLS
+-    jobject             peer;
+-    HWND                window;
+-    RECT                insets;
+-    jint                depth;
+-    jint                pixelStride;    // Bytes per pixel
+-    DWORD               pixelMasks[3];  // RGB Masks for Windows DIB creation
+-    HBITMAP             bitmap;         // REMIND: store in TLS
+-    HBITMAP             oldmap;         // REMIND: store in TLS
+-    HDC                 bmdc;           // REMIND: store in TLS
+-    int                 bmScanStride;   // REMIND: store in TLS
+-    int                 bmWidth;        // REMIND: store in TLS
+-    int                 bmHeight;       // REMIND: store in TLS
+-    void                *bmBuffer;      // REMIND: store in TLS
+-    jboolean            bmCopyToScreen; // Used to track whether we
+-                                        // actually should copy the bitmap
+-                                        // to the screen
+-    AwtBrush            *brush;         // used for offscreen surfaces only
+-    jint                brushclr;
+-    AwtPen              *pen;           // used for offscreen surfaces only
+-    jint                penclr;
+-
+-    int                 x, y, w, h;     // REMIND: store in TLS
+-    RestoreSurfaceFunc  *RestoreSurface;
+-    DDrawSurface        *lpSurface;
+-    int                 backBufferCount;
+-    DDrawObjectStruct   *ddInstance;
+-    CriticalSection     *surfaceLock;   // REMIND: try to remove
+-    jboolean            surfaceLost;
+-    jboolean            gdiOpPending;   // whether a GDI operation is pending for this
+-                                        // surface (Get/ReleaseDC were called)
+-    jint                transparency;
+-    AwtWin32GraphicsDevice *device;
+-    SurfacePuntData     surfacePuntData;
+-};
+-
+-#define WIN32SD_LOCK_UNLOCKED   0       /* surface is not locked */
+-#define WIN32SD_LOCK_BY_NULL    1       /* surface locked for NOP */
+-#define WIN32SD_LOCK_BY_DDRAW   2       /* surface locked by DirectDraw */
+-#define WIN32SD_LOCK_BY_DIB     3       /* surface locked by BitBlt */
+-
+-extern "C" {
+-
+-/*
+- * Structure for holding the graphics state of a thread.
+- */
+-typedef struct {
+-    HDC         hDC;
+-    Win32SDOps  *wsdo;
+-    RECT        bounds;
+-    jobject     clip;
+-    jobject     comp;
+-    jint        xorcolor;
+-    jint        patrop;
+-    jint        type;
+-    AwtBrush    *brush;
+-    jint        brushclr;
+-    AwtPen      *pen;
+-    jint        penclr;
+-} ThreadGraphicsInfo;
+-
+-
+-/*
+- * This function returns a pointer to a native Win32SDOps structure
+- * for accessing the indicated Win32 SurfaceData Java object.  It
+- * verifies that the indicated SurfaceData object is an instance
+- * of Win32SurfaceData before returning and will return NULL if the
+- * wrong SurfaceData object is being accessed.  This function will
+- * throw the appropriate Java exception if it returns NULL so that
+- * the caller can simply return.
+- *
+- * Note to callers:
+- *      This function uses JNI methods so it is important that the
+- *      caller not have any outstanding GetPrimitiveArrayCritical or
+- *      GetStringCritical locks which have not been released.
+- *
+- *      The caller may continue to use JNI methods after this method
+- *      is called since this function will not leave any outstanding
+- *      JNI Critical locks unreleased.
+- */
+-JNIEXPORT Win32SDOps * JNICALL
+-Win32SurfaceData_GetOps(JNIEnv *env, jobject sData);
+-
+-JNIEXPORT Win32SDOps * JNICALL
+-Win32SurfaceData_GetOpsNoSetup(JNIEnv *env, jobject sData);
+-
+-JNIEXPORT HWND JNICALL
+-Win32SurfaceData_GetWindow(JNIEnv *env, Win32SDOps *wsdo);
+-
+-JNIEXPORT void JNICALL
+-Win32SD_InitDC(JNIEnv *env, Win32SDOps *wsdo, ThreadGraphicsInfo *info,
+-               jint type, jint *patrop,
+-               jobject clip, jobject comp, jint color);
+-
+-JNIEXPORT AwtComponent * JNICALL
+-Win32SurfaceData_GetComp(JNIEnv *env, Win32SDOps *wsdo);
+-
+-} /* extern "C" */
+-
+-
+-#endif _WIN32SURFACEDATA_H_
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/WinBackBufferSurfaceData.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/WinBackBufferSurfaceData.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,101 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "sun_java2d_windows_WinBackBufferSurfaceData.h"
+-
+-#include "Win32SurfaceData.h"
+-
+-#include "awt_Component.h"
+-#include "Trace.h"
+-#include "ddrawUtils.h"
+-
+-#include "jni_util.h"
+-
+-extern "C" jboolean initOSSD_WSDO(JNIEnv* env, Win32SDOps* wsdo, jint width,
+-                                  jint height, jint screen, jint transparency);
+-
+-extern "C" void disposeOSSD_WSDO(JNIEnv* env, Win32SDOps* wsdo);
+-
+-DisposeFunc Win32BBSD_Dispose;
+-
+-/*
+- * Class:     sun_java2d_windows_WinBackBufferSurfaceData
+- * Method:    initSurface
+- * Signature: (IIILsun/awt/windows/WinBackBufferSurfaceData;)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_WinBackBufferSurfaceData_initSurface(JNIEnv *env,
+-    jobject sData, jint depth, jint width, jint height, jint screen,
+-    jobject parentData)
+-{
+-    Win32SDOps *wsdo = (Win32SDOps *)SurfaceData_GetOps(env, sData);
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32BBSD_initSurface");
+-    /* Set the correct dispose method */
+-    wsdo->sdOps.Dispose = Win32BBSD_Dispose;
+-    jboolean status =
+-        initOSSD_WSDO(env, wsdo, width, height, screen, JNI_FALSE);
+-    if (status == JNI_FALSE || parentData == NULL) {
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "Error initalizing back-buffer surface");
+-        return;
+-    }
+-    Win32SDOps *wsdo_parent = (Win32SDOps*)SurfaceData_GetOps(env, parentData);
+-    if (!DDGetAttachedSurface(env, wsdo_parent, wsdo)) {
+-        SurfaceData_ThrowInvalidPipeException(env,
+-            "Can't create attached surface");
+-    }
+-    J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                "Win32BackBufferSurfaceData_initSurface: "\
+-                "completed wsdo->lpSurface=0x%x", wsdo->lpSurface);
+-}
+-
+-/*
+- * Class:     sun_java2d_windows_WinBackBufferSurfaceData
+- * Method:    restoreSurface
+- * Signature: (Lsun/awt/windows/WinBackBufferSurfaceData;)V
+- */
+-JNIEXPORT void JNICALL
+-Java_sun_java2d_windows_WinBackBufferSurfaceData_restoreSurface(JNIEnv *env,
+-    jobject sData, jobject parentData)
+-{
+-    // Noop: back buffer restoration implicit in primary restore
+-}
+-
+-/*
+- * Method:    Win32BBSD_Dispose
+- */
+-void
+-Win32BBSD_Dispose(JNIEnv *env, SurfaceDataOps *ops)
+-{
+-    // ops is assumed non-null as it is checked in SurfaceData_DisposeOps
+-    Win32SDOps *wsdo = (Win32SDOps*)ops;
+-    J2dTraceLn(J2D_TRACE_INFO, "Win32BBSD_Dispose");
+-    if (wsdo->lpSurface != NULL && !wsdo->surfaceLost) {
+-        delete wsdo->lpSurface;
+-        wsdo->lpSurface = NULL;
+-    }
+-    disposeOSSD_WSDO(env, wsdo);
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/WindowsFlags.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -41723,9 +49832,9 @@
  }
  
  extern "C" {
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h
---- openjdk.orig/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h	2011-01-08 01:26:50.487202383 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/WindowsFlags.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/java2d/windows/WindowsFlags.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,6 +1,6 @@
  
  /*
@@ -41756,9 +49865,4806 @@
 +BOOL IsD3DForced();
  
  #endif WINDOWSFLAGS_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/ddrawObject.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/ddrawObject.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1452 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+- /**
+-  * ddrawObject.cpp
+-  *
+-  * This file holds classes used to access DirectDraw functionality.
+-  * There are two main classes here used by the outside world:
+-  * DDraw and DDrawSurface.  DDraw holds the actual DirectDraw
+-  * device object, responsible for creating surfaces and doing other
+-  * device-wide operations.  DDraw also holds a pointer to a D3DContext,
+-  * which has the d3dObject and shared d3d drawing device for the
+-  * display device (see d3dObject.cpp).  DDrawSurface holds an individual
+-  * surface, such as the primary or an offscreen surface.
+-  * DDrawSurface also holds a pointer to the device-wide d3dContext
+-  * because some operations on the surface may actually be 3D methods
+-  * that need to be forwarded to the 3d drawing device.
+-  * The DirectDraw object and surfaces are wrapped by DXObject
+-  * and DXSurface classes in order to be able to generically handle
+-  * DDraw method calls without the caller having to worry about which
+-  * version of DirectX we are currently running with.
+-  * A picture might help to explain the hierarchy of objects herein:
+-  *
+-  *                  DDraw (one per display device)
+-  *                   field: DXObject *dxObject
+-  *                   field: DXSurface *lpPrimary
+-  *                   field: D3DContext *d3dContext
+-  *
+-  *
+-  *                  DXObject (one per display device)
+-  *                   field: IDirectDraw7 (Actual DirectX objects)
+-  *
+-  *
+-  *                  DDrawSurface (one per offscreen or onscreen surface)
+-  *                   field: DXSurface (for ddraw operations)
+-  *
+-  *                  DXSurface (wrapper for DirectDraw operations)
+-  *                   field: IDirectDrawSurface7 (DirectX object)
+-  *
+-  * The wrapper classes work by using the same method calls as the
+-  * actual DirectX calls and simply forwarding those calls into the
+-  * the appropriate DirectX object that they contain.  The reason for
+-  * the indirection is that the subclasses can thus call into the
+-  * appropriate interface without the caller having to do that
+-  * explicitly.  So instead of something like:
+-  *         if (usingDX7) {
+-  *             dx7Surface->Lock();
+-  *         } else if (usingDXN) {
+-  *             dxNSurface->Lock();
+-  *         }
+-  * the caller can simply call:
+-  *         dxSurface->Lock();
+-  * and let the magic of subclassing handle the details of which interface
+-  * to call, depending on which interface was loaded (and thus which
+-  * subclass was instantiated).
+-  * The main difference between actual DirectX method calls and the
+-  * method calls of these wrapper classes is that we avoid using any
+-  * structures or parameters that are different between the versions
+-  * of DirectX that we currently support (DX7).  For example,
+-  * Lock takes DDSURFACEDESC2 structure for DX7.
+-  * For these methods, we pick an appropriate higher-level data
+-  * structure that can be cast and queried as appropriate at the
+-  * subclass level (in the Lock example, we pass a
+-  * SurfaceDataRasInfo structure, holds the data from the
+-  * call that we need.
+-  *
+-  * Note that the current implementation of the d3d and ddraw pipelines
+-  * relies heavily on DX7, so some of the abstraction concepts aren't
+-  * applicable. They may become more relevant once we get back to
+-  * version-independent implementation.
+-  */
+-
+-#include "ddrawUtils.h"
+-#include "ddrawObject.h"
+-#include "WindowsFlags.h"
+-#include "java_awt_DisplayMode.h"
+-
+-#include "D3DContext.h"
+-
+-extern HINSTANCE                    hLibDDraw; // DDraw Library handle
+-
+-
+-#ifdef DEBUG
+-void StackTrace() {
+-    JNIEnv* env;
+-    jvm->AttachCurrentThread((void**)&env, NULL);
+-    jclass threadClass = env->FindClass("java/lang/Thread");
+-    jmethodID dumpStackMID = env->GetStaticMethodID(threadClass, "dumpStack", "()V");
+-    env->CallStaticVoidMethod(threadClass, dumpStackMID);
+-}
+-#endif
+-
+-/**
+- * Class DDrawDisplayMode
+- */
+-DDrawDisplayMode::DDrawDisplayMode() :
+-        width(0), height(0), bitDepth(0), refreshRate(0) {}
+-DDrawDisplayMode::DDrawDisplayMode(DDrawDisplayMode& rhs) :
+-        width(rhs.width), height(rhs.height), bitDepth(rhs.bitDepth),
+-        refreshRate(rhs.refreshRate) {}
+-DDrawDisplayMode::DDrawDisplayMode(jint w, jint h, jint b, jint r) :
+-    width(w), height(h), bitDepth(b), refreshRate(r) {}
+-
+-DDrawDisplayMode::~DDrawDisplayMode() {}
+-
+-
+-/**
+- * Class DDraw::EnumDisplayModesParam
+- */
+-DXObject::EnumDisplayModesParam::EnumDisplayModesParam(
+-    DDrawDisplayMode::Callback cb, void* ct) : callback(cb), context(ct) {}
+-
+-DXObject::EnumDisplayModesParam::~EnumDisplayModesParam() {}
+-
+-/**
+- * DXObject
+- * These classes handle operations specific to the DX7 interfaces
+- */
+-
+-DXObject::~DXObject()
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "~DXObject: ddObject = 0x%x", ddObject);
+-    ddObject->Release();
+-    ddObject = NULL;
+-}
+-
+-HRESULT DXObject::GetAvailableVidMem(DWORD caps, DWORD *total,
+-                                     DWORD *free)
+-{
+-    DDSCAPS2 ddsCaps;
+-    memset(&ddsCaps, 0, sizeof(ddsCaps));
+-    ddsCaps.dwCaps = caps;
+-    return ddObject->GetAvailableVidMem(&ddsCaps, total, free);
+-}
+-
+-HRESULT DXObject::CreateSurface(DWORD dwFlags,
+-                                DWORD ddsCaps,
+-                                DWORD ddsCaps2,
+-                                LPDDPIXELFORMAT lpPf,
+-                                int width, int height,
+-                                DXSurface **lpDDSurface,
+-                                int numBackBuffers)
+-{
+-    IDirectDrawSurface7 *lpSurface;
+-    HRESULT ddResult;
+-    DDSURFACEDESC2 ddsd;
+-    memset(&ddsd, 0, sizeof(ddsd));
+-    ddsd.dwSize = sizeof(ddsd);
+-    ddsd.dwFlags = dwFlags;
+-    ddsd.ddsCaps.dwCaps = ddsCaps;
+-    ddsd.ddsCaps.dwCaps2 = ddsCaps2;
+-    ddsd.dwWidth = width;
+-    ddsd.dwHeight = height;
+-    ddsd.dwBackBufferCount = numBackBuffers;
+-    if (lpPf) {
+-        memcpy(&ddsd.ddpfPixelFormat, lpPf, sizeof(DDPIXELFORMAT));
+-    }
+-    ddResult = ddObject->CreateSurface(&ddsd, &lpSurface, NULL);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DXObject::CreateSurface");
+-        return ddResult;
+-    }
+-    *lpDDSurface = new DXSurface(lpSurface);
+-    J2dTraceLn3(J2D_TRACE_INFO,
+-                "DXObject::CreateSurface: w=%-4d h=%-4d dxSurface=0x%x",
+-                width, height, *lpDDSurface);
+-    return DD_OK;
+-}
+-
+-HRESULT DXObject::GetDisplayMode(DDrawDisplayMode &dm)
+-{
+-    HRESULT ddResult;
+-    DDSURFACEDESC2 ddsd;
+-    memset(&ddsd, 0, sizeof(ddsd));
+-    ddsd.dwSize = sizeof(ddsd);
+-    ddResult = ddObject->GetDisplayMode(&ddsd);
+-    dm.width = ddsd.dwWidth;
+-    dm.height = ddsd.dwHeight;
+-    dm.bitDepth = ddsd.ddpfPixelFormat.dwRGBBitCount;
+-    dm.refreshRate = ddsd.dwRefreshRate;
+-    return ddResult;
+-}
+-
+-HRESULT DXObject::EnumDisplayModes(DDrawDisplayMode *dm,
+-                                   DDrawDisplayMode::Callback callback,
+-                                   void *context)
+-{
+-    DDSURFACEDESC2 ddsd;
+-    memset(&ddsd, 0, sizeof(ddsd));
+-    ddsd.dwSize = sizeof(ddsd);
+-    LPDDSURFACEDESC2 pDDSD;
+-    if (dm == NULL) {
+-        pDDSD = NULL;
+-    } else {
+-        ddsd.dwFlags = DDSD_WIDTH | DDSD_HEIGHT;
+-        ddsd.dwWidth = dm->width;
+-        ddsd.dwHeight = dm->height;
+-        ddsd.dwFlags |= DDSD_PIXELFORMAT;
+-        ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
+-        ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+-        // dm->bitDepth could be BIT_DEPTH_MULTI or some other invalid value,
+-        // we rely on DirectDraw to reject such mode
+-        ddsd.ddpfPixelFormat.dwRGBBitCount = dm->bitDepth;
+-        if (dm->refreshRate != java_awt_DisplayMode_REFRESH_RATE_UNKNOWN) {
+-            ddsd.dwFlags |= DDSD_REFRESHRATE;
+-            ddsd.dwRefreshRate = dm->refreshRate;
+-        }
+-        pDDSD = &ddsd;
+-    }
+-
+-    EnumDisplayModesParam param(callback, context);
+-
+-    HRESULT ddResult;
+-    ddResult = ddObject->EnumDisplayModes(DDEDM_REFRESHRATES, pDDSD,
+-                                          &param, EnumCallback);
+-    return ddResult;
+-}
+-
+-HRESULT DXObject::CreateD3DObject(IDirect3D7 **d3dObject)
+-{
+-    HRESULT ddResult = ddObject->QueryInterface(IID_IDirect3D7,
+-                                                (void**)d3dObject);
+-    if (FAILED(ddResult)) {
+-        DebugPrintDirectDrawError(ddResult,
+-                                  "DXObject::CreateD3DObject: "\
+-                                  "query Direct3D7 interface failed");
+-    }
+-    return ddResult;
+-}
+-
+-/**
+- * Class DDraw
+- */
+-DDraw::DDraw(DXObject *dxObject) {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::DDraw");
+-    lpPrimary = NULL;
+-    d3dContext = NULL;
+-    deviceUseD3D = useD3D;
+-    this->dxObject = dxObject;
+-}
+-
+-DDraw::~DDraw() {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::~DDraw");
+-    if (dxObject) {
+-        delete dxObject;
+-    }
+-    if (d3dContext) {
+-        delete d3dContext;
+-    }
+-}
+-
+-DDraw *DDraw::CreateDDrawObject(GUID *lpGUID, HMONITOR hMonitor) {
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::CreateDDrawObject");
+-    HRESULT ddResult;
+-    DXObject *newDXObject;
+-
+-    // First, try to create a DX7 object
+-    FnDDCreateExFunc ddCreateEx = NULL;
+-
+-    if (getenv("NO_J2D_DX7") == NULL) {
+-        ddCreateEx = (FnDDCreateExFunc)
+-        ::GetProcAddress(hLibDDraw, "DirectDrawCreateEx");
+-    }
+-
+-    if (ddCreateEx) {
+-
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  Using DX7");
+-        // Success - we are going to use the DX7 interfaces
+-        // create ddraw object
+-        IDirectDraw7    *ddObject;
+-
+-        ddResult = (*ddCreateEx)(lpGUID, (void**)&ddObject, IID_IDirectDraw7, NULL);
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult,
+-                                      "DDraw::CreateDDrawObject: "\
+-                                      "DirectDrawCreateEx failed");
+-            return NULL;
+-        }
+-        ddResult = ddObject->SetCooperativeLevel(NULL,
+-                                                 (DDSCL_NORMAL |
+-                                                  DDSCL_FPUPRESERVE));
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult,
+-                                      "DDraw::CreateDDrawObject: Error "\
+-                                      "setting cooperative level");
+-            return NULL;
+-        }
+-        newDXObject = new DXObject(ddObject, hMonitor);
+-
+-    } else {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "DDraw::CreateDDrawObject: No DX7+, ddraw is disabled");
+-        return NULL;
+-    }
+-
+-    return new DDraw(newDXObject);
+-}
+-
+-BOOL DDraw::GetDDCaps(LPDDCAPS caps) {
+-    HRESULT ddResult;
+-
+-    memset(caps, 0, sizeof(*caps));
+-    caps->dwSize = sizeof(*caps);
+-    ddResult = dxObject->GetCaps(caps, NULL);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult,
+-                                  "DDraw::GetDDCaps: dxObject->GetCaps failed");
+-        return FALSE;
+-    }
+-    return TRUE;
+-}
+-
+-HRESULT DDraw::GetDDAvailableVidMem(DWORD *freeMem)
+-{
+-    DDrawDisplayMode dm;
+-    HRESULT ddResult;
+-
+-    ddResult = dxObject->GetAvailableVidMem((DDSCAPS_VIDEOMEMORY |
+-                                             DDSCAPS_OFFSCREENPLAIN),
+-                                            NULL, freeMem);
+-    if (*freeMem == 0 || ddResult != DD_OK) {
+-        // Need to check it out ourselves: allocate as much as we can
+-        // and return that amount
+-        DDSURFACEDESC ddsd;
+-        ZeroMemory (&ddsd, sizeof(ddsd));
+-        ddsd.dwSize = sizeof( ddsd );
+-        HRESULT ddr = dxObject->GetDisplayMode(dm);
+-        if (ddr != DD_OK)
+-            DebugPrintDirectDrawError(ddr,
+-                "DDraw::GetDDAvailableVidMem: GetDisplayMode failed");
+-        int bytesPerPixel = dm.bitDepth;
+-        static int maxSurfaces = 20;
+-        DXSurface **lpDDSOffscreenVram = (DXSurface**)
+-            safe_Malloc(maxSurfaces*sizeof(DXSurface*));
+-        DWORD dwFlags = (DWORD)(DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH);
+-        DWORD ddsCaps = (DWORD)(DDSCAPS_VIDEOMEMORY | DDSCAPS_OFFSCREENPLAIN);
+-        int size = 1024;
+-        int numVramSurfaces = 0;
+-        int bitsAllocated = 0;
+-        BOOL done = FALSE;
+-        while (!done) {
+-            HRESULT hResult =
+-                dxObject->CreateSurface(dwFlags, ddsCaps, NULL, size, size,
+-                                        &lpDDSOffscreenVram[numVramSurfaces]);
+-            if (hResult != DD_OK) {
+-                if (size > 1) {
+-                    size >>= 1;
+-                } else {
+-                    done = TRUE;
+-                }
+-            } else {
+-                *freeMem += size * size * bytesPerPixel;
+-                numVramSurfaces++;
+-                if (numVramSurfaces == maxSurfaces) {
+-                    // Need to reallocate surface holder array
+-                    int newMaxSurfaces = 2 * maxSurfaces;
+-                    DXSurface **newSurfaceArray = (DXSurface**)
+-                        safe_Malloc(maxSurfaces*sizeof(DXSurface*));
+-                    for (int i= 0; i < maxSurfaces; ++i) {
+-                        newSurfaceArray[i] = lpDDSOffscreenVram[i];
+-                    }
+-                    free(lpDDSOffscreenVram);
+-                    maxSurfaces = newMaxSurfaces;
+-                    lpDDSOffscreenVram = newSurfaceArray;
+-                }
+-            }
+-        }
+-        // Now release all the surfaces we allocated
+-        for (int i = 0; i < numVramSurfaces; ++i) {
+-            delete lpDDSOffscreenVram[i];
+-        }
+-        free(lpDDSOffscreenVram);
+-    }
+-    return ddResult;
+-}
+-
+-
+-DDrawSurface* DDraw::CreateDDOffScreenSurface(DWORD width, DWORD height,
+-                                              DWORD depth,
+-                                              jint transparency,
+-                                              DWORD surfaceTypeCaps)
+-{
+-    HRESULT ddResult;
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::CreateDDOffScreenSurface");
+-
+-    DXSurface *dxSurface;
+-    DWORD dwFlags, ddsCaps;
+-
+-    // Create the offscreen surface
+-    dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
+-
+-    switch (transparency) {
+-    case TR_BITMASK:
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  bitmask surface");
+-        dwFlags |= DDSD_CKSRCBLT;
+-        /*FALLTHROUGH*/
+-    case TR_OPAQUE:
+-        ddsCaps = DDSCAPS_OFFSCREENPLAIN | surfaceTypeCaps;
+-    }
+-    J2dTraceLn1(J2D_TRACE_VERBOSE, "  creating %s surface",
+-                (transparency == TR_BITMASK ? "bitmask" : "opaque"));
+-
+-    DDrawSurface* ret = NULL;
+-    if (dxObject) {
+-        ddResult = dxObject->CreateSurface(dwFlags, ddsCaps,
+-                                           NULL /*texture pixel format*/,
+-                                           width, height, &dxSurface);
+-        if (ddResult == DD_OK) {
+-            ret = new DDrawSurface(this, dxSurface);
+-        } else {
+-            DebugPrintDirectDrawError(ddResult,
+-                                      "DDraw::CreateDDOffScreenSurface: "\
+-                                      "dxObject->CreateSurface failed");
+-        }
+-    }
+-
+-    return ret;
+-}
+-
+-DDrawSurface* DDraw::CreateDDPrimarySurface(DWORD backBufferCount)
+-{
+-    HRESULT ddResult;
+-    DXSurface *dxSurface;
+-    DWORD dwFlags, ddsCaps;
+-    LPDIRECTDRAWSURFACE lpSurface(NULL);
+-    DDSURFACEDESC ddsd;
+-    memset(&ddsd, 0, sizeof(ddsd));
+-    ddsd.dwSize = sizeof(DDSURFACEDESC);
+-
+-    J2dRlsTraceLn1(J2D_TRACE_INFO,
+-                   "DDraw::CreateDDPrimarySurface: back-buffers=%d",
+-                   backBufferCount);
+-    // create primary surface. There is one of these per ddraw object
+-    dwFlags = DDSD_CAPS;
+-    ddsCaps = DDSCAPS_PRIMARYSURFACE;
+-    if (backBufferCount > 0) {
+-        dwFlags |= DDSD_BACKBUFFERCOUNT;
+-        ddsCaps |= (DDSCAPS_FLIP | DDSCAPS_COMPLEX);
+-
+-        // this is required to be able to use d3d for rendering to
+-        // a backbuffer
+-        if (deviceUseD3D) {
+-            ddsCaps |= DDSCAPS_3DDEVICE;
+-        }
+-    }
+-    DDrawSurface* ret;
+-    if (lpPrimary) {
+-
+-        lpPrimary->GetExclusiveAccess();
+-        // REMIND: it looks like we need to release
+-        // d3d resources associated with this
+-        // surface prior to releasing the dd surfaces;
+-        ReleaseD3DContext();
+-
+-        ddResult = lpPrimary->ReleaseSurface();
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult,
+-                "DDraw::CreateDDPrimarySurface: failed releasing old primary");
+-        }
+-        lpPrimary->dxSurface = NULL;
+-    }
+-    if (dxObject) {
+-        ddResult = dxObject->CreateSurface(dwFlags, ddsCaps, &dxSurface,
+-                                           backBufferCount);
+-    } else {
+-        if (lpPrimary) {
+-            lpPrimary->ReleaseExclusiveAccess();
+-        }
+-        return NULL;
+-    }
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult,
+-                                  "DDraw::CreateDDPrimarySurface: "\
+-                                  "CreateSurface failed");
+-        if (lpPrimary) {
+-            lpPrimary->ReleaseExclusiveAccess();
+-        }
+-        return NULL;
+-    }
+-
+-    if (lpPrimary) {
+-        lpPrimary->SetNewSurface(dxSurface);
+-        lpPrimary->ReleaseExclusiveAccess();
+-    } else {
+-        lpPrimary = new DDrawPrimarySurface(this, dxSurface);
+-    }
+-
+-    // The D3D context will be initialized when it's requested
+-    // by the D3DContext java class (see D3DContext.cpp:initNativeContext).
+-
+-    ret = lpPrimary;
+-    J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                "DDraw::CreateDDPrimarySurface new primary=0x%x", ret);
+-    return ret;
+-}
+-
+-void
+-DDraw::InitD3DContext()
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::InitD3DContext");
+-    // note: the first time the context initialization fails,
+-    // deviceUseD3D is set to FALSE, and we never attempt to
+-    // initialize it again later.
+-    // For example, if the app switches to a display mode where
+-    // d3d is not supported, we disable d3d, but it stays disabled
+-    // even when we switch back to a supported mode
+-    if (deviceUseD3D) {
+-        if (d3dContext == NULL) {
+-            d3dContext = D3DContext::CreateD3DContext(this, dxObject);
+-        } else {
+-            d3dContext->CreateD3DDevice();
+-        }
+-    }
+-}
+-
+-void
+-DDraw::ReleaseD3DContext()
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::ReleaseD3DContext");
+-    if (d3dContext != NULL) {
+-        d3dContext->Release3DDevice();
+-    }
+-}
+-
+-DDrawClipper* DDraw::CreateDDClipper() {
+-    HRESULT ddResult;
+-
+-    LPDIRECTDRAWCLIPPER pClipper;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::CreateDDClipper");
+-    ddResult = dxObject->CreateClipper(0, &pClipper);
+-
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDraw::CreateDDClipper");
+-        return NULL;
+-    }
+-
+-    return new DDrawClipper(pClipper);
+-}
+-
+-BOOL DDraw::GetDDDisplayMode(DDrawDisplayMode& dm) {
+-    HRESULT ddResult;
+-
+-    ddResult = dxObject->GetDisplayMode(dm);
+-
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "GetDDDisplayMode");
+-        return FALSE;
+-    }
+-
+-    return TRUE;
+-}
+-
+-HRESULT DDraw::SetDDDisplayMode(DDrawDisplayMode& dm) {
+-
+-    J2dTraceLn4(J2D_TRACE_INFO, "DDraw::SetDisplayMode %dx%dx%d, %d",
+-                dm.width, dm.height, dm.bitDepth, dm.refreshRate);
+-
+-    HRESULT ddResult;
+-    // Sleep so that someone can't programatically set the display mode
+-    // multiple times very quickly and accidentally crash the driver
+-    static DWORD prevTime = 0;
+-    DWORD currTime = ::GetTickCount();
+-    DWORD timeDiff = (currTime - prevTime);
+-    if (timeDiff < 500) {
+-        ::Sleep(500 - timeDiff);
+-    }
+-    prevTime = currTime;
+-
+-    ddResult = dxObject->SetDisplayMode(dm.width, dm.height, dm.bitDepth,
+-                                        dm.refreshRate);
+-
+-    return ddResult;
+-}
+-
+-/**
+- * Private callback used by EnumDisplayModes
+- */
+-long WINAPI DXObject::EnumCallback(LPDDSURFACEDESC2 pDDSD,
+-    void* pContext)
+-{
+-    EnumDisplayModesParam* pParam =
+-        (EnumDisplayModesParam*)pContext;
+-    DDrawDisplayMode::Callback callback = pParam->callback;
+-    void* context = pParam->context;
+-
+-    DDrawDisplayMode displayMode(pDDSD->dwWidth, pDDSD->dwHeight,
+-        pDDSD->ddpfPixelFormat.dwRGBBitCount, pDDSD->dwRefreshRate);
+-    (*callback)(displayMode, context);
+-    return DDENUMRET_OK;
+-}
+-
+-BOOL DDraw::EnumDDDisplayModes(DDrawDisplayMode* constraint,
+-    DDrawDisplayMode::Callback callback, void* context)
+-{
+-    HRESULT ddResult;
+-
+-    ddResult = dxObject->EnumDisplayModes(constraint, callback, context);
+-
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDraw::EnumDisplayModes");
+-        return FALSE;
+-    }
+-
+-    return TRUE;
+-}
+-
+-BOOL DDraw::RestoreDDDisplayMode() {
+-    HRESULT ddResult;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::RestoreDDDisplayMode");
+-    ddResult = dxObject->RestoreDisplayMode();
+-
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDraw::RestoreDDDisplayMode");
+-        return FALSE;
+-    }
+-    return TRUE;
+-}
+-
+-HRESULT DDraw::SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
+-{
+-    HRESULT ddResult;
+-    J2dTraceLn(J2D_TRACE_INFO, "DDraw::SetCooperativeLevel");
+-    ddResult = dxObject->SetCooperativeLevel(hwnd, dwFlags);
+-    /* On some hardware (Radeon 7500 and GeForce2), attempting
+-     * to use the d3d device created prior to running FS|EX
+-     * may cause a system crash.  A workaround is to restore
+-     * the primary surface and recreate the
+-     * 3d device on the restored surface.
+-     */
+-    if ((ddResult == DD_OK) && lpPrimary && d3dContext) {
+-
+-        lpPrimary->GetExclusiveAccess();
+-        if (lpPrimary->IsLost() != DD_OK) {
+-            // Only bother with workaround if the primary has been lost
+-            // Note that this call may fail with DDERR_WRONGMODE if
+-            // the surface was created in a different mode, but we
+-            // do not want to propagate this (non-fatal) error.
+-            HRESULT res = lpPrimary->Restore();
+-            if (FAILED(res)) {
+-                DebugPrintDirectDrawError(res,
+-                                          "DDraw::SetCooperativeLevel:"
+-                                          " lpPrimary->Restore() failed");
+-            }
+-        }
+-        lpPrimary->ReleaseExclusiveAccess();
+-    }
+-    return ddResult;
+-}
+-
+-
+-DXSurface::DXSurface(IDirectDrawSurface7 *lpSurface)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::DXSurface");
+-    this->lpSurface = lpSurface;
+-    this->versionID = VERSION_DX7;
+-    this->depthBuffer = NULL;
+-    memset(&ddsd, 0, sizeof(ddsd));
+-    ddsd.dwSize = sizeof(ddsd);
+-    lpSurface->GetSurfaceDesc(&ddsd);
+-    width = ddsd.dwWidth;
+-    height = ddsd.dwHeight;
+-}
+-
+-HRESULT DXSurface::Restore() {
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::Restore");
+-    HRESULT resDepth = D3D_OK, resSurface;
+-    if (depthBuffer != NULL) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "  restoring depth buffer");
+-        resDepth = depthBuffer->Restore();
+-    }
+-    // If this is an attached backbuffer surface, we should not
+-    // restore it explicitly, as it will be restored implicitly with the
+-    // primary surface's restoration. But we did need to restore the
+-    // depth buffer, because it won't be restored with the primary.
+-    if ((ddsd.ddsCaps.dwCaps & DDSCAPS_BACKBUFFER) != 0) {
+-        return resDepth;
+-    }
+-    resSurface = lpSurface->Restore();
+-    return FAILED(resDepth) ? resDepth : resSurface;
+-}
+-HRESULT DXSurface::Lock(RECT *lockRect, SurfaceDataRasInfo *pRasInfo,
+-                         DWORD dwFlags, HANDLE hEvent)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::Lock");
+-    HRESULT retValue = lpSurface->Lock(lockRect, &ddsd, dwFlags, hEvent);
+-    if (SUCCEEDED(retValue) && pRasInfo) {
+-        // Someone might call Lock() just to synchronize, in which case
+-        // they don't care about the result and pass in NULL for pRasInfo
+-        pRasInfo->pixelStride = ddsd.ddpfPixelFormat.dwRGBBitCount / 8;
+-        pRasInfo->pixelBitOffset = ddsd.ddpfPixelFormat.dwRGBBitCount & 7;
+-        pRasInfo->scanStride = ddsd.lPitch;
+-        pRasInfo->rasBase = (void *) ddsd.lpSurface;
+-    }
+-    return retValue;
+-}
+-
+-HRESULT DXSurface::AttachDepthBuffer(DXObject *dxObject,
+-                                     BOOL bAccelerated,
+-                                     DDPIXELFORMAT *pddpf)
+-{
+-    HRESULT res;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::AttachDepthBuffer");
+-    J2dTraceLn1(J2D_TRACE_VERBOSE, "  bAccelerated=%d", bAccelerated);
+-    // we already have a depth buffer
+-    if (depthBuffer != NULL) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE,
+-                   "  depth buffer already created");
+-        // we don't want to restore the depth buffer
+-        // here if it was lost, it will be restored when
+-        // the surface is restored.
+-        if (FAILED(res = depthBuffer->IsLost())) {
+-            J2dTraceLn(J2D_TRACE_WARNING,
+-                       "DXSurface::AttachDepthBuffer: depth buffer is lost");
+-        }
+-        return res;
+-    }
+-
+-    DWORD flags = DDSD_WIDTH|DDSD_HEIGHT|DDSD_CAPS|DDSD_PIXELFORMAT;
+-    DWORD caps = DDSCAPS_ZBUFFER;
+-    if (bAccelerated) {
+-        caps |= DDSCAPS_VIDEOMEMORY;
+-    } else {
+-        caps |= DDSCAPS_SYSTEMMEMORY;
+-    }
+-    if (SUCCEEDED(res =
+-                  dxObject->CreateSurface(flags, caps, pddpf,
+-                                          GetWidth(), GetHeight(),
+-                                          (DXSurface **)&depthBuffer, 0)))
+-    {
+-        if (FAILED(res =
+-                   lpSurface->AddAttachedSurface(depthBuffer->GetDDSurface())))
+-        {
+-            DebugPrintDirectDrawError(res, "DXSurface::AttachDepthBuffer: "\
+-                                      "failed to attach depth buffer");
+-            depthBuffer->Release();
+-            delete depthBuffer;
+-            depthBuffer = NULL;
+-        }
+-        return res;
+-    }
+-    DebugPrintDirectDrawError(res, "DXSurface::AttachDepthBuffer: "\
+-                              "depth buffer creation failed");
+-    return res;
+-}
+-
+-HRESULT DXSurface::GetAttachedSurface(DWORD dwCaps, DXSurface **bbSurface)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::GetAttachedSurface");
+-    IDirectDrawSurface7 *lpDDSBack;
+-    HRESULT retValue;
+-    DDSCAPS2 ddsCaps;
+-    memset(&ddsCaps, 0, sizeof(ddsCaps));
+-    ddsCaps.dwCaps = dwCaps;
+-
+-    retValue = lpSurface->GetAttachedSurface(&ddsCaps, &lpDDSBack);
+-    if (retValue == DD_OK) {
+-        *bbSurface = new DXSurface(lpDDSBack);
+-    }
+-    return retValue;
+-}
+-
+-HRESULT DXSurface::SetClipper(DDrawClipper *pClipper)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DXSurface::SetClipper");
+-    // A NULL pClipper is valid; it means we want no clipper
+-    // on this surface
+-    IDirectDrawClipper *actualClipper = pClipper ?
+-                                        pClipper->GetClipper() :
+-                                        NULL;
+-    // Calling SetClipper(NULL) on a surface that currently does
+-    // not have a clipper can cause a crash on some devices
+-    // (e.g., Matrox G400), so only call SetClipper(NULL) if
+-    // there is currently a non-NULL clipper set on this surface.
+-    if (actualClipper || clipperSet) {
+-        clipperSet = (actualClipper != NULL);
+-        return lpSurface->SetClipper(actualClipper);
+-    }
+-    return DD_OK;
+-}
+-
+-int DXSurface::GetSurfaceDepth()
+-{
+-    if (FAILED(lpSurface->GetSurfaceDesc(&ddsd))) {
+-        // Failure: return 0 as an error indication
+-        return 0;
+-    }
+-    return ddsd.ddpfPixelFormat.dwRGBBitCount;
+-}
+-
+-/**
+- * Class DDrawSurface
+- *
+- * This class handles all operations on DirectDraw surfaces.
+- * Mostly, it is a wrapper for the standard ddraw operations on
+- * surfaces, but it also provides some additional functionality.
+- * There is a surfaceLock CriticalSection associated with every
+- * DDrawSurface which is used to make each instance MT-safe.
+- * In general, ddraw itself is MT-safe, but we need to ensure
+- * that accesses to our internal variables are MT-safe as well.
+- * For example, we may need to recreate the primary surface
+- * (during a display-mode-set operation) or release a ddraw
+- * surface (due to a call to GraphicsDevice.flush()). The surfaceLock
+- * enables us to do these operations without putting other threads
+- * in danger of dereferencing garbage memory.
+- *
+- * If a surface has been released but other threads are still
+- * using it, most methods simply return DD_OK and the calling
+- * thread can go about its business without worrying about the
+- * failure.  Some methods (Lock and GetDC) return an error
+- * code so that the caller does not base further operations on
+- * an unsuccessful lock call.
+- */
+-
+-DDrawSurface::DDrawSurface()
+-{
+-    surfaceLock = new DDCriticalSection(this);
+-    //d3dObject = NULL;
+-}
+-
+-DDrawSurface::DDrawSurface(DDraw *ddObject, DXSurface *dxSurface)
+-{
+-    surfaceLock = new DDCriticalSection(this);
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    this->ddObject = ddObject;
+-    this->dxSurface = dxSurface;
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::DDrawSurface: dxSurface=0x%x", dxSurface);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-}
+-
+-DDrawSurface::~DDrawSurface()
+-{
+-    ReleaseSurface();
+-    delete surfaceLock;
+-}
+-
+-/**
+- * This function can only be called when the caller has exclusive
+- * access to the DDrawSurface object.  This is done because some
+- * surfaces (e.g., the primary surface) must be released before a
+- * new one can be created and the surfaceLock must be held during
+- * the entire process so that no other thread can access the
+- * lpSurface before the process is complete.
+- */
+-void DDrawSurface::SetNewSurface(DXSurface *dxSurface)
+-{
+-    this->dxSurface = dxSurface;
+-}
+-
+-HRESULT DDrawSurface::ReleaseSurface() {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::ReleaseSurface: dxSurface=0x%x", dxSurface);
+-    FlushD3DContext();
+-    HRESULT retValue = dxSurface->Release();
+-    dxSurface = NULL;
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::SetClipper(DDrawClipper* pClipper) {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::SetClipper: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    HRESULT retValue = dxSurface->SetClipper(pClipper);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::SetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::SetColorKey: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    HRESULT retValue = dxSurface->SetColorKey(dwFlags, lpDDColorKey);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::GetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::GetColorKey: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DDERR_NOCOLORKEY;
+-    }
+-    HRESULT retValue = dxSurface->GetColorKey(dwFlags, lpDDColorKey);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-/**
+- * NOTE: This function takes the surfaceLock critical section, but
+- * does not release that lock. The
+- * Unlock method for this surface MUST be called before anything
+- * else can happen on the surface.  This is necessary to prevent the
+- * surface from being released or recreated while it is being used.
+- * See also Unlock(), GetDC(), and ReleaseDC().
+- */
+-HRESULT DDrawSurface::Lock(LPRECT lockRect, SurfaceDataRasInfo *pRasInfo,
+-    DWORD dwFlags, HANDLE hEvent) {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::Lock: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        // Return error here so that caller does not assume
+-        // lock worked and perform operations on garbage data
+-        // based on that assumption
+-        return DDERR_INVALIDOBJECT;
+-    }
+-
+-    FlushD3DContext();
+-    HRESULT retValue = dxSurface->Lock(lockRect, pRasInfo, dwFlags, hEvent);
+-    if (retValue != DD_OK) {
+-        // Failure should release CriticalSection: either the lock will
+-        // be attempted again (e.g., DDERR_SURFACEBUSY) or the lock
+-        // failed and DDUnlock will not be called.
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    }
+-
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::Unlock(LPRECT lockRect) {
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::Unlock: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    HRESULT retValue = dxSurface->Unlock(lockRect);
+-    if (retValue != DD_OK && lockRect) {
+-        // Strange and undocumented bug using pre-DX7 interface;
+-        // for some reason unlocking the same rectangle as we
+-        // locked returns a DDERR_NOTLOCKED error, but unlocking
+-        // NULL (the entire surface) seems to work instead.  It is
+-        // as if Lock(&rect) actually performs Lock(NULL) implicitly,
+-        // thus causing Unlock(&rect) to fail but Unlock(NULL) to
+-        // succeed.  Trap this error specifically and try the workaround
+-        // of attempting to unlock the whole surface instead.
+-        retValue = dxSurface->Unlock(NULL);
+-    }
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::Blt(LPRECT destRect, DDrawSurface* pSrc,
+-    LPRECT srcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) {
+-    LPDIRECTDRAWSURFACE lpSrc = NULL;
+-    DXSurface *dxSrcSurface = NULL;
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::Blt: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    if (pSrc) {
+-        pSrc->GetExclusiveAccess();
+-        dxSrcSurface = pSrc->dxSurface;
+-        if (!dxSrcSurface || (dxSrcSurface->IsLost() != DD_OK)) {
+-            // If no src surface, then surface must have been released
+-            // by some other thread.  If src is lost, then we should not
+-            // attempt this operation (causes a crash on some framebuffers).
+-            // Return SURFACELOST error in IsLost() case to force surface
+-            // restoration as necessary.
+-            HRESULT retError;
+-            if (!dxSrcSurface) {
+-                retError = DD_OK;
+-            } else {
+-                retError = DDERR_SURFACELOST;
+-            }
+-            pSrc->ReleaseExclusiveAccess();
+-            CRITICAL_SECTION_LEAVE(*surfaceLock);
+-            return retError;
+-        }
+-        pSrc->FlushD3DContext();
+-    }
+-    FlushD3DContext();
+-    HRESULT retValue = dxSurface->Blt(destRect, dxSrcSurface, srcRect, dwFlags,
+-                                      lpDDBltFx);
+-    if (pSrc) {
+-        pSrc->ReleaseExclusiveAccess();
+-    }
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-void DDrawSurface::FlushD3DContext(BOOL bForce) {
+-    D3DContext *d3dContext = ddObject->GetD3dContext();
+-    if (d3dContext) {
+-        d3dContext->FlushD3DQueueForTarget(bForce ? NULL : this);
+-    }
+-}
+-
+-HRESULT DDrawSurface::Flip(DDrawSurface* pDest, DWORD dwFlags) {
+-    J2dTraceLn2(J2D_TRACE_INFO, "DDrawSurface::Flip this=0x%x pDest=0x%x",
+-                this, pDest);
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    pDest->GetExclusiveAccess();
+-    if (!pDest->dxSurface) {
+-        pDest->ReleaseExclusiveAccess();
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    // Flush the queue unconditionally
+-    FlushD3DContext(TRUE);
+-    HRESULT retValue = dxSurface->Flip(dwFlags);
+-    pDest->ReleaseExclusiveAccess();
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::IsLost() {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::IsLost: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    HRESULT retValue = dxSurface->IsLost();
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-HRESULT DDrawSurface::Restore() {
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::Restore: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    FlushD3DContext();
+-    HRESULT retValue = dxSurface->Restore();
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-/**
+- * Returns the bit depth of the ddraw surface
+- */
+-int DDrawSurface::GetSurfaceDepth() {
+-    int retValue = 0; // default value; 0 indicates some problem getting depth
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    if (dxSurface) {
+-        retValue = dxSurface->GetSurfaceDepth();
+-    }
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-/**
+- * As in Lock(), above, we grab the surfaceLock in this function,
+- * but do not release it until ReleaseDC() is called.  This is because
+- * these functions must be called as a pair (they take a lock on
+- * the surface inside the ddraw runtime) and the surface should not
+- * be released or recreated while the DC is held.  The caveat is that
+- * a failure in this method causes us to release the surfaceLock here
+- * because we will not (and should not) call ReleaseDC if we are returning
+- * an error from GetDC.
+- */
+-HRESULT DDrawSurface::GetDC(HDC *pHDC) {
+-    *pHDC = (HDC)NULL;
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::GetDC: dxSurface=0x%x", dxSurface);
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DDERR_GENERIC;
+-    }
+-    FlushD3DContext();
+-    HRESULT ddResult = dxSurface->GetDC(pHDC);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDrawSurface::GetDC");
+-        if (*pHDC != (HDC)NULL) {
+-            // Probably cannot reach here; we got an error
+-            // but we also got a valid hDC.  Release it and
+-            // return NULL.  Note that releasing the DC also
+-            // releases the surfaceLock so we do not duplicate
+-            // that here
+-            ReleaseDC(*pHDC);
+-            *pHDC = (HDC)NULL;
+-        } else {
+-            CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        }
+-    }
+-    return ddResult;
+-}
+-
+-HRESULT DDrawSurface::ReleaseDC(HDC hDC) {
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDrawSurface::ReleaseDC: dxSurface=0x%x", dxSurface);
+-    if (!hDC) {
+-        // We should not get here, but just in case we need to trap this
+-        // situation and simply noop.  Note that we do not release the
+-        // surfaceLock because we already released it when we failed to
+-        // get the HDC in the first place in GetDC
+-        J2dRlsTraceLn(J2D_TRACE_ERROR, "DDrawSurface::ReleaseDC: Null "\
+-                      "HDC received in ReleaseDC");
+-        return DD_OK;
+-    }
+-    if (!dxSurface) {
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        return DD_OK;
+-    }
+-    HRESULT retValue = dxSurface->ReleaseDC(hDC);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return retValue;
+-}
+-
+-/**
+- * Class DDrawPrimarySurface
+- * This sublcass of DDrawSurface handles primary-specific
+- * functionality.  In particular, the primary can have a
+- * back buffer associated with it; DDrawPrimarySurface holds
+- * the reference to that shared resource.
+- */
+-DDrawPrimarySurface::DDrawPrimarySurface() : DDrawSurface()
+-{
+-    bbHolder = NULL;
+-}
+-
+-DDrawPrimarySurface::DDrawPrimarySurface(DDraw *ddObject,
+-                                         DXSurface *dxSurface) :
+-    DDrawSurface(ddObject, dxSurface)
+-{
+-    bbHolder = NULL;
+-}
+-
+-DDrawPrimarySurface::~DDrawPrimarySurface() {
+-}
+-
+-HRESULT DDrawPrimarySurface::ReleaseSurface() {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDrawPrimarySurface::ReleaseSurface");
+-    if (bbHolder) {
+-        delete bbHolder;
+-        bbHolder = NULL;
+-    }
+-    return DDrawSurface::ReleaseSurface();
+-}
+-
+-void DDrawPrimarySurface::SetNewSurface(DXSurface *dxSurface)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDrawPrimarySurface::SetNewSurface");
+-    if (bbHolder) {
+-        delete bbHolder;
+-        bbHolder = NULL;
+-    }
+-    DDrawSurface::SetNewSurface(dxSurface);
+-}
+-
+-DDrawSurface* DDrawPrimarySurface::GetDDAttachedSurface(DWORD caps) {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDrawPrimarySurface::GetDDAttachedSurface");
+-    if (!bbHolder) {
+-        HRESULT ddResult;
+-        DWORD dwCaps;
+-        if (caps == 0) {
+-            dwCaps = DDSCAPS_BACKBUFFER;
+-        } else {
+-            dwCaps = caps;
+-        }
+-
+-        DXSurface *dxSurfaceBB;
+-
+-        CRITICAL_SECTION_ENTER(*surfaceLock);
+-        if (!dxSurface) {
+-            CRITICAL_SECTION_LEAVE(*surfaceLock);
+-            return NULL;
+-        }
+-        ddResult = dxSurface->GetAttachedSurface(dwCaps, &dxSurfaceBB);
+-        CRITICAL_SECTION_LEAVE(*surfaceLock);
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult,
+-                "DDrawPrimarySurface::GetDDAttachedSurface failed");
+-            return NULL;
+-        }
+-        bbHolder = new BackBufferHolder(dxSurfaceBB);
+-    }
+-    return new DDrawBackBufferSurface(ddObject, bbHolder);
+-}
+-
+-/**
+- * Primary restoration is different from non-primary because
+- * of the d3dContext object.  There is a bug (4754180) on some
+- * configurations (including Radeon and GeForce2) where using
+- * the d3dDevice associated with a primary that is either lost
+- * or has been restored can crash the system.  The solution is
+- * to force a primary restoration at the appropriate time and
+- * to recreate the d3d device associated with that primary.
+- */
+-HRESULT DDrawPrimarySurface::Restore() {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDrawPrimarySurface::Restore");
+-    AwtToolkit::GetInstance().SendMessage(WM_AWT_D3D_RELEASE_DEVICE,
+-                                          (WPARAM)ddObject, NULL);
+-
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "  Restoring primary surface");
+-    HRESULT res = DDrawSurface::Restore();
+-    if (SUCCEEDED(res) && bbHolder != NULL) {
+-        res = bbHolder->RestoreDepthBuffer();
+-    }
+-    return res;
+-}
+-
+-
+-/**
+- * Class DDrawBackBufferSurface
+- * This subclass handles functionality that is specific to
+- * the back buffer surface.  The back buffer is a different
+- * type of surface than a typical ddraw surface; it is
+- * created by the primary surface and restored/released
+- * implicitly by similar operations on the primary.
+- * There is only one back buffer per primary, so each
+- * DDrawBackBufferSurface object which refers to that object
+- * shares the reference to it.  In order to appropriately
+- * share this resource (both avoid creating too many objects
+- * and avoid leaking those that we create), we use the
+- * BackBufferHolder structure to contain the single ddraw
+- * surface and register ourselves with that object.  This
+- * allows us to have multi-threaded access to the back buffer
+- * because if it was somehow deleted by another thread while we
+- * are still using it, then the reference to our lpSurface will
+- * be nulled-out for us and we will noop operations on that
+- * surface (instead of crashing due to dereferencing a released
+- * resource).
+- */
+-DDrawBackBufferSurface::DDrawBackBufferSurface() : DDrawSurface() {
+-}
+-
+-DDrawBackBufferSurface::DDrawBackBufferSurface(DDraw *ddObject,
+-                                               BackBufferHolder *holder) :
+-    DDrawSurface(ddObject, holder->GetBackBufferSurface())
+-{
+-    J2dTraceLn(J2D_TRACE_INFO,
+-               "DDrawBackBufferSurface::DDrawBackBufferSurface");
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    // Register ourselves with the back buffer container.
+-    // This means that we will be updated by that container
+-    // if the back buffer goes away.
+-    bbHolder = holder;
+-    bbHolder->Add(this);
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-}
+-
+-/**
+- * This destructor removes us from the list of back buffers
+- * that hold pointers to the one true back buffer.  It also
+- * nulls-out references to the ddraw and d3d objects to make
+- * sure that our parent class does not attempt to release
+- * those objects.
+- */
+-DDrawBackBufferSurface::~DDrawBackBufferSurface() {
+-    J2dTraceLn(J2D_TRACE_INFO,
+-               "DDrawBackBufferSurface::~DDrawBackBufferSurface");
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    if (bbHolder) {
+-        // Tell the back buffer container that we are no
+-        // longer alive; otherwise it will try to update
+-        // us when the back buffer dies.
+-        bbHolder->Remove(this);
+-    }
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    // Note: our parent class destructor also calls ReleaseSurface,
+-    // but a function called within a destructor calls only the local
+-    // version, not the overridden version.  So we first call our
+-    // overridden ReleaseSurface to make sure our variables are nulled-out
+-    // before calling the superclass which will attempt to release
+-    // non-null objects.
+-    ReleaseSurface();
+-}
+-
+-/**
+- * Note that in this subclass' version of ReleaseSurface
+- * we merely null-out the references to our objects.
+- * They are shared resources and will be deleted elsewhere.
+- */
+-HRESULT DDrawBackBufferSurface::ReleaseSurface() {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDrawBackBufferSurface::ReleaseSurface");
+-    CRITICAL_SECTION_ENTER(*surfaceLock);
+-    bbHolder = NULL;
+-    dxSurface = NULL;
+-    CRITICAL_SECTION_LEAVE(*surfaceLock);
+-    return DD_OK;
+-}
+-
+-/**
+- * Class BackBufferHolder
+- * This class holds the real ddraw/d3d back buffer surfaces.
+- * It also contains a list of everyone that is currently
+- * sharing those resources.  When the back buffer goes away
+- * due to the primary being released or deleted), then
+- * we tell everyone on the list that the back buffer is
+- * gone (by nulling out their references to that object)
+- * and thus avoid dereferencing a released resource.
+- */
+-BackBufferHolder::BackBufferHolder(DXSurface *backBuffer)
+-{
+-    this->backBuffer = backBuffer;
+-    bbList = NULL;
+-}
+-
+-/**
+- * The back buffer is going away; iterate through our
+- * list and tell all of those objects that information.
+- * Then go ahead and actually release the back buffer's
+- * resources.
+- */
+-BackBufferHolder::~BackBufferHolder()
+-{
+-    bbLock.Enter();
+-    BackBufferList *bbListPtr = bbList;
+-    while (bbListPtr) {
+-        bbListPtr->backBuffer->ReleaseSurface();
+-        BackBufferList *bbTmp = bbListPtr;
+-        bbListPtr = bbListPtr->next;
+-        delete bbTmp;
+-    }
+-    // Note: don't release the ddraw surface; this is
+-    // done implicitly through releasing the primary
+-    //if (backBuffer3D) {
+-        //backBuffer3D->Release();
+-    //}
+-    bbLock.Leave();
+-}
+-
+-/**
+- * Add a new client to the list of objects sharing the
+- * back buffer.
+- */
+-void BackBufferHolder::Add(DDrawBackBufferSurface *surf)
+-{
+-    bbLock.Enter();
+-    BackBufferList *bbTmp = new BackBufferList;
+-    bbTmp->next = bbList;
+-    bbTmp->backBuffer = surf;
+-    bbList = bbTmp;
+-    bbLock.Leave();
+-}
+-
+-/**
+- * Remove a client from the sharing list.  This happens when
+- * a client is deleted; we need to remove it from the list
+- * so that we do not later go to update a defunct client
+- * in the ~BackBufferHolder() destructor.
+- */
+-void BackBufferHolder::Remove(DDrawBackBufferSurface *surf)
+-{
+-    bbLock.Enter();
+-    BackBufferList *bbListPtr = bbList;
+-    BackBufferList *bbListPtrPrev = NULL;
+-    while (bbListPtr) {
+-        if (bbListPtr->backBuffer == surf) {
+-            BackBufferList *bbTmp = bbListPtr;
+-            if (!bbListPtrPrev) {
+-                bbList = bbListPtr->next;
+-            } else {
+-                bbListPtrPrev->next = bbTmp->next;
+-            }
+-            delete bbTmp;
+-            break;
+-        }
+-        bbListPtrPrev = bbListPtr;
+-        bbListPtr = bbListPtr->next;
+-    }
+-    bbLock.Leave();
+-}
+-
+-HRESULT BackBufferHolder::RestoreDepthBuffer() {
+-    J2dTraceLn(J2D_TRACE_INFO,
+-               "BackBufferHolder::RestoreDepthBuffer");
+-    if (backBuffer != NULL) {
+-        // this restores the depth-buffer attached
+-        // to the back-buffer. The back-buffer itself is restored
+-        // when the primary surface is restored, but the depth buffer
+-        // needs to be restored manually.
+-        return backBuffer->Restore();
+-    } else {
+-        return D3D_OK;
+-    }
+-}
+-
+-/**
+- * Class DDrawClipper
+- */
+-DDrawClipper::DDrawClipper(LPDIRECTDRAWCLIPPER clipper) : lpClipper(clipper) {}
+-
+-DDrawClipper::~DDrawClipper()
+-{
+-    if (lpClipper) {
+-        lpClipper->Release();
+-    }
+-}
+-
+-HRESULT DDrawClipper::SetHWnd(DWORD dwFlags, HWND hwnd)
+-{
+-    return lpClipper->SetHWnd(dwFlags, hwnd);
+-}
+-
+-HRESULT DDrawClipper::GetClipList(LPRECT rect, LPRGNDATA rgnData,
+-                                  LPDWORD rgnSize)
+-{
+-    return lpClipper->GetClipList(rect, rgnData, rgnSize);
+-}
+-
+-LPDIRECTDRAWCLIPPER DDrawClipper::GetClipper()
+-{
+-    return lpClipper;
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/ddrawObject.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/ddrawObject.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,481 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef DDRAWOBJECT_H
+-#define DDRAWOBJECT_H
+-
+-#include <ddraw.h>
+-#include <d3d.h>
+-#include <jni.h>
+-#include <windows.h>
+-#include "Win32SurfaceData.h"
+-#include "GraphicsPrimitiveMgr.h"
+-
+-#ifdef DEBUG
+-  #define DX_FUNC(func) do { \
+-          HRESULT ddr = (func); \
+-          if (FAILED(ddr)) \
+-              DebugPrintDirectDrawError(ddr, #func); \
+-  } while (0)
+-#else
+-  #define DX_FUNC(func) do { func; } while (0)
+-#endif
+-
+-/**
+- * Class for display modes
+- */
+-class DDrawDisplayMode {
+-
+-public:
+-    typedef void (*Callback)(DDrawDisplayMode&, void*);
+-
+-public:
+-    DDrawDisplayMode();
+-    DDrawDisplayMode(DDrawDisplayMode& rhs);
+-    DDrawDisplayMode(jint w, jint h, jint b, jint r);
+-    virtual ~DDrawDisplayMode();
+-
+-    jint width;
+-    jint height;
+-    jint bitDepth;
+-    jint refreshRate;
+-
+-};
+-
+-class DDrawSurface;
+-class DDrawClipper;
+-class DXSurface;
+-
+-class D3DContext;
+-
+-
+-class DXObject {
+-private:
+-    IDirectDraw7 *ddObject;
+-    HMONITOR hMonitor;
+-    static long WINAPI EnumCallback(LPDDSURFACEDESC2 pDDSD, void* pContext);
+-
+-public:
+-    DXObject(IDirectDraw7 *ddObject, HMONITOR hMonitor) {
+-        this->ddObject = ddObject;
+-        this->hMonitor = hMonitor;
+-    }
+-    virtual ~DXObject();
+-    HRESULT GetCaps(LPDDCAPS halCaps, LPDDCAPS helCaps) {
+-        return ddObject->GetCaps(halCaps, helCaps);
+-    }
+-    HMONITOR GetHMonitor() { return hMonitor; }
+-    HRESULT GetAvailableVidMem(DWORD caps, DWORD *total,
+-                                       DWORD *free);
+-    HRESULT CreateSurface(DWORD dwFlags,
+-                          DWORD ddsCaps, DWORD ddsCaps2,
+-                          LPDDPIXELFORMAT lpPf,
+-                          int width, int height,
+-                          DXSurface **lpDDSurface,
+-                          int numBackBuffers);
+-
+-    HRESULT CreateSurface(DWORD dwFlags, DWORD ddsCaps,
+-                          LPDDPIXELFORMAT lpPf,
+-                          int width, int height,
+-                          DXSurface **lpDDSurface,
+-                          int numBackBuffers = 0)
+-    {
+-        return CreateSurface(dwFlags, ddsCaps, 0, lpPf, width, height,
+-                             lpDDSurface, numBackBuffers);
+-    }
+-    HRESULT CreateSurface(DWORD dwFlags, DWORD ddsCaps,
+-                          DXSurface **lpDDSurface)
+-    {
+-        return CreateSurface(dwFlags, ddsCaps, NULL, 0, 0, lpDDSurface, 0);
+-    }
+-    HRESULT CreateSurface(DWORD dwFlags, DWORD ddsCaps,
+-                          DXSurface **lpDDSurface,
+-                          int numBackBuffers)
+-    {
+-        return CreateSurface(dwFlags, ddsCaps, NULL, 0, 0, lpDDSurface,
+-                             numBackBuffers);
+-    }
+-
+-    HRESULT CreateClipper(DWORD dwFlags,
+-                          LPDIRECTDRAWCLIPPER FAR *lplpDDClipper)
+-    {
+-        return ddObject->CreateClipper(dwFlags, lplpDDClipper, NULL);
+-    }
+-    HRESULT GetDisplayMode(DDrawDisplayMode &dm);
+-    HRESULT SetDisplayMode(DWORD width, DWORD height, DWORD depth,
+-                           DWORD refreshRate)
+-    {
+-        return ddObject->SetDisplayMode(width, height, depth, refreshRate, 0);
+-    }
+-    HRESULT EnumDisplayModes(DDrawDisplayMode *dm,
+-                             DDrawDisplayMode::Callback callback,
+-                             void *context);
+-    HRESULT RestoreDisplayMode() {
+-        return ddObject->RestoreDisplayMode();
+-    }
+-    HRESULT SetCooperativeLevel(HWND hWnd, DWORD dwFlags) {
+-        return ddObject->SetCooperativeLevel(hWnd,
+-                                             (dwFlags | DDSCL_FPUPRESERVE));
+-    }
+-    HRESULT CreateD3DObject(IDirect3D7 **d3dObject);
+-    /**
+-     * Structure for enumerating display modes; used to invoke the callback
+-     */
+-    class EnumDisplayModesParam {
+-    public:
+-        EnumDisplayModesParam(DDrawDisplayMode::Callback cb, void* ct);
+-        virtual ~EnumDisplayModesParam();
+-        DDrawDisplayMode::Callback callback;
+-        void* context;
+-    };
+-};
+-
+-typedef HRESULT (WINAPI *FnDDCreateFunc)(GUID FAR * lpGUID,
+-    LPDIRECTDRAW FAR * lplpDD, IUnknown FAR * pUnkOuter);
+-typedef HRESULT (WINAPI *FnDDCreateExFunc)(GUID FAR * lpGUID,
+-    LPVOID * lplpDD, REFIID refIID, IUnknown FAR * pUnkOuter);
+-/**
+- * Class for the direct draw object
+- */
+-class DDraw  {
+-
+-private:
+-
+-public:
+-    DDraw(DXObject *dxObject);
+-    virtual ~DDraw();
+-
+-    static DDraw *CreateDDrawObject(GUID *lpGUID, HMONITOR hMonitor);
+-
+-    BOOL GetDDCaps(LPDDCAPS caps);
+-    HRESULT GetDDAvailableVidMem(DWORD *free);
+-    DDrawSurface* CreateDDOffScreenSurface(DWORD width, DWORD height,
+-                                           DWORD depth,
+-                                           jint transparency,
+-                                           DWORD surfaceTypeCaps);
+-    DDrawSurface* CreateDDPrimarySurface(DWORD backBufferCount);
+-    void InitD3DContext();
+-    void ReleaseD3DContext();
+-    void DisableD3D() { deviceUseD3D = FALSE; }
+-    BOOL IsD3DEnabled() { return deviceUseD3D; }
+-    D3DContext * GetD3dContext() { return d3dContext; };
+-
+-    DDrawClipper* CreateDDClipper();
+-
+-    BOOL GetDDDisplayMode(DDrawDisplayMode& dm);
+-    HRESULT SetDDDisplayMode(DDrawDisplayMode& dm);
+-    BOOL EnumDDDisplayModes(DDrawDisplayMode* constraint,
+-        DDrawDisplayMode::Callback callback, void* context);
+-    BOOL RestoreDDDisplayMode();
+-
+-    HRESULT SetCooperativeLevel(HWND hwnd, DWORD dwFlags);
+-
+-private:
+-    DXObject                *dxObject;
+-    DDrawSurface            *lpPrimary;
+-    D3DContext              *d3dContext;
+-    BOOL                    deviceUseD3D;
+-};
+-
+-
+-#define VERSION_DX7     0x00000007
+-
+-/**
+- * DXSurface class implementating DX 7 interfaces
+- * (IDirectDrawSurface7)
+- */
+-class DXSurface {
+-public:
+-    IDirectDrawSurface7 *lpSurface;
+-    DDSURFACEDESC2 ddsd;
+-    DXSurface* depthBuffer;
+-
+-public:
+-    DXSurface() {
+-        versionID = VERSION_DX7; depthBuffer = NULL; clipperSet = FALSE;
+-    }
+-
+-    DXSurface(IDirectDrawSurface7 *lpSurface);
+-
+-    IDirectDrawSurface7 *GetDDSurface() { return lpSurface; }
+-    HRESULT Blt(RECT *destRect, DXSurface *lpSurfaceSrc,
+-                RECT *srcRect, DWORD dwFlags, LPDDBLTFX ddBltFx)
+-    {
+-        return lpSurface->Blt(destRect,
+-                              lpSurfaceSrc ?
+-                                  lpSurfaceSrc->GetDDSurface() :
+-                                  NULL,
+-                              srcRect, dwFlags, ddBltFx);
+-    }
+-    HRESULT Lock(RECT *lockRect, SurfaceDataRasInfo *pRasInfo,
+-                         DWORD dwFlags, HANDLE hEvent);
+-    HRESULT Unlock(RECT *unlockRect) {
+-        return lpSurface->Unlock(unlockRect);
+-    }
+-    HRESULT Flip(DWORD dwFlags) {
+-        return lpSurface->Flip(NULL, dwFlags);
+-    }
+-    HRESULT IsLost() {
+-        HRESULT res = D3D_OK;
+-        if (depthBuffer != NULL) {
+-            res = depthBuffer->IsLost();
+-        }
+-        return FAILED(res) ? res : lpSurface->IsLost();
+-    }
+-    HRESULT Restore();
+-    HRESULT GetDC(HDC *hDC) {
+-        return lpSurface->GetDC(hDC);
+-    }
+-    HRESULT ReleaseDC(HDC hDC) {
+-        return lpSurface->ReleaseDC(hDC);
+-    }
+-    ULONG   Release() {
+-        if (depthBuffer != NULL) {
+-            depthBuffer->Release();
+-            delete depthBuffer;
+-            depthBuffer = NULL;
+-        }
+-        return lpSurface->Release();
+-    }
+-    HRESULT SetClipper(DDrawClipper *pClipper);
+-    HRESULT SetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) {
+-        return lpSurface->SetColorKey(dwFlags, lpDDColorKey);
+-    }
+-    HRESULT GetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey) {
+-        return lpSurface->GetColorKey(dwFlags, lpDDColorKey);
+-    }
+-    HRESULT GetAttachedSurface(DWORD dwCaps, DXSurface **bbSurface);
+-    int     GetSurfaceDepth();
+-    HRESULT AttachDepthBuffer(DXObject* dxObject,
+-                              BOOL bAccelerated,
+-                              DDPIXELFORMAT* pddpf);
+-
+-    DWORD   GetWidth() { return width; }
+-    DWORD   GetHeight() { return height; }
+-    DWORD   GetVersionID() { return versionID; }
+-
+-private:
+-    DWORD   width, height;
+-protected:
+-    DWORD versionID;
+-    BOOL clipperSet;
+-};
+-
+-
+-/**
+- * Class for direct draw surfaces
+- */
+-class DDrawSurface {
+-
+-    friend class DDraw;
+-    friend class DDrawPrimarySurface;
+-    friend class DDrawBackBufferSurface;
+-
+-protected:
+-    DDrawSurface();
+-
+-public:
+-    virtual ~DDrawSurface();
+-    DDrawSurface(DDraw *ddObject, DXSurface *dxSurface);
+-
+-public:
+-    virtual void    SetNewSurface(DXSurface *dxSurface);
+-    virtual HRESULT ReleaseSurface();
+-    virtual HRESULT SetClipper(DDrawClipper* pClipper);
+-    virtual HRESULT SetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey);
+-    virtual HRESULT GetColorKey(DWORD dwFlags, LPDDCOLORKEY lpDDColorKey);
+-    virtual HRESULT Lock(LPRECT lockRect = NULL, SurfaceDataRasInfo *pRasInfo = NULL,
+-                         DWORD dwFlags = DDLOCK_WAIT, HANDLE hEvent = NULL);
+-    virtual HRESULT Unlock(LPRECT lockRect = NULL);
+-    virtual HRESULT Blt(LPRECT destRect, DDrawSurface* pSrc,
+-                        LPRECT srcRect = NULL, DWORD dwFlags = DDBLT_WAIT,
+-                        LPDDBLTFX lpDDBltFx = NULL);
+-    virtual HRESULT Flip(DDrawSurface* pDest, DWORD dwFlags = DDFLIP_WAIT);
+-    virtual HRESULT IsLost();
+-    /**
+-     * Restores the surface or the depth buffer if the surface
+-     * represents an attached backbuffer surface. In the latter case
+-     * the surface itself will be restored implicitly with the primary.
+-     */
+-    virtual HRESULT Restore();
+-    virtual HRESULT GetDC(HDC *hDC);
+-    virtual HRESULT ReleaseDC(HDC hDC);
+-    void    GetExclusiveAccess() { CRITICAL_SECTION_ENTER(*surfaceLock); };
+-    void    ReleaseExclusiveAccess() { CRITICAL_SECTION_LEAVE(*surfaceLock); };
+-    virtual DDrawSurface* GetDDAttachedSurface(DWORD caps = 0)
+-        { return NULL; };
+-    virtual DXSurface *GetDXSurface() { return dxSurface; }
+-    void    FlushD3DContext(BOOL bForce = FALSE);
+-    int     GetSurfaceDepth();
+-
+-protected:
+-    DDraw *ddObject;
+-    DXSurface   *dxSurface;
+-    CriticalSection *surfaceLock;
+-};
+-
+-class BackBufferHolder;
+-
+-/**
+- * Class for direct draw primary surface
+- */
+-class DDrawPrimarySurface : DDrawSurface {
+-
+-    friend class DDraw;
+-
+-protected:
+-    BackBufferHolder *bbHolder;
+-
+-protected:
+-    DDrawPrimarySurface(DDraw *ddObject, DXSurface *dxSurface);
+-    DDrawPrimarySurface();
+-
+-public:
+-    virtual ~DDrawPrimarySurface();
+-    virtual HRESULT ReleaseSurface();
+-    virtual void    SetNewSurface(DXSurface *dxSurface);
+-    virtual DDrawSurface* GetDDAttachedSurface(DWORD caps = 0);
+-    virtual HRESULT Restore();
+-};
+-
+-/**
+- * Class for direct draw back buffer surface
+- */
+-class DDrawBackBufferSurface : DDrawSurface {
+-
+-    friend class DDraw;
+-    friend class DDrawPrimarySurface;
+-
+-protected:
+-    DDrawPrimarySurface *lpPrimary;
+-    BackBufferHolder *bbHolder;
+-
+-protected:
+-    DDrawBackBufferSurface(DDraw *ddObject, BackBufferHolder *holder);
+-    DDrawBackBufferSurface();
+-
+-public:
+-    virtual ~DDrawBackBufferSurface();
+-    virtual HRESULT ReleaseSurface();
+-};
+-
+-/**
+- * Linked list holding all references to DDrawBackBufferSurface
+- * objects that share a single ddraw surface.  This class
+- * is used by BackBufferHolder.
+- */
+-class BackBufferList {
+-public:
+-    DDrawBackBufferSurface *backBuffer;
+-    BackBufferList *next;
+-};
+-
+-/**
+- * Class for storing the shared ddraw/d3d back buffer objects
+- * and a list of all objects that use those shared surfaces.
+- */
+-class BackBufferHolder {
+-
+-public:
+-    BackBufferHolder(DXSurface *dxSurface);
+-    BackBufferHolder();
+-    ~BackBufferHolder();
+-
+-    virtual void Add(DDrawBackBufferSurface *surf);
+-    virtual void Remove(DDrawBackBufferSurface *surf);
+-    DXSurface *GetBackBufferSurface() { return backBuffer; };
+-    HRESULT RestoreDepthBuffer();
+-
+-protected:
+-    BackBufferList *bbList;             // linked list of objects that
+-                                        // share the ddraw/d3d surfaces
+-    DXSurface *backBuffer;
+-    CriticalSection bbLock;             // synchronize accesses to list
+-};
+-
+-
+-#ifdef DEBUG
+-void StackTrace();
+-// Critical Section debugging class
+-class DDCriticalSection : public CriticalSection {
+-private:
+-    DDrawSurface* lpSurface;
+-    int count;
+-
+-public:
+-    DDCriticalSection(DDrawSurface* surface) : lpSurface(surface), count(0) {
+-    }
+-    void Enter() {
+-        ++count;
+-        //J2dTraceLn2(J2D_TRACE_VERBOSE,
+-        //            "DDCriticalSection::Enter for surface 0x%x count %d\n",
+-        //             lpSurface, count);
+-        CriticalSection::Enter();
+-    }
+-    void Leave() {
+-        //J2dTraceLn2(J2D_TRACE_VERBOSE,
+-        //            "DDCriticalSection::Leave for surface 0x%x count %d\n",
+-        //            lpSurface, count);
+-        if (count == 0) {
+-            //J2dTraceLn1(J2D_TRACE_VERBOSE,
+-            //            "DDCriticalSection::Leave Invalid "\
+-            //            "decrement in DDCriticalSection "\
+-            //            "for surface 0x%x\n",
+-            //            lpSurface);
+-            StackTrace();
+-        }
+-        CriticalSection::Leave();
+-        count--;
+-    }
+-};
+-#else
+-#define DDCriticalSection(x) CriticalSection()
+-#define StackTrace()
+-#endif
+-
+-/**
+- * Class for direct draw clippers
+- */
+-class DDrawClipper {
+-
+-    friend class DDraw;
+-
+-private:
+-    DDrawClipper(LPDIRECTDRAWCLIPPER clipper);
+-
+-public:
+-    virtual ~DDrawClipper();
+-
+-public:
+-    HRESULT SetHWnd(DWORD dwFlags, HWND hwnd);
+-    HRESULT GetClipList(LPRECT lpRect, LPRGNDATA rgnData, LPDWORD rgnSize);
+-    LPDIRECTDRAWCLIPPER GetClipper();
+-
+-private:
+-    LPDIRECTDRAWCLIPPER lpClipper;
+-};
+-
+-
+-#endif DDRAWOBJECT_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/ddrawUtils.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/ddrawUtils.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1804 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#define INITGUID
+-#include "Trace.h"
+-#include "ddrawUtils.h"
+-#include "ddrawObject.h"
+-#include "awt_Multimon.h"
+-#include "awt_MMStub.h"
+-#include "dxInit.h"
+-#include "WindowsFlags.h"
+-#include "D3DContext.h"
+-
+-//
+-// Globals
+-//
+-DDrawObjectStruct           **ddInstance;
+-int                         maxDDDevices = 0;
+-int                         currNumDevices = 0;
+-CriticalSection             ddInstanceLock;
+-extern BOOL                 isAppActive;
+-extern HINSTANCE            hLibDDraw; // DDraw Library handle
+-extern jfieldID             ddSurfacePuntedID;
+-
+-extern "C" void Win32OSSD_DisableDD(JNIEnv *env, Win32SDOps *wsdo);
+-
+-//
+-// Constants
+-//
+-#define MAX_BUSY_ATTEMPTS 50    // Arbitrary number of times to attempt
+-                                // an operation that returns a busy error
+-
+-//
+-// Macros
+-//
+-
+-/**
+- * This macro is just a shortcut for the various places in the
+- * code where we want to call a ddraw function and print any error
+- * if the result is not equal to DD_OK.  The errorString passed
+- * in is for debugging/tracing purposes only.
+- */
+-#define DD_FUNC(func, errorString) { \
+-    HRESULT ddResult = func; \
+-    if (ddResult != DD_OK) { \
+-        DebugPrintDirectDrawError(ddResult, errorString); \
+-    } \
+-}
+-/**
+- * Same as above, only return FALSE when done (to be used only in
+- * functions that should return FALSE on a ddraw failure).
+- */
+-#define DD_FUNC_RETURN(func, errorString) { \
+-    HRESULT ddResult = func; \
+-    if (ddResult != DD_OK) { \
+-        DebugPrintDirectDrawError(ddResult, errorString); \
+-        return FALSE; \
+-    } \
+-}
+-
+-//
+-// INLINE functions
+-//
+-
+-// Attaches the clipper object of a given surface to
+-// the primary.  Note that this action only happens if the
+-// surface is onscreen (clipping only makes sense for onscreen windows)
+-INLINE void AttachClipper(Win32SDOps *wsdo) {
+-    if (wsdo->window && wsdo->ddInstance->hwndFullScreen == NULL) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "AttachClipper");
+-        HRESULT ddResult;
+-        ddResult = wsdo->ddInstance->clipper->SetHWnd(0, wsdo->window);
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult, "AttachClipper");
+-        }
+-    }
+-}
+-
+-//
+-// Functions
+-//
+-
+-/**
+- * Returns the ddInstance associated with a particular HMONITOR
+- */
+-DDrawObjectStruct *GetDDInstanceForDevice(HMONITOR hMon)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "GetDDInstanceForDevice");
+-    DDrawObjectStruct *tmpDdInstance = NULL;
+-    ddInstanceLock.Enter();
+-    if (currNumDevices == 1) {
+-        // Non multimon situation
+-        if (ddInstance[0])
+-        {
+-            tmpDdInstance = ddInstance[0];
+-        }
+-    } else {
+-        for (int i = 0; i < currNumDevices; ++i) {
+-            if (ddInstance[i]
+-                && hMon == ddInstance[i]->hMonitor)
+-            {
+-                tmpDdInstance = ddInstance[i];
+-                break;
+-            }
+-        }
+-    }
+-    if (tmpDdInstance != NULL && !tmpDdInstance->accelerated) {
+-        // Some failure situations (see DDSetupDevice in dxInit.cpp) can cause
+-        // a ddInstance object to become invalid.  If this happens, we should
+-        // not be using this ddInstance object at all, so return NULL.
+-        tmpDdInstance = NULL;
+-    }
+-    ddInstanceLock.Leave();
+-    return tmpDdInstance;
+-}
+-
+-/**
+- * Can return FALSE if there was some problem during ddraw
+- * initialization for this screen, or if this screen does not
+- * support some of the capabilities necessary for running ddraw
+- * correctly.
+- */
+-BOOL DDCanCreatePrimary(HMONITOR hMon) {
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    return (useDD && ddInstance && tmpDdInstance);
+-}
+-
+-/**
+- * Can return FALSE if the device that the surfaceData object
+- * resides on cannot support accelerated Blt's.  Some devices
+- * can perform basic ddraw Lock/Unlock commands but cannot
+- * handle the ddraw Blt command.
+- */
+-BOOL DDCanBlt(Win32SDOps *wsdo) {
+-    return (useDD && wsdo->ddInstance && wsdo->ddInstance->canBlt);
+-}
+-
+-/**
+- * Can return FALSE if either ddraw is not enabled at all (problems
+- * during initialization) or the device associated with the hMon object
+- * cannot support the basic required capabilities (in
+- * which case the ddInstance for that device will be set to NULL).
+- */
+-BOOL DeviceUseDDraw(HMONITOR hMon) {
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    return (useDD && tmpDdInstance && tmpDdInstance->ddObject);
+-}
+-
+-/**
+- * Can return FALSE if either ddraw is not enabled at all (problems
+- * during initialization) or the device associated with the hMon object
+- * cannot support the basic required capabilities (in
+- * which case the ddInstance for that device will be set to NULL).
+- */
+-BOOL DeviceUseD3D(HMONITOR hMon) {
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    return (useDD && tmpDdInstance && tmpDdInstance->ddObject &&
+-            tmpDdInstance->ddObject->IsD3DEnabled());
+-}
+-
+-/**
+- * Can return FALSE if either ddraw is not enabled at all (problems
+- * during initialization) or the device that the surfaceData object
+- * resides on cannot support the basic required capabilities (in
+- * which case the ddInstance for that device will be set to NULL).
+- */
+-BOOL DDUseDDraw(Win32SDOps *wsdo) {
+-    return (useDD && wsdo->ddInstance && wsdo->ddInstance->valid);
+-}
+-
+-
+-/**
+- * Release the resources consumed by ddraw.  This will be called
+- * by the DllMain function when it receives a PROCESS_DETACH method,
+- * meaning that the application is done with awt.  We need to release
+- * these ddraw resources because of potential memory leaks, but
+- * more importantly, because if we don't release a primary surface
+- * that has been locked and not unlocked, then we may cause
+- * ddraw to be corrupted on this system until reboot.
+- * IMPORTANT: because we do not use any locks around this release,
+- * we assume that this function is called only during the
+- * PROCESS_DETACH procedure described above.  Any other situation
+- * could cause unpredictable results.
+- */
+-void DDRelease()
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDRelease");
+-
+-    // Note that we do not lock the ddInstanceLock CriticalSection.
+-    // Normally we should do that in this kind of situation (to ensure
+-    // that the ddInstance used in all release calls is the same on).
+-    // But in this case we do not want the release of a locked surface
+-    // to be hampered by some bad CriticalSection deadlock, so we
+-    // will just release ddInstance anyway.
+-    // Anyway, if users of this function call it properly (as
+-    // documented above), then there should be no problem.
+-    try {
+-        if (hLibDDraw) {
+-            ::FreeLibrary(hLibDDraw);
+-            hLibDDraw = NULL;
+-        }
+-        hLibDDraw = NULL;
+-        if (ddInstance) {
+-            for (int i = 0; i < currNumDevices; ++i) {
+-                ReleaseDDInstance(ddInstance[i]);
+-            }
+-            free(ddInstance);
+-        }
+-    } catch (...) {
+-        // Handle all exceptions by simply returning.
+-        // There are some cases where the OS may have already
+-        // released our objects for us (e.g., NT4) and we have
+-        // no way of knowing, but the above call into Release will
+-        // cause an exception to be thrown by dereferencing
+-        // already-released ddraw objects
+-    }
+-}
+-
+-
+-/**
+- * Create the primary surface.  Note that we do not take the ddInstanceLock
+- * here; we assume that our callers are taking that lock for us.
+- */
+-BOOL DDCreatePrimary(Win32SDOps *wsdo) {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDCreatePrimary");
+-    BOOL ret = TRUE;
+-
+-    if (wsdo != NULL && wsdo->device != NULL) {
+-        HMONITOR hMon;
+-        hMon = (HMONITOR)wsdo->device->GetMonitor();
+-        DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-        // Check if we need to recreate the primary for this device.
+-        // If we are in full-screen mode, we do not need to change
+-        // the primary unless the number of back buffers has changed.
+-        if (tmpDdInstance == NULL) {
+-            return FALSE;
+-        }
+-        if (tmpDdInstance->hwndFullScreen == NULL ||
+-            tmpDdInstance->context != CONTEXT_NORMAL)
+-        {
+-            ret = DDSetupDevice(tmpDdInstance,
+-                AwtWin32GraphicsDevice::GetDxCapsForDevice(hMon));
+-            tmpDdInstance->context = CONTEXT_NORMAL;
+-        }
+-        if (ret) {
+-            tmpDdInstance->valid = TRUE;
+-        }
+-        return ret;
+-    }
+-    return ret;
+-}
+-
+-/**
+- * Returns a DDrawSurface which should be used for performing DDraw sync.
+- *
+- * On systems other than Windows Vista, a primary surface is returned.
+- *
+- * On Windows Vista, a 1x1 scratch offscreen surface will be created and
+- * maintained, because locking the primary surface will cause DWM to be
+- * disabled for the run of the application.
+- *
+- * Note: this method must be called while ddInstance lock is held.
+- * Note: a "DDINSTANCE_USABLE" non-null argument is assumed.
+- */
+-// 4978973: Only lock one pixel to flush; avoids GDI flicker artifacts
+-// and only fill one pixel in the sync surface
+-static RECT tinyRect = { 0, 0, 1, 1 };
+-static DDrawSurface* DDGetSyncSurface(DDrawObjectStruct *tmpDdInstance)
+-{
+-    static BOOL bIsVista = IS_WINVISTA;
+-    static DDBLTFX ddBltFx;
+-    DDrawSurface *lpSyncSurface;
+-
+-    if (bIsVista) {
+-        lpSyncSurface = tmpDdInstance->syncSurface;
+-
+-        if (lpSyncSurface != NULL) {
+-            // return the existing surface if it wasn't lost or it was
+-            // restored succesfully
+-            if (SUCCEEDED(lpSyncSurface->IsLost()) ||
+-                SUCCEEDED(lpSyncSurface->Restore()))
+-            {
+-                // we need to render to the sync surface so that DDraw
+-                // will flush the pipeline when we lock it in DDSync
+-                lpSyncSurface->Blt(&tinyRect, NULL, NULL,
+-                                   DDBLT_COLORFILL | DDBLT_WAIT,
+-                                   &ddBltFx);
+-                return lpSyncSurface;
+-            }
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDGetSyncSurface: failed to restore"
+-                       " sync surface, recreating");
+-            delete lpSyncSurface;
+-        }
+-
+-        // this doesn't need to be done every time in the fast path
+-        ddBltFx.dwSize = sizeof(ddBltFx);
+-        ddBltFx.dwFillColor = 0xffffffff;
+-
+-        lpSyncSurface =
+-            tmpDdInstance->ddObject->
+-                CreateDDOffScreenSurface(1, 1, 24/*ignored*/,
+-                                         TR_OPAQUE,
+-                                         DDSCAPS_VIDEOMEMORY);
+-        tmpDdInstance->syncSurface = lpSyncSurface;
+-    } else {
+-        lpSyncSurface = tmpDdInstance->primary;
+-    }
+-
+-    return lpSyncSurface;
+-}
+-
+-void
+-DDFreeSyncSurface(DDrawObjectStruct *tmpDdInstance)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDFreeSyncSurface");
+-    if (tmpDdInstance != NULL && tmpDdInstance->syncSurface != NULL) {
+-        delete tmpDdInstance->syncSurface;
+-        tmpDdInstance->syncSurface = NULL;
+-    }
+-}
+-
+-/**
+- * Synchronize graphics pipeline by calling Lock/Unlock on primary
+- * surface
+- */
+-void DDSync()
+-{
+-    int attempts = 0;
+-    HRESULT ddResult;
+-    DDrawSurface *lpSyncSurface = NULL;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDSync");
+-    // REMIND: need to handle errors here
+-    ddInstanceLock.Enter();
+-    for (int i = 0; i < currNumDevices; ++i) {
+-        DDrawObjectStruct *tmpDdInstance = ddInstance[i];
+-
+-        if (!DDINSTANCE_USABLE(tmpDdInstance)) {
+-            continue;
+-        }
+-        lpSyncSurface = DDGetSyncSurface(tmpDdInstance);
+-        if (lpSyncSurface == NULL) {
+-            J2dRlsTraceLn1(J2D_TRACE_ERROR,
+-                           "DDSync: no sync surface for device %d", i);
+-            continue;
+-        }
+-        // Spin while busy up to some finite number of times
+-        do {
+-            ddResult = lpSyncSurface->Lock(&tinyRect, NULL,
+-                                           DDLOCK_WAIT, NULL);
+-        } while ((ddResult == DDERR_SURFACEBUSY) &&
+-                 (++attempts < MAX_BUSY_ATTEMPTS));
+-        if (ddResult == DD_OK) {
+-            ddResult = lpSyncSurface->Unlock(&tinyRect);
+-        }
+-    }
+-    ddInstanceLock.Leave();
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DDSync done");
+-}
+-
+-
+-/**
+- * Simple clip check against the window of the given surface data.
+- * If the clip list is complex or if the clip list intersects
+- * the visible region of the window then return FALSE, meaning
+- * that the clipping is sufficiently complex that the caller
+- * may want to find an alternative means (other than ddraw) of
+- * performing an operation.
+- */
+-BOOL DDClipCheck(Win32SDOps *wsdo, RECT *operationRect)
+-{
+-    static struct {
+-        RGNDATAHEADER   rdh;
+-        RECT            rects[1];
+-    } rgnData;
+-    unsigned long rgnSize = sizeof(rgnData);
+-    HRESULT ddResult;
+-
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DDClipCheck");
+-
+-    if (!wsdo->window) {
+-        // Offscreen surfaces need no clipping
+-        return TRUE;
+-    }
+-
+-    // If ddResult not OK, could be because of a complex clipping region
+-    // (Our rgnData structure only has space for a simple rectangle region).
+-    // Thus, we return FALSE and attach the clipper object.
+-    DDrawObjectStruct *tmpDdInstance = wsdo->ddInstance;
+-    if (!DDINSTANCE_USABLE(tmpDdInstance)) {
+-        return FALSE;
+-    }
+-    if (wsdo->window == tmpDdInstance->hwndFullScreen) {
+-        // Fullscreen surfaces need no clipping
+-        return TRUE;
+-    }
+-    DD_FUNC(tmpDdInstance->clipper->SetHWnd(0, wsdo->window),
+-        "DDClipCheck: SetHWnd");
+-    ddResult = tmpDdInstance->clipper->GetClipList(NULL, (RGNDATA*)&rgnData,
+-        &rgnSize);
+-    if (ddResult == DDERR_REGIONTOOSMALL) {
+-        // Complex clipping region
+-        // REMIND: could be more clever here and actually check operationRect
+-        // against all rectangles in clipList, but this works for now.
+-        return FALSE;
+-    }
+-    // Check intersection of clip region with operationRect.  If clip region
+-    // smaller, then we have a simple clip case.
+-    // If no operationRect, then check against entire window bounds.
+-    if (operationRect) {
+-        if (operationRect->left   < rgnData.rects[0].left ||
+-            operationRect->top    < rgnData.rects[0].top  ||
+-            operationRect->right  > rgnData.rects[0].right ||
+-            operationRect->bottom > rgnData.rects[0].bottom)
+-        {
+-            return FALSE;
+-        }
+-    } else {
+-        RECT winrect;
+-        ::GetWindowRect(wsdo->window, &winrect);
+-        if (winrect.left   < rgnData.rects[0].left ||
+-            winrect.top    < rgnData.rects[0].top  ||
+-            winrect.right  > rgnData.rects[0].right ||
+-            winrect.bottom > rgnData.rects[0].bottom)
+-        {
+-            return FALSE;
+-        }
+-    }
+-    return TRUE;
+-}
+-
+-
+-/**
+- * Lock the surface.
+- */
+-BOOL DDLock(JNIEnv *env, Win32SDOps *wsdo, RECT *lockRect,
+-            SurfaceDataRasInfo *pRasInfo)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "DDLock: wsdo->lpSurface=0x%x", wsdo->lpSurface);
+-
+-    int attempts = 0;
+-
+-    if (wsdo->gdiOpPending) {
+-        // This sync is really for flushing any pending GDI
+-        // operations. On ATI boards GdiFlush() doesn't do the trick,
+-        // only locking the primary works.
+-        DDSync();
+-        wsdo->gdiOpPending = FALSE;
+-    }
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) {
+-        if (!wsdo->ddInstance->valid) {
+-            // If dd object became invalid, don't bother calling Lock
+-            // Note: This check should not be necessary because we should
+-            // do the right thing in any case - catch the error, try to
+-            // restore the surface, fai, etc.  But there seem to be problems
+-            // with ddraw that sometimes cause it to hang in the Restore and
+-            // Lock calls. Better to avoid the situation as much as we can and
+-            // bail out early.
+-            J2dTraceLn(J2D_TRACE_ERROR,
+-                       "DDLock: wsdo->ddInstance invalid");
+-            return FALSE;
+-        }
+-        HRESULT ddResult = wsdo->lpSurface->Lock(lockRect, pRasInfo,
+-            DDLOCK_WAIT, NULL);
+-        // Spin on the busy-type errors, else return having failed or succeeded
+-        switch (ddResult) {
+-        case DD_OK:
+-            return TRUE;
+-        case DDERR_WASSTILLDRAWING:
+-        case DDERR_SURFACEBUSY:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDLock: surface busy...");
+-            break;
+-        case DDERR_SURFACELOST:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDLock: surface lost");
+-            wsdo->RestoreSurface(env, wsdo);
+-            return FALSE;
+-        case DDERR_GENERIC:
+-            J2dRlsTraceLn(J2D_TRACE_ERROR, "DDLock: unexpected error");
+-            if (wsdo->window == NULL) {
+-                Win32OSSD_DisableDD(env, wsdo);
+-            }
+-            return FALSE;
+-        default:
+-            DebugPrintDirectDrawError(ddResult, "DDLock");
+-            return FALSE;
+-        }
+-    }
+-    // If we get here, then there was an error in the function and we
+-    // should return false
+-    return FALSE;
+-}
+-
+-
+-/**
+- * Unlock the surface
+- */
+-void DDUnlock(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "DDUnlock: wsdo->lpSurface=0x%x", wsdo->lpSurface);
+-
+-    HRESULT ddResult = wsdo->lpSurface->Unlock(NULL);
+-    // Spin on the busy-type errors, else return having failed or succeeded
+-    switch (ddResult) {
+-    case DD_OK:
+-        return;
+-    case DDERR_NOTLOCKED:
+-        J2dTraceLn(J2D_TRACE_ERROR, "DDUnlock: Surface not locked");
+-        return;
+-    case DDERR_SURFACELOST:
+-        J2dTraceLn(J2D_TRACE_WARNING, "DDUnlock: Surface lost");
+-        wsdo->RestoreSurface(env, wsdo);
+-        return;
+-    default:
+-        DebugPrintDirectDrawError(ddResult, "DDUnlock");
+-        return;
+-    }
+-}
+-
+-/**
+- * Fill given surface with given color in given RECT bounds
+- */
+-BOOL DDColorFill(JNIEnv *env, jobject sData, Win32SDOps *wsdo,
+-                 RECT *fillRect, jint color)
+-{
+-    DDBLTFX ddBltFx;
+-    HRESULT ddResult;
+-    int attempts = 0;
+-
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DDColorFill");
+-    J2dTraceLn5(J2D_TRACE_VERBOSE,
+-                "  color=0x%x l=%-4d t=%-4d r=%-4d b=%-4d",
+-                color, fillRect->left, fillRect->top, fillRect->right,
+-                fillRect->bottom);
+-    ddBltFx.dwSize = sizeof(ddBltFx);
+-    ddBltFx.dwFillColor = color;
+-    AttachClipper(wsdo);
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) {
+-        ddResult = wsdo->lpSurface->Blt(fillRect, NULL, NULL,
+-                                        DDBLT_COLORFILL | DDBLT_WAIT,
+-                                        &ddBltFx);
+-        // Spin on the busy-type errors, else return having failed or succeeded
+-        switch (ddResult) {
+-        case DD_OK:
+-            return TRUE;
+-        case DDERR_INVALIDRECT:
+-            J2dTraceLn4(J2D_TRACE_ERROR,
+-                        "DDColorFill: Invalid rect for colorfill "\
+-                        "l=%-4d t=%-4d r=%-4d b=%-4d",
+-                        fillRect->left, fillRect->top,
+-                        fillRect->right, fillRect->bottom);
+-            return FALSE;
+-        case DDERR_SURFACEBUSY:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDColorFill: surface busy");
+-            break;
+-        case DDERR_SURFACELOST:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDColorfill: surface lost");
+-            wsdo->RestoreSurface(env, wsdo);
+-            return FALSE;
+-        default:
+-            DebugPrintDirectDrawError(ddResult, "DDColorFill");
+-        }
+-    }
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DDColorFill done");
+-    return FALSE;
+-}
+-
+-void ManageOffscreenSurfaceBlt(JNIEnv *env, Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "ManageOffscreenSurfaceBlt");
+-    wsdo->surfacePuntData.pixelsReadSinceBlt = 0;
+-    if (wsdo->surfacePuntData.numBltsSinceRead >=
+-        wsdo->surfacePuntData.numBltsThreshold)
+-    {
+-        if (wsdo->surfacePuntData.usingDDSystem) {
+-            if (wsdo->surfacePuntData.lpSurfaceVram->Blt(NULL,
+-                    wsdo->surfacePuntData.lpSurfaceSystem,
+-                    NULL, DDBLT_WAIT, NULL) == DD_OK)
+-            {
+-                J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                            "  Unpunting sys to VRAM: 0x%x -> 0x%x",
+-                            wsdo->surfacePuntData.lpSurfaceVram,
+-                            wsdo->surfacePuntData.lpSurfaceSystem);
+-                wsdo->lpSurface = wsdo->surfacePuntData.lpSurfaceVram;
+-                wsdo->surfacePuntData.usingDDSystem = FALSE;
+-                // Now: double our threshhold to prevent thrashing; we
+-                // don't want to keep punting and un-punting our surface
+-                wsdo->surfacePuntData.numBltsThreshold *= 2;
+-                // Notify the Java level that this surface has
+-                // been unpunted so that future copies to this surface
+-                // from accelerated src surfaces will do the right thing.
+-                jobject sdObject = env->NewLocalRef(wsdo->sdOps.sdObject);
+-                if (sdObject) {
+-                    // Only bother with this optimization if the
+-                    // reference is still valid
+-                    env->SetBooleanField(sdObject, ddSurfacePuntedID, JNI_FALSE);
+-                    env->DeleteLocalRef(sdObject);
+-                }
+-            }
+-        }
+-    } else {
+-        wsdo->surfacePuntData.numBltsSinceRead++;
+-    }
+-}
+-
+-/**
+- * Copy data from src to dst using src and dst rectangles
+- */
+-BOOL DDBlt(JNIEnv *env, Win32SDOps *wsdoSrc, Win32SDOps *wsdoDst,
+-               RECT *rDst, RECT *rSrc, CompositeInfo *compInfo)
+-{
+-    int attempts = 0;
+-    DWORD bltFlags = DDBLT_WAIT;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDBlt");
+-    J2dTraceLn4(J2D_TRACE_INFO, "  src rect: l=%-4d t=%-4d r=%-4d b=%-4d",
+-                    rSrc->left, rSrc->top, rSrc->right, rSrc->bottom);
+-    J2dTraceLn4(J2D_TRACE_INFO, "  dst rect: l=%-4d t=%-4d r=%-4d b=%-4d",
+-                    rDst->left, rDst->top, rDst->right, rDst->bottom);
+-
+-    // Note: the primary can only have one clipper attached to it at
+-    // any time.  This seems weird to set it to src then dst, but this
+-    // works because either: both are the same window (devCopyArea),
+-    // neither are windows (both offscreen), or only one is a window
+-    // (Blt).  We can't get here from a windowA -> windowB copy operation.
+-    AttachClipper(wsdoSrc);
+-    AttachClipper(wsdoDst);
+-
+-    // Administrate system-surface punt mechanism for offscreen images
+-    if (!wsdoSrc->window && !wsdoSrc->surfacePuntData.disablePunts) {
+-        ManageOffscreenSurfaceBlt(env, wsdoSrc);
+-    }
+-    if (wsdoSrc->transparency == TR_BITMASK) {
+-        bltFlags |= DDBLT_KEYSRC;
+-    }
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) {
+-        HRESULT ddResult =
+-            wsdoDst->lpSurface->Blt(rDst, wsdoSrc->lpSurface,
+-                                    rSrc, bltFlags, NULL);
+-
+-        // Spin on the busy-type errors or return having failed or succeeded
+-        switch (ddResult) {
+-        case DD_OK:
+-            return TRUE;
+-        case DDERR_SURFACEBUSY:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDBlt: surface busy");
+-            break;
+-        case DDERR_SURFACELOST:
+-            /**
+-             * Only restore the Dst if it is truly lost; "restoring" an
+-             * offscreen surface simply sets a flag and throws an exception,
+-             * thus guaranteeing that the Src restore below will not happen.
+-             * So if the Src stays Lost and we keep trying to restore an un-Lost
+-             * Dst, then we will never actually do the restore on the Src.
+-             */
+-            if (wsdoDst->lpSurface->IsLost() != DD_OK) {
+-                J2dTraceLn(J2D_TRACE_WARNING, "DDBlt: dst surface lost");
+-                wsdoDst->RestoreSurface(env, wsdoDst);
+-            }
+-            if (wsdoSrc->lpSurface->IsLost() != DD_OK) {
+-                J2dTraceLn(J2D_TRACE_WARNING, "DDBlt: src surface lost");
+-                wsdoSrc->RestoreSurface(env, wsdoSrc);
+-            }
+-            return FALSE;
+-        default:
+-            DebugPrintDirectDrawError(ddResult, "DDBlt");
+-            return FALSE;
+-        }
+-    }
+-    return FALSE;
+-}
+-
+-/**
+- * Set the color key information for this surface.  During a
+- * blit operation, pixels of the specified color will not be
+- * drawn (resulting in transparent areas of the image).  Note
+- * that the "transparency" field in the Win32SDOps structure must
+- * be set to TR_BITMASK for the color key information to have an effect.
+- */
+-void DDSetColorKey(JNIEnv *env, Win32SDOps *wsdo, jint color)
+-{
+-    J2dTraceLn(J2D_TRACE_VERBOSE, "DDSetColorKey");
+-    DDCOLORKEY    ddck;
+-    HRESULT       ddResult;
+-
+-    ddck.dwColorSpaceLowValue  = color;
+-    ddck.dwColorSpaceHighValue = color;
+-
+-    ddResult = wsdo->lpSurface->SetColorKey(DDCKEY_SRCBLT, &ddck);
+-
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDSetColorKey");
+-    }
+-}
+-
+-
+-/**
+- * Swaps the surface memory of the front and back buffers.
+- * Flips memory from the source surface to the destination surface.
+- */
+-BOOL DDFlip(JNIEnv *env, Win32SDOps *src, Win32SDOps *dest)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDFlip");
+-    int attempts = 0;
+-    while (attempts++ < MAX_BUSY_ATTEMPTS) {
+-        HRESULT ddResult = src->lpSurface->Flip(dest->lpSurface);
+-        // Spin on the busy-type errors or return having failed or succeeded
+-        switch (ddResult) {
+-        case DD_OK:
+-            return TRUE;
+-        case DDERR_SURFACEBUSY:
+-            J2dTraceLn(J2D_TRACE_WARNING, "DDFlip: surface busy");
+-            break;
+-        case DDERR_SURFACELOST:
+-            if (dest->lpSurface->IsLost() != DD_OK) {
+-                J2dTraceLn(J2D_TRACE_WARNING, "DDFlip: dst surface lost");
+-                dest->RestoreSurface(env, dest);
+-            }
+-            if (src->lpSurface->IsLost() != DD_OK) {
+-                J2dTraceLn(J2D_TRACE_WARNING, "DDFlip: src surface lost");
+-                src->RestoreSurface(env, src);
+-            }
+-            return FALSE;
+-        default:
+-            DebugPrintDirectDrawError(ddResult, "DDFlip");
+-            return FALSE;
+-        }
+-    }
+-    return FALSE;
+-}
+-
+-
+-/**
+- * Mark the given ddInstance structure as invalid.  This flag
+- * can then be used to detect rendering with an invalid ddraw
+- * object later (to avoid further ddraw errors) or to detect
+- * when it is time to create a new ddraw object.  Recreation
+- * happens when we are asked to create a new surface but the
+- * current ddInstance global structure is invalid.
+- */
+-void DDInvalidateDDInstance(DDrawObjectStruct *ddInst) {
+-    J2dTraceLn(J2D_TRACE_INFO, "DDInvalidateDDInstance");
+-    if (useDD) {
+-        if (ddInst != NULL) {
+-            // Invalidate given instance of ddInstance
+-            ddInst->valid = FALSE;
+-        } else {
+-            // Invalidate global ddInstance.  This occurs at the start
+-            // of a display-change event.
+-            for (int i = 0; i < currNumDevices; ++i) {
+-                if (ddInstance[i] && ddInstance[i]->hwndFullScreen == NULL) {
+-                    ddInstance[i]->valid = FALSE;
+-                }
+-            }
+-        }
+-    }
+-}
+-
+-/**
+- * Utility routine: release all elements of given ddInst structure
+- * and free the memory consumed by ddInst.  Note that this may be
+- * called during a failed DDCreateDDObject, so any null fields were
+- * not yet initialized and should not be released.
+- */
+-void ReleaseDDInstance(DDrawObjectStruct *ddInst)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "ReleaseDDInstance");
+-    if (ddInst) {
+-        if (ddInst->primary) {
+-            delete ddInst->primary;
+-            ddInst->primary = NULL;
+-        }
+-        if (ddInst->clipper) {
+-            delete ddInst->clipper;
+-            ddInst->clipper = NULL;
+-        }
+-        if (ddInst->ddObject) {
+-            delete ddInst->ddObject;
+-            ddInst->ddObject = NULL;
+-        }
+-        free(ddInst);
+-    }
+-}
+-
+-/**
+- * Enters full-screen exclusive mode, setting the hwnd as the screen
+- */
+-BOOL DDEnterFullScreen(HMONITOR hMon, HWND hwnd, HWND topLevelHwnd)
+-{
+-    HRESULT ddResult = DD_OK;
+-    // Sleep so that programatically full-screen cannot be entered
+-    // and left multiple times quickly enough to crash the driver
+-    static DWORD prevTime = 0;
+-    DWORD currTime = ::GetTickCount();
+-    DWORD timeDiff = (currTime - prevTime);
+-    if (timeDiff < 500) {
+-        ::Sleep(500 - timeDiff);
+-    }
+-    prevTime = currTime;
+-
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    tmpDdInstance->ddObject->SetCooperativeLevel(topLevelHwnd,
+-        DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDEnterFullScreen");
+-        return FALSE;
+-    }
+-    if (tmpDdInstance->primary) {
+-        // No clipping necessary in fullscreen mode.  Elsewhere,
+-        // we avoid setting the clip list for the fullscreen window,
+-        // so we should also null-out the clipper object for the
+-        // primary surface in that case.  Bug 4737785.
+-        tmpDdInstance->primary->SetClipper(NULL);
+-    }
+-    tmpDdInstance->hwndFullScreen = hwnd;
+-    tmpDdInstance->context = CONTEXT_ENTER_FULL_SCREEN;
+-
+-    return TRUE;
+-}
+-
+-
+-/**
+- * Exits full-screen exclusive mode
+- */
+-BOOL DDExitFullScreen(HMONITOR hMon, HWND hwnd)
+-{
+-    // Sleep so that programatically full-screen cannot be entered
+-    // and left multiple times quickly enough to crash the driver
+-    static DWORD prevTime = 0;
+-    DWORD currTime = ::GetTickCount();
+-    DWORD timeDiff = (currTime - prevTime);
+-    if (timeDiff < 500) {
+-        ::Sleep(500 - timeDiff);
+-    }
+-    prevTime = currTime;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDExitFullScreen");
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    tmpDdInstance->context = CONTEXT_EXIT_FULL_SCREEN;
+-    if (!tmpDdInstance || !tmpDdInstance->ddObject ||
+-        !tmpDdInstance->ddObject->RestoreDDDisplayMode()) {
+-        return FALSE;
+-    }
+-    J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                "DDExitFullScreen: Restoring cooperative level hwnd=0x%x",
+-                hwnd);
+-    HRESULT ddResult =
+-        tmpDdInstance->ddObject->SetCooperativeLevel(NULL, DDSCL_NORMAL);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "DDExitFullScreen");
+-        return FALSE;
+-    }
+-    if (tmpDdInstance->clipper == NULL) {
+-        // May not have created clipper if we were in FS mode during
+-        // primary creation
+-        tmpDdInstance->clipper = tmpDdInstance->ddObject->CreateDDClipper();
+-    }
+-    if (tmpDdInstance->clipper != NULL) {
+-        tmpDdInstance->primary->SetClipper(tmpDdInstance->clipper);
+-    }
+-    J2dTraceLn(J2D_TRACE_VERBOSE,
+-               "DDExitFullScreen: Restored cooperative level");
+-    tmpDdInstance->hwndFullScreen = NULL;
+-    tmpDdInstance->context = CONTEXT_NORMAL;
+-    return TRUE;
+-}
+-
+-/**
+- * Gets the current display mode; sets the values in displayMode
+- */
+-BOOL DDGetDisplayMode(HMONITOR hMon, DDrawDisplayMode& displayMode)
+-{
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    if (tmpDdInstance && tmpDdInstance->ddObject) {
+-        return tmpDdInstance->ddObject->GetDDDisplayMode(displayMode);
+-    } else {
+-        return FALSE;
+-    }
+-}
+-
+-/**
+- * Sets the display mode to the supplied mode
+- */
+-BOOL DDSetDisplayMode(HMONITOR hMon, DDrawDisplayMode& displayMode)
+-{
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    if (tmpDdInstance) {
+-        tmpDdInstance->context = CONTEXT_DISPLAY_CHANGE;
+-    }
+-    if (tmpDdInstance && tmpDdInstance->ddObject) {
+-        int attempts = 0;
+-        while (attempts++ < MAX_BUSY_ATTEMPTS) {
+-            HRESULT ddResult = tmpDdInstance->ddObject->SetDDDisplayMode(
+-                displayMode);
+-            // Spin on the busy-type errors or return having failed or succeeded
+-            switch (ddResult) {
+-                case DD_OK:
+-                    return TRUE;
+-                case DDERR_SURFACEBUSY:
+-                    J2dTraceLn(J2D_TRACE_WARNING,
+-                               "DDSetDisplayMode: surface busy");
+-                    break;
+-                default:
+-                    DebugPrintDirectDrawError(ddResult, "DDSetDisplayMode");
+-                    return FALSE;
+-            }
+-        }
+-        return FALSE;
+-    } else {
+-        return FALSE;
+-    }
+-}
+-
+-/**
+- * Enumerates all display modes, calling the supplied callback for each
+- * display mode returned by the system
+- */
+-BOOL DDEnumDisplayModes(HMONITOR hMon, DDrawDisplayMode* constraint,
+-    DDrawDisplayMode::Callback callback, void* context)
+-{
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    if (tmpDdInstance && tmpDdInstance->ddObject) {
+-        return tmpDdInstance->ddObject->EnumDDDisplayModes(
+-            constraint, callback, context);
+-    } else {
+-        return FALSE;
+-    }
+-}
+-
+-/**
+- * Attempts to restore surface.  This will only succeed if the system is
+- * in a state that allows the surface to be restored.  If a restore
+- * results in a DDERR_WRONGMODE, then the surface must be recreated
+- * entirely; we do this by invalidating the surfaceData and recreating
+- * it from scratch (at the Java level).
+- */
+-BOOL DDRestoreSurface(Win32SDOps *wsdo)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "DDRestoreSurface, wsdo->lpSurface=0x%x",
+-                wsdo->lpSurface);
+-
+-    DDrawObjectStruct *tmpDdInstance = wsdo->ddInstance;
+-    if (tmpDdInstance == NULL || !tmpDdInstance->accelerated) {
+-        return FALSE;
+-    }
+-    // Don't try to restore an inactive primary in full-screen mode
+-    if (!isAppActive && wsdo->window &&
+-        wsdo->window == tmpDdInstance->hwndFullScreen) {
+-        return FALSE;
+-    }
+-    if (wsdo->lpSurface->IsLost() == DD_OK) {
+-        J2dTraceLn(J2D_TRACE_VERBOSE, "DDRestoreSurface:  surface memory ok");
+-    }
+-    else {
+-        J2dTraceLn(J2D_TRACE_WARNING,
+-                   "DDRestoreSurface: surface memory lost, trying to restore");
+-        HRESULT ddResult;
+-        ddResult = wsdo->lpSurface->Restore();
+-        if (ddResult == DDERR_WRONGMODE) {
+-            // Strange full-screen bug; return false to avoid a hang.
+-            // Note that we should never get this error in full-screen mode.
+-            if (wsdo->window == tmpDdInstance->hwndFullScreen) {
+-                return FALSE;
+-            }
+-            // Wrong mode: display depth has been changed.
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "DDRestoreSurface failure: DDERR_WRONGMODE");
+-            if (wsdo->window) {
+-                /**
+-                 * If this is a window surface, invalidate this
+-                 * object's ddInstance and return the approriate error.  The
+-                 * surfaceData will later be invalidated, disposed, and
+-                 * re-created with the new and correct depth information.
+-                 * Only invalidate for windows because offscreen surfaces
+-                 * have other means of being re-created and do not necessarily
+-                 * mean that the ddInstance object is invalid for other surfaces
+-                 */
+-                DDInvalidateDDInstance(wsdo->ddInstance);
+-            }
+-            return FALSE;
+-        } else if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult, "DDRestoreSurface");
+-            return FALSE;
+-        }
+-    }
+-    if (!tmpDdInstance->valid) {
+-        tmpDdInstance->valid = TRUE;
+-    }
+-    return TRUE;
+-}
+-
+-jint DDGetAvailableMemory(HMONITOR hMon)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDGetAvailableMemory");
+-    DWORD dwFree;
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-    if (!useDD || !tmpDdInstance || !tmpDdInstance->valid) {
+-        return 0;
+-    }
+-
+-    HRESULT ddResult = tmpDdInstance->ddObject->GetDDAvailableVidMem(&dwFree);
+-    if (ddResult != DD_OK) {
+-        DebugPrintDirectDrawError(ddResult, "GetAvailableMemory");
+-    }
+-
+-    return (jint)dwFree;
+-}
+-
+-
+-/**
+- * Creates either an offscreen or onscreen ddraw surface, depending
+- * on the value of wsdo->window.  Handles the common
+- * framework of surface creation, such as ddInstance management,
+- * and passes off the functionality of actual surface creation to
+- * other functions.  Successful creation results in a return value
+- * of TRUE.
+- */
+-BOOL DDCreateSurface(Win32SDOps *wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDCreateSurface");
+-    HMONITOR hMon;
+-    hMon = (HMONITOR)wsdo->device->GetMonitor();
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-
+-    wsdo->ddInstance = NULL; // default value in case of error
+-    wsdo->lpSurface = NULL; // default value in case of error
+-
+-    if (wsdo->window) {
+-        if (tmpDdInstance &&
+-            tmpDdInstance->backBufferCount != wsdo->backBufferCount &&
+-            tmpDdInstance->hwndFullScreen == wsdo->window)
+-        {
+-            tmpDdInstance->context = CONTEXT_CHANGE_BUFFER_COUNT;
+-            tmpDdInstance->backBufferCount = wsdo->backBufferCount;
+-        }
+-        if (!tmpDdInstance || !tmpDdInstance->valid ||
+-            tmpDdInstance->context != CONTEXT_NORMAL
+-            ) {
+-            // Only recreate dd object on primary create.  Given our current
+-            // model of displayChange event propagation, we can only guarantee
+-            // that the system has been properly prepared for a recreate when
+-            // we recreate a primary surface.  The offscreen surfaces may
+-            // be recreated at any time.
+-            // Recreating ddraw at offscreen surface creation time has caused
+-            // rendering artifacts as well as unexplainable hangs in ddraw
+-            // calls.
+-            ddInstanceLock.Enter();
+-            BOOL success = DDCreatePrimary(wsdo);
+-            ddInstanceLock.Leave();
+-            if (!success) {
+-                return FALSE;
+-            }
+-            tmpDdInstance = GetDDInstanceForDevice(hMon);
+-        }
+-        // restore the primary if it's lost
+-        if (tmpDdInstance->primary != NULL &&
+-            FAILED(tmpDdInstance->primary->IsLost()) &&
+-            FAILED(tmpDdInstance->primary->Restore()))
+-        {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "DDCreateSurface: failed to restore primary surface");
+-            return FALSE;
+-        }
+-        // non-null window means onscreen surface.  Primary already
+-        // exists, just need to cache a pointer to it in this wsdo
+-        wsdo->lpSurface = tmpDdInstance->primary;
+-    } else {
+-        if (!tmpDdInstance || !tmpDdInstance->valid) {
+-            // Don't recreate the ddraw object here (see note above), but
+-            // do fail this creation.  We will come back here eventually
+-            // after an onscreen surface has been created (and the new
+-            // ddraw object to go along with it).
+-            return FALSE;
+-        }
+-        if (!DDCreateOffScreenSurface(wsdo, tmpDdInstance)) {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "DDCreateSurface: Failed creating offscreen surface");
+-            return FALSE;
+-        }
+-    }
+-    wsdo->ddInstance = tmpDdInstance;
+-    J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                "DDCreateSurface: succeeded ddInst=0x%x wsdo->lpSurface=0x%x",
+-                tmpDdInstance, wsdo->lpSurface);
+-    return TRUE;
+-}
+-
+-/**
+- * Utility function to make sure that native and java-level
+- * surface depths are matched.  They can be mismatched when display-depths
+- * change, either between the creation of the Java surfaceData structure
+- * and the native ddraw surface, or later when a surface is automatically
+- * adjusted to be the new display depth (even if it was created in a different
+- * depth to begin with)
+- */
+-BOOL DDSurfaceDepthsCompatible(int javaDepth, int nativeDepth)
+-{
+-    if (nativeDepth != javaDepth) {
+-        switch (nativeDepth) {
+-        case 0: // Error condition: something is wrong with the surface
+-        case 8:
+-        case 24:
+-            // Java and native surface depths should match exactly for
+-            // these cases
+-            return FALSE;
+-            break;
+-        case 16:
+-            // Java surfaceData should be 15 or 16 bits
+-            if (javaDepth < 15 || javaDepth > 16) {
+-                return FALSE;
+-            }
+-            break;
+-        case 32:
+-            // Could have this native depth for either 24- or 32-bit
+-            // Java surfaceData
+-            if (javaDepth != 24 && javaDepth != 32) {
+-                return FALSE;
+-            }
+-            break;
+-        default:
+-            // should not get here, but if we do something is odd, so
+-            // just register a failure
+-            return FALSE;
+-        }
+-    }
+-    return TRUE;
+-}
+-
+-
+-/**
+- * Creates offscreen surface.  Examines the display mode information
+- * for the current ddraw object and uses that to create this new
+- * surface.
+- */
+-BOOL DDCreateOffScreenSurface(Win32SDOps *wsdo,
+-                              DDrawObjectStruct *ddInst)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDCreateOffScreenSurface");
+-
+-    wsdo->lpSurface =
+-        ddInst->ddObject->CreateDDOffScreenSurface(wsdo->w, wsdo->h,
+-        wsdo->depth, wsdo->transparency, DDSCAPS_VIDEOMEMORY);
+-    if (!ddInst->primary || (ddInst->primary->IsLost() != DD_OK)) {
+-        if (wsdo->lpSurface) {
+-            delete wsdo->lpSurface;
+-            wsdo->lpSurface = NULL;
+-        }
+-        if (ddInst->primary) {
+-            // attempt to restore primary
+-            ddInst->primary->Restore();
+-            if (ddInst->primary->IsLost() == DD_OK) {
+-                // Primary restored: create the offscreen surface again
+-                wsdo->lpSurface =
+-                    ddInst->ddObject->CreateDDOffScreenSurface(wsdo->w, wsdo->h,
+-                        wsdo->depth, wsdo->transparency,
+-                        DDSCAPS_VIDEOMEMORY);
+-                if (ddInst->primary->IsLost() != DD_OK) {
+-                    // doubtful, but possible that it is lost again
+-                    // If so, delete the surface and get out of here
+-                    if (wsdo->lpSurface) {
+-                        delete wsdo->lpSurface;
+-                        wsdo->lpSurface = NULL;
+-                    }
+-                }
+-            }
+-        }
+-    }
+-    if (wsdo->lpSurface != NULL && (wsdo->transparency != TR_TRANSLUCENT)) {
+-        /**
+-         * 4941350: Double-check that the depth of the surface just created
+-         * is compatible with the depth requested.  Note that we ignore texture
+-         * (translucent) surfaces as those depths may differ between Java and
+-         * native representations.
+-         */
+-        int surfaceDepth = wsdo->lpSurface->GetSurfaceDepth();
+-        if (!DDSurfaceDepthsCompatible(wsdo->depth, surfaceDepth)) {
+-            J2dTraceLn2(J2D_TRACE_WARNING,
+-                        "DDCreateOffScreenSurface: Surface depth mismatch: "\
+-                        "intended=%d actual=%d",
+-                        wsdo->depth, surfaceDepth);
+-            DDReleaseSurfaceMemory(wsdo->lpSurface);
+-            wsdo->lpSurface = NULL;
+-        }
+-    }
+-    return (wsdo->lpSurface != NULL);
+-}
+-
+-
+-/**
+- * Gets an attached surface, such as a back buffer, from a parent
+- * surface.  Sets the lpSurface member of the wsdo supplied to
+- * the attached surface.
+- */
+-BOOL DDGetAttachedSurface(JNIEnv *env, Win32SDOps* wsdo_parent,
+-    Win32SDOps* wsdo)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "DDGetAttachedSurface");
+-    HMONITOR hMon = (HMONITOR)wsdo_parent->device->GetMonitor();
+-    DDrawObjectStruct *tmpDdInstance = GetDDInstanceForDevice(hMon);
+-
+-    wsdo->ddInstance = NULL; // default value in case of error
+-    wsdo->lpSurface = NULL; // default value in case of error
+-
+-    if (!tmpDdInstance || !tmpDdInstance->valid ||
+-        wsdo_parent->lpSurface == NULL)
+-    {
+-        J2dTraceLn2(J2D_TRACE_WARNING,
+-                    "DDGetAttachedSurface: unable to get attached "\
+-                    "surface for wsdo=0%x wsdo_parent=0%x", wsdo, wsdo_parent);
+-        return FALSE;
+-    }
+-    DDrawSurface* pNew = wsdo_parent->lpSurface->GetDDAttachedSurface();
+-    if (pNew == NULL) {
+-        return FALSE;
+-    }
+-    wsdo->lpSurface = pNew;
+-    wsdo->ddInstance = tmpDdInstance;
+-    J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                "DDGetAttachedSurface: succeeded wsdo->lpSurface=0x%x",
+-                wsdo->lpSurface);
+-    return TRUE;
+-}
+-
+-
+-/**
+- * Destroys resources associated with a surface
+- */
+-void DDDestroySurface(Win32SDOps *wsdo)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO, "DDDestroySurface: wsdo->lpSurface=0x%x",
+-                wsdo->lpSurface);
+-
+-    if (!wsdo->lpSurface) {
+-        // null surface means it was never created; simply return
+-        return;
+-    }
+-    if (!wsdo->window) {
+-        // offscreen surface
+-        delete wsdo->lpSurface;
+-        wsdo->lpSurface = NULL;
+-    }
+-    J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                "DDDestroySurface: ddInstance->refCount=%d",
+-                wsdo->ddInstance->refCount);
+-}
+-
+-/**
+- * Releases ddraw resources associated with a surface.  Note that
+- * the DDrawSurface object is still valid, but the underlying
+- * DirectDraw surface is released.
+- */
+-void DDReleaseSurfaceMemory(DDrawSurface *lpSurface)
+-{
+-    J2dTraceLn1(J2D_TRACE_INFO,
+-                "DDReleaseSurfaceMemory: lpSurface=0x%x", lpSurface);
+-
+-    if (!lpSurface) {
+-        // null surface means it was never created; simply return
+-        return;
+-    }
+-    HRESULT ddResult = lpSurface->ReleaseSurface();
+-}
+-
+-/*
+- * This function returns whether or not surfaces should be replaced
+- * in response to a WM_DISPLAYCHANGE message.  If we are a full-screen
+- * application that has lost its surfaces, we do not want to replace
+- * our surfaces in response to a WM_DISPLAYCHANGE.
+- */
+-BOOL DDCanReplaceSurfaces(HWND hwnd)
+-{
+-    J2dTraceLn1(J2D_TRACE_VERBOSE, "DDCanReplaceSurfaces: hwnd=0x%x", hwnd);
+-    DDrawObjectStruct *tmpDdInstance = NULL;
+-    ddInstanceLock.Enter();
+-    for (int i = 0; i < currNumDevices; i++) {
+-        tmpDdInstance = ddInstance[i];
+-        if (DDINSTANCE_USABLE(tmpDdInstance)) {
+-            J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                        "  ddInstance[%d]->hwndFullScreen=0x%x",
+-                        i, tmpDdInstance->hwndFullScreen);
+-            if (tmpDdInstance->hwndFullScreen != NULL &&
+-                tmpDdInstance->context == CONTEXT_NORMAL &&
+-                (tmpDdInstance->hwndFullScreen == hwnd || hwnd == NULL)) {
+-                ddInstanceLock.Leave();
+-                return FALSE;
+-            }
+-        }
+-    }
+-    ddInstanceLock.Leave();
+-    return TRUE;
+-}
+-
+-/*
+- * This function prints the DirectDraw error associated with
+- * the given errNum
+- */
+-void PrintDirectDrawError(DWORD errNum, char *message)
+-{
+-    char buffer[255];
+-
+-    GetDDErrorString(errNum, buffer);
+-    printf("%s:: %s\n", message, buffer);
+-}
+-
+-
+-/*
+- * This function prints the DirectDraw error associated with
+- * the given errNum
+- */
+-void DebugPrintDirectDrawError(DWORD errNum, char *message)
+-{
+-    char buffer[255];
+-
+-    GetDDErrorString(errNum, buffer);
+-    J2dRlsTraceLn2(J2D_TRACE_ERROR, "%s: %s", message, buffer);
+-}
+-
+-
+-/*
+- * This function prints the error string into the given buffer
+- */
+-void GetDDErrorString(DWORD errNum, char *buffer)
+-{
+-    switch (errNum) {
+-    case DDERR_ALREADYINITIALIZED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_ALREADYINITIALIZED");
+-        break;
+-    case DDERR_CANNOTATTACHSURFACE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANNOTATTACHSURFACE");
+-        break;
+-    case DDERR_CANNOTDETACHSURFACE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANNOTDETACHSURFACE");
+-        break;
+-    case DDERR_CURRENTLYNOTAVAIL:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CURRENTLYNOTAVAIL");
+-        break;
+-    case DDERR_EXCEPTION:
+-        sprintf(buffer, "DirectDraw Error: DDERR_EXCEPTION");
+-        break;
+-    case DDERR_GENERIC:
+-        sprintf(buffer, "DirectDraw Error: DDERR_GENERIC");
+-        break;
+-    case DDERR_HEIGHTALIGN:
+-        sprintf(buffer, "DirectDraw Error: DDERR_HEIGHTALIGN");
+-        break;
+-    case DDERR_INCOMPATIBLEPRIMARY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INCOMPATIBLEPRIMARY");
+-        break;
+-    case DDERR_INVALIDCAPS:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDCAPS");
+-        break;
+-    case DDERR_INVALIDCLIPLIST:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDCLIPLIST");
+-        break;
+-    case DDERR_INVALIDMODE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDMODE");
+-        break;
+-    case DDERR_INVALIDOBJECT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDOBJECT");
+-        break;
+-    case DDERR_INVALIDPARAMS:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDPARAMS");
+-        break;
+-    case DDERR_INVALIDPIXELFORMAT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDPIXELFORMAT");
+-        break;
+-    case DDERR_INVALIDRECT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDRECT");
+-        break;
+-    case DDERR_LOCKEDSURFACES:
+-        sprintf(buffer, "DirectDraw Error: DDERR_LOCKEDSURFACES");
+-        break;
+-    case DDERR_NO3D:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NO3D");
+-        break;
+-    case DDERR_NOALPHAHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOALPHAHW");
+-        break;
+-    case DDERR_NOCLIPLIST:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCLIPLIST");
+-        break;
+-    case DDERR_NOCOLORCONVHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCOLORCONVHW");
+-        break;
+-    case DDERR_NOCOOPERATIVELEVELSET:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCOOPERATIVELEVELSET");
+-        break;
+-    case DDERR_NOCOLORKEY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCOLORKEY");
+-        break;
+-    case DDERR_NOCOLORKEYHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCOLORKEYHW");
+-        break;
+-    case DDERR_NODIRECTDRAWSUPPORT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NODIRECTDRAWSUPPORT");
+-        break;
+-    case DDERR_NOEXCLUSIVEMODE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOEXCLUSIVEMODE");
+-        break;
+-    case DDERR_NOFLIPHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOFLIPHW");
+-        break;
+-    case DDERR_NOGDI:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOGDI");
+-        break;
+-    case DDERR_NOMIRRORHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOMIRRORHW");
+-        break;
+-    case DDERR_NOTFOUND:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTFOUND");
+-        break;
+-    case DDERR_NOOVERLAYHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOOVERLAYHW");
+-        break;
+-    case DDERR_NORASTEROPHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NORASTEROPHW");
+-        break;
+-    case DDERR_NOROTATIONHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOROTATIONHW");
+-        break;
+-    case DDERR_NOSTRETCHHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOSTRETCHHW");
+-        break;
+-    case DDERR_NOT4BITCOLOR:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOT4BITCOLOR");
+-        break;
+-    case DDERR_NOT4BITCOLORINDEX:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOT4BITCOLORINDEX");
+-        break;
+-    case DDERR_NOT8BITCOLOR:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOT8BITCOLOR");
+-        break;
+-    case DDERR_NOTEXTUREHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTEXTUREHW");
+-        break;
+-    case DDERR_NOVSYNCHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOVSYNCHW");
+-        break;
+-    case DDERR_NOZBUFFERHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOZBUFFERHW");
+-        break;
+-    case DDERR_NOZOVERLAYHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOZOVERLAYHW");
+-        break;
+-    case DDERR_OUTOFCAPS:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OUTOFCAPS");
+-        break;
+-    case DDERR_OUTOFMEMORY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OUTOFMEMORY");
+-        break;
+-    case DDERR_OUTOFVIDEOMEMORY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OUTOFVIDEOMEMORY");
+-        break;
+-    case DDERR_OVERLAYCANTCLIP:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OVERLAYCANTCLIP");
+-        break;
+-    case DDERR_OVERLAYCOLORKEYONLYONEACTIVE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OVERLAYCOLORKEYONLYONEACTIVE");
+-        break;
+-    case DDERR_PALETTEBUSY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_PALETTEBUSY");
+-        break;
+-    case DDERR_COLORKEYNOTSET:
+-        sprintf(buffer, "DirectDraw Error: DDERR_COLORKEYNOTSET");
+-        break;
+-    case DDERR_SURFACEALREADYATTACHED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACEALREADYATTACHED");
+-        break;
+-    case DDERR_SURFACEALREADYDEPENDENT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACEALREADYDEPENDENT");
+-        break;
+-    case DDERR_SURFACEBUSY:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACEBUSY");
+-        break;
+-    case DDERR_CANTLOCKSURFACE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANTLOCKSURFACE");
+-        break;
+-    case DDERR_SURFACEISOBSCURED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACEISOBSCURED");
+-        break;
+-    case DDERR_SURFACELOST:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACELOST");
+-        break;
+-    case DDERR_SURFACENOTATTACHED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_SURFACENOTATTACHED");
+-        break;
+-    case DDERR_TOOBIGHEIGHT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_TOOBIGHEIGHT");
+-        break;
+-    case DDERR_TOOBIGSIZE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_TOOBIGSIZE");
+-        break;
+-    case DDERR_TOOBIGWIDTH:
+-        sprintf(buffer, "DirectDraw Error: DDERR_TOOBIGWIDTH");
+-        break;
+-    case DDERR_UNSUPPORTED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_UNSUPPORTED");
+-        break;
+-    case DDERR_UNSUPPORTEDFORMAT:
+-        sprintf(buffer, "DirectDraw Error: DDERR_UNSUPPORTEDFORMAT");
+-        break;
+-    case DDERR_UNSUPPORTEDMASK:
+-        sprintf(buffer, "DirectDraw Error: DDERR_UNSUPPORTEDMASK");
+-        break;
+-    case DDERR_VERTICALBLANKINPROGRESS:
+-        sprintf(buffer, "DirectDraw Error: DDERR_VERTICALBLANKINPROGRESS");
+-        break;
+-    case DDERR_WASSTILLDRAWING:
+-        sprintf(buffer, "DirectDraw Error: DDERR_WASSTILLDRAWING");
+-        break;
+-    case DDERR_XALIGN:
+-        sprintf(buffer, "DirectDraw Error: DDERR_XALIGN");
+-        break;
+-    case DDERR_INVALIDDIRECTDRAWGUID:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDDIRECTDRAWGUID");
+-        break;
+-    case DDERR_DIRECTDRAWALREADYCREATED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_DIRECTDRAWALREADYCREATED");
+-        break;
+-    case DDERR_NODIRECTDRAWHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NODIRECTDRAWHW");
+-        break;
+-    case DDERR_PRIMARYSURFACEALREADYEXISTS:
+-        sprintf(buffer, "DirectDraw Error: DDERR_PRIMARYSURFACEALREADYEXISTS");
+-        break;
+-    case DDERR_NOEMULATION:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOEMULATION");
+-        break;
+-    case DDERR_REGIONTOOSMALL:
+-        sprintf(buffer, "DirectDraw Error: DDERR_REGIONTOOSMALL");
+-        break;
+-    case DDERR_CLIPPERISUSINGHWND:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CLIPPERISUSINGHWND");
+-        break;
+-    case DDERR_NOCLIPPERATTACHED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOCLIPPERATTACHED");
+-        break;
+-    case DDERR_NOHWND:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOHWND");
+-        break;
+-    case DDERR_HWNDSUBCLASSED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_HWNDSUBCLASSED");
+-        break;
+-    case DDERR_HWNDALREADYSET:
+-        sprintf(buffer, "DirectDraw Error: DDERR_HWNDALREADYSET");
+-        break;
+-    case DDERR_NOPALETTEATTACHED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOPALETTEATTACHED");
+-        break;
+-    case DDERR_NOPALETTEHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOPALETTEHW");
+-        break;
+-    case DDERR_BLTFASTCANTCLIP:
+-        sprintf(buffer, "DirectDraw Error: DDERR_BLTFASTCANTCLIP");
+-        break;
+-    case DDERR_NOBLTHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOBLTHW");
+-        break;
+-    case DDERR_NODDROPSHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NODDROPSHW");
+-        break;
+-    case DDERR_OVERLAYNOTVISIBLE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_OVERLAYNOTVISIBLE");
+-        break;
+-    case DDERR_NOOVERLAYDEST:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOOVERLAYDEST");
+-        break;
+-    case DDERR_INVALIDPOSITION:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDPOSITION");
+-        break;
+-    case DDERR_NOTAOVERLAYSURFACE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTAOVERLAYSURFACE");
+-        break;
+-    case DDERR_EXCLUSIVEMODEALREADYSET:
+-        sprintf(buffer, "DirectDraw Error: DDERR_EXCLUSIVEMODEALREADYSET");
+-        break;
+-    case DDERR_NOTFLIPPABLE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTFLIPPABLE");
+-        break;
+-    case DDERR_CANTDUPLICATE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANTDUPLICATE");
+-        break;
+-    case DDERR_NOTLOCKED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTLOCKED");
+-        break;
+-    case DDERR_CANTCREATEDC:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANTCREATEDC");
+-        break;
+-    case DDERR_NODC:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NODC");
+-        break;
+-    case DDERR_WRONGMODE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_WRONGMODE");
+-        break;
+-    case DDERR_IMPLICITLYCREATED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_IMPLICITLYCREATED");
+-        break;
+-    case DDERR_NOTPALETTIZED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTPALETTIZED");
+-        break;
+-    case DDERR_UNSUPPORTEDMODE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_UNSUPPORTEDMODE");
+-        break;
+-    case DDERR_NOMIPMAPHW:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOMIPMAPHW");
+-        break;
+-    case DDERR_INVALIDSURFACETYPE:
+-        sprintf(buffer, "DirectDraw Error: DDERR_INVALIDSURFACETYPE");
+-        break;
+-    case DDERR_DCALREADYCREATED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_DCALREADYCREATED");
+-        break;
+-    case DDERR_CANTPAGELOCK:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANTPAGELOCK");
+-        break;
+-    case DDERR_CANTPAGEUNLOCK:
+-        sprintf(buffer, "DirectDraw Error: DDERR_CANTPAGEUNLOCK");
+-        break;
+-    case DDERR_NOTPAGELOCKED:
+-        sprintf(buffer, "DirectDraw Error: DDERR_NOTPAGELOCKED");
+-        break;
+-    case D3DERR_INVALID_DEVICE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALID_DEVICE");
+-        break;
+-    case D3DERR_INITFAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INITFAILED");
+-        break;
+-    case D3DERR_DEVICEAGGREGATED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_DEVICEAGGREGATED");
+-        break;
+-    case D3DERR_EXECUTE_CREATE_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_CREATE_FAILED");
+-        break;
+-    case D3DERR_EXECUTE_DESTROY_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_DESTROY_FAILED");
+-        break;
+-    case D3DERR_EXECUTE_LOCK_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_LOCK_FAILED");
+-        break;
+-    case D3DERR_EXECUTE_UNLOCK_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_UNLOCK_FAILED");
+-        break;
+-    case D3DERR_EXECUTE_LOCKED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_LOCKED");
+-        break;
+-    case D3DERR_EXECUTE_NOT_LOCKED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_NOT_LOCKED");
+-        break;
+-    case D3DERR_EXECUTE_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_FAILED");
+-        break;
+-    case D3DERR_EXECUTE_CLIPPED_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_EXECUTE_CLIPPED_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_NO_SUPPORT:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_NO_SUPPORT");
+-        break;
+-    case D3DERR_TEXTURE_CREATE_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_CREATE_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_DESTROY_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_DESTROY_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_LOCK_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_LOCK_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_UNLOCK_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_UNLOCK_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_LOAD_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_LOAD_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_SWAP_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_SWAP_FAILED");
+-        break;
+-    case D3DERR_TEXTURE_LOCKED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_LOCKED");
+-        break;
+-    case D3DERR_TEXTURE_NOT_LOCKED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_NOT_LOCKED");
+-        break;
+-    case D3DERR_TEXTURE_GETSURF_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_GETSURF_FAILED");
+-        break;
+-    case D3DERR_MATRIX_CREATE_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATRIX_CREATE_FAILED");
+-        break;
+-    case D3DERR_MATRIX_DESTROY_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATRIX_DESTROY_FAILED");
+-        break;
+-    case D3DERR_MATRIX_SETDATA_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATRIX_SETDATA_FAILED");
+-        break;
+-    case D3DERR_MATRIX_GETDATA_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATRIX_GETDATA_FAILED");
+-        break;
+-    case D3DERR_SETVIEWPORTDATA_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SETVIEWPORTDATA_FAILED");
+-        break;
+-    case D3DERR_INVALIDCURRENTVIEWPORT:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALIDCURRENTVIEWPORT");
+-        break;
+-    case D3DERR_INVALIDPRIMITIVETYPE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALIDPRIMITIVETYPE");
+-        break;
+-    case D3DERR_INVALIDVERTEXTYPE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALIDVERTEXTYPE");
+-        break;
+-    case D3DERR_TEXTURE_BADSIZE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_TEXTURE_BADSIZE");
+-        break;
+-    case D3DERR_INVALIDRAMPTEXTURE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALIDRAMPTEXTURE");
+-        break;
+-    case D3DERR_MATERIAL_CREATE_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATERIAL_CREATE_FAILED");
+-        break;
+-    case D3DERR_MATERIAL_DESTROY_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATERIAL_DESTROY_FAILED");
+-        break;
+-    case D3DERR_MATERIAL_SETDATA_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATERIAL_SETDATA_FAILED");
+-        break;
+-    case D3DERR_MATERIAL_GETDATA_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_MATERIAL_GETDATA_FAILED");
+-        break;
+-    case D3DERR_INVALIDPALETTE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INVALIDPALETTE");
+-        break;
+-    case D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY:
+-        sprintf(buffer, "Direct3D Error: D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY");
+-        break;
+-    case D3DERR_ZBUFF_NEEDS_VIDEOMEMORY:
+-        sprintf(buffer, "Direct3D Error: D3DERR_ZBUFF_NEEDS_VIDEOMEMORY");
+-        break;
+-    case D3DERR_SURFACENOTINVIDMEM:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SURFACENOTINVIDMEM");
+-        break;
+-    case D3DERR_LIGHT_SET_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_LIGHT_SET_FAILED");
+-        break;
+-    case D3DERR_LIGHTHASVIEWPORT:
+-        sprintf(buffer, "Direct3D Error: D3DERR_LIGHTHASVIEWPORT");
+-        break;
+-    case D3DERR_LIGHTNOTINTHISVIEWPORT:
+-        sprintf(buffer, "Direct3D Error: D3DERR_LIGHTNOTINTHISVIEWPORT");
+-        break;
+-    case D3DERR_SCENE_IN_SCENE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SCENE_IN_SCENE");
+-        break;
+-    case D3DERR_SCENE_NOT_IN_SCENE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SCENE_NOT_IN_SCENE");
+-        break;
+-    case D3DERR_SCENE_BEGIN_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SCENE_BEGIN_FAILED");
+-        break;
+-    case D3DERR_SCENE_END_FAILED:
+-        sprintf(buffer, "Direct3D Error: D3DERR_SCENE_END_FAILED");
+-        break;
+-    case D3DERR_INBEGIN:
+-        sprintf(buffer, "Direct3D Error: D3DERR_INBEGIN");
+-        break;
+-    case D3DERR_NOTINBEGIN:
+-        sprintf(buffer, "Direct3D Error: D3DERR_NOTINBEGIN");
+-        break;
+-    case D3DERR_NOVIEWPORTS:
+-        sprintf(buffer, "Direct3D Error: D3DERR_NOVIEWPORTS");
+-        break;
+-    case D3DERR_VIEWPORTDATANOTSET:
+-        sprintf(buffer, "Direct3D Error: D3DERR_VIEWPORTDATANOTSET");
+-        break;
+-    case D3DERR_VIEWPORTHASNODEVICE:
+-        sprintf(buffer, "Direct3D Error: D3DERR_VIEWPORTHASNODEVICE");
+-        break;
+-    case D3DERR_NOCURRENTVIEWPORT:
+-        sprintf(buffer, "Direct3D Error: D3DERR_NOCURRENTVIEWPORT");
+-        break;
+-    default:
+-        sprintf(buffer, "DirectX Error Unknown 0x%x", errNum);
+-        break;
+-    }
+-
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/ddrawUtils.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/ddrawUtils.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,135 +0,0 @@
+-/*
+- * Copyright (c) 2000, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef DDRAWUTILS_H
+-#define DDRAWUTILS_H
+-
+-
+-#include <ddraw.h>
+-#include <jni.h>
+-#include <windows.h>
+-#include "Win32SurfaceData.h"
+-#include "ddrawObject.h"
+-
+-/**
+- * Direct Draw utility functions
+- */
+-
+-#define DDINSTANCE_USABLE(ddInst) \
+-    ((ddInst) && (ddInst->valid) && (ddInst->accelerated))
+-
+-void    DDRelease();
+-
+-void    DDReleaseSurfaceMemory(DDrawSurface *lpSurface);
+-
+-BOOL    DDCreatePrimary(Win32SDOps *wsdo);
+-
+-void    DDFreeSyncSurface(DDrawObjectStruct *tmpDdInstance);
+-
+-void    DDSync();
+-
+-BOOL    DDCanCreatePrimary(HMONITOR hMon);
+-
+-BOOL    DDCanBlt(Win32SDOps *wsdo);
+-
+-BOOL    DDUseDDraw(Win32SDOps *wsdo);
+-
+-BOOL    DeviceUseDDraw(HMONITOR hMon);
+-
+-BOOL    DeviceUseD3D(HMONITOR hMon);
+-
+-void    DDInvalidateDDInstance(DDrawObjectStruct *ddInst);
+-
+-void    ReleaseDDInstance(DDrawObjectStruct *ddInst);
+-
+-BOOL    DDEnterFullScreen(HMONITOR hMon, HWND hwnd, HWND topLevelHwnd);
+-
+-BOOL    DDExitFullScreen(HMONITOR hMon, HWND hwnd);
+-
+-BOOL    DDGetDisplayMode(HMONITOR hMon, DDrawDisplayMode& displayMode);
+-
+-BOOL    DDSetDisplayMode(HMONITOR hMon, DDrawDisplayMode& displayMode);
+-
+-BOOL    DDEnumDisplayModes(HMONITOR hMon, DDrawDisplayMode* constraint,
+-                           DDrawDisplayMode::Callback callback, void* context);
+-
+-BOOL    DDClipCheck(Win32SDOps *wsdo, RECT *operationRect);
+-
+-BOOL    DDLock(JNIEnv *env, Win32SDOps *wsdo, RECT *lockRect,
+-               SurfaceDataRasInfo *pRasInfo);
+-
+-void    DDUnlock(JNIEnv *env, Win32SDOps *wsdo);
+-
+-BOOL    DDColorFill(JNIEnv *env, jobject sData, Win32SDOps *wsdo,
+-                    RECT *fillRect, jint color);
+-
+-BOOL    DDBlt(JNIEnv *env, Win32SDOps *wsdoSrc, Win32SDOps *wsdoDst,
+-              RECT *rDst, RECT *rSrc, CompositeInfo *compInfo = NULL);
+-
+-void    DDSetColorKey(JNIEnv *env, Win32SDOps *wsdo, jint color);
+-
+-BOOL    DDFlip(JNIEnv *env, Win32SDOps *src, Win32SDOps *dest);
+-
+-BOOL    DDRestoreSurface(Win32SDOps *wsdo);
+-
+-jint    DDGetAvailableMemory(HMONITOR hMon);
+-
+-BOOL    DDCreateSurface(Win32SDOps *wsdo);
+-
+-BOOL    DDCreateOffScreenSurface(Win32SDOps *wsdo, DDrawObjectStruct *ddInst);
+-
+-BOOL    DDGetAttachedSurface(JNIEnv *env, Win32SDOps* wsdo_parent, Win32SDOps* wsdo);
+-
+-void    DDDestroySurface(Win32SDOps *wsdo);
+-
+-BOOL    DDCanReplaceSurfaces(HWND hwnd);
+-
+-BOOL    DDSurfaceDepthsCompatible(int javaDepth, int nativeDepth);
+-
+-void    PrintDirectDrawError(DWORD errNum, char *message);
+-
+-void    DebugPrintDirectDrawError(DWORD errNum, char *message);
+-
+-void    GetDDErrorString(DWORD errNum, char *buffer);
+-
+-DDrawObjectStruct *GetDDInstanceForDevice(HMONITOR hMon);
+-
+-#define CLIP2RECTS_1PARAM(r1, r2, param, comp, lim) \
+-    do { \
+-        if (r1.param comp lim) { \
+-            r2.param += lim - r1.param; \
+-            r1.param = lim; \
+-        } \
+-    } while (0)
+-
+-#define CLIP2RECTS(r1, L, T, R, B, r2) \
+-    do { \
+-        CLIP2RECTS_1PARAM(r1, r2, left, <, L); \
+-        CLIP2RECTS_1PARAM(r1, r2, top, <, T); \
+-        CLIP2RECTS_1PARAM(r1, r2, right, >, R); \
+-        CLIP2RECTS_1PARAM(r1, r2, bottom, >, B); \
+-    } while(0)
+-
+-#endif DDRAWUTILS_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/dxCapabilities.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/dxCapabilities.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,108 +0,0 @@
+-/*
+- * Copyright (c) 2003, 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include <windows.h>
+-#include <stdio.h>
+-#include <malloc.h>
+-#include "dxCapabilities.h"
+-
+-/**
+- * DxCapabilities encapsulates the DirectX capabilities of a display
+- * device.  Typically, we run tests at startup on each display device
+- * at the current display depth.  We record the results of those tests
+- * in a capabilities object and also record those results in the registry.
+- * The next time we run on this display device, we check whether we have
+- * already recorded results for this device/depth in the registry and simply
+- * use those values instead of re-running the tests.  The results of the
+- * tests determine which ddraw/d3d capabilities we enable/disable at runtime.
+- */
+-
+-void DxCapabilities::Initialize(WCHAR *keyName)
+-{
+-    this->keyName = (WCHAR*)malloc((wcslen(keyName) + 1) * sizeof(WCHAR));
+-    wcscpy(this->keyName, keyName);
+-    RegistryKey regKey(keyName, KEY_READ);
+-    ddCreation = regKey.GetIntValue(DD_CREATION);
+-    ddSurfaceCreation = regKey.GetIntValue(DD_SURFACE_CREATION);
+-
+-    d3dCapsValidity = regKey.GetIntValue(D3D_CAPS_VALIDITY);
+-    d3dDeviceCaps = regKey.GetIntValue(D3D_DEVICE_CAPS);
+-}
+-
+-WCHAR *StringForValue(int value)
+-{
+-    switch (value) {
+-    case J2D_ACCEL_UNVERIFIED:
+-        return L"UNVERIFIED";
+-        break;
+-    case J2D_ACCEL_TESTING:
+-        return L"TESTING (may indicate crash during test)";
+-        break;
+-    case J2D_ACCEL_FAILURE:
+-        return L"FAILURE";
+-        break;
+-    case J2D_ACCEL_SUCCESS:
+-        return L"SUCCESS";
+-        break;
+-    default:
+-        return L"UNKNOWN";
+-        break;
+-    }
+-}
+-
+-/**
+- * PrintCaps is here for debugging purposes only
+- */
+-void DxCapabilities::PrintCaps() {
+-    printf("    %S: %S\n", DD_CREATION, StringForValue(ddCreation));
+-    printf("    %S: %S\n", DD_SURFACE_CREATION, StringForValue(ddSurfaceCreation));
+-    printf("    %S: %S\n", D3D_CAPS_VALIDITY, StringForValue(d3dCapsValidity));
+-    printf("    %S: 0x%X\n", D3D_DEVICE_CAPS, d3dDeviceCaps);
+-}
+-
+-void DxCapabilities::SetDdCreationCap(int value) {
+-    ddCreation = value;
+-    SetCap(DD_CREATION, value);
+-}
+-
+-void DxCapabilities::SetDdSurfaceCreationCap(int value) {
+-    ddSurfaceCreation = value;
+-    SetCap(DD_SURFACE_CREATION, value);
+-}
+-
+-void DxCapabilities::SetD3dCapsValidity(int value) {
+-    d3dCapsValidity = value;
+-    SetCap(D3D_CAPS_VALIDITY, value);
+-}
+-
+-void DxCapabilities::SetD3dDeviceCaps(int value) {
+-    d3dDeviceCaps = value;
+-    SetCap(D3D_DEVICE_CAPS, value);
+-}
+-
+-void DxCapabilities::SetCap(WCHAR *capName, int value) {
+-    RegistryKey regKey(keyName, KEY_WRITE);
+-    regKey.SetIntValue(capName, value, TRUE);
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/dxCapabilities.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/dxCapabilities.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,67 +0,0 @@
+-/*
+- * Copyright (c) 2003, 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef DX_CAPABILITIES_H
+-#define DX_CAPABILITIES_H
+-
+-#include "RegistryKey.h"
+-
+-#define DD_CREATION            L"ddCreation"
+-#define DD_SURFACE_CREATION    L"ddSurfaceCreation"
+-#define D3D_CAPS_VALIDITY      L"d3dCapsValidity"
+-#define D3D_DEVICE_CAPS        L"d3dDeviceCaps"
+-
+-class DxCapabilities {
+-private:
+-    WCHAR *keyName;
+-    int ddCreation;
+-    int ddSurfaceCreation;
+-    int d3dCapsValidity;
+-    int d3dDeviceCaps;
+-
+-public:
+-        DxCapabilities() { keyName = NULL; }
+-        ~DxCapabilities() { if (keyName) free(keyName); }
+-    void Initialize(WCHAR *keyName);
+-
+-    int GetDdCreationCap() { return ddCreation; }
+-    int GetDdSurfaceCreationCap() { return ddSurfaceCreation; }
+-    int GetD3dCapsValidity() { return d3dCapsValidity; }
+-    int GetD3dDeviceCaps() { return d3dDeviceCaps; }
+-
+-    WCHAR *GetDeviceName() { return keyName; }
+-
+-    void SetDdCreationCap(int value);
+-    void SetDdSurfaceCreationCap(int value);
+-    void SetD3dCapsValidity(int value);
+-    void SetD3dDeviceCaps(int value);
+-
+-    void PrintCaps();
+-
+-private:
+-    void SetCap(WCHAR *capName, int value);
+-};
+-
+-#endif DX_CAPABILITIES_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/dxInit.cpp
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/dxInit.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,600 +0,0 @@
+-/*
+- * Copyright (c) 2003, 2006, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#include "dxInit.h"
+-#include "ddrawUtils.h"
+-#include "D3DRuntimeTest.h"
+-#include "Trace.h"
+-#include "RegistryKey.h"
+-#include "WindowsFlags.h"
+-#include "Devices.h"
+-
+-/**
+- * This file holds the functions that handle the initialization
+- * process for DirectX.  This process includes checking the
+- * Windows Registry for information about the system and each display device,
+- * running any necessary functionality tests, and storing information
+- * out to the registry depending on the test results.
+- *
+- * In general, startup tests should only have to execute once;
+- * they will run the first time we initialize ourselves on a
+- * particular display device.  After that, we should just be able
+- * to check the registry to see what the results of those tests were
+- * and enable/disable DirectX support appropriately.  Startup tests
+- * may be re-run in situations where we cannot check the display
+- * device information (it may fail on some OSs) or when the
+- * display device we start up on is different from the devices
+- * we have tested on before (eg, the user has switched video cards
+- * or maybe display depths).  The user may also force the tests to be re-run
+- * by using the -Dsun.java2d.accelReset flag.
+- */
+-
+-
+-WCHAR                       *j2dAccelKey;       // Name of java2d root key
+-WCHAR                       *j2dAccelDriverKey; // Name of j2d per-device key
+-int                         dxAcceleration;     // dx acceleration ability
+-                                                // according to the Registry
+-HINSTANCE                   hLibDDraw = NULL;   // DDraw Library handle
+-extern DDrawObjectStruct    **ddInstance;
+-extern CriticalSection      ddInstanceLock;
+-extern int                  maxDDDevices;
+-extern int                  currNumDevices;
+-extern char                 *javaVersion;
+-
+-
+-BOOL CheckDDCreationCaps(DDrawObjectStruct *tmpDdInstance,
+-                         DxCapabilities *dxCaps)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "CheckDDCreationCaps");
+-    if (dxCaps == NULL) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "CheckDDCreationCaps: null dxCaps (new monitor?)");
+-        return FALSE;
+-    }
+-    // If we have not yet tested this configuration, test it now
+-    if (dxCaps->GetDdSurfaceCreationCap() == J2D_ACCEL_UNVERIFIED) {
+-        // First, create a non-d3d offscreen surface
+-        dxCaps->SetDdSurfaceCreationCap(J2D_ACCEL_TESTING);
+-        DDrawSurface *lpSurface =
+-            tmpDdInstance->ddObject->CreateDDOffScreenSurface(1, 1,
+-            32, TR_OPAQUE, DDSCAPS_VIDEOMEMORY);
+-        if (!lpSurface) {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "CheckDDCreationCaps: failed to create basic "\
+-                          "ddraw surface");
+-            // problems creating basic ddraw surface - log it and return FALSE
+-            dxCaps->SetDdSurfaceCreationCap(J2D_ACCEL_FAILURE);
+-            return FALSE;
+-        }
+-        // Success; log it and continue
+-        dxCaps->SetDdSurfaceCreationCap(J2D_ACCEL_SUCCESS);
+-        delete lpSurface;
+-    } else if (dxCaps->GetDdSurfaceCreationCap() != J2D_ACCEL_SUCCESS) {
+-        // we have tested and failed previously; return FALSE
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "CheckDDCreationCaps: previous surface creation "\
+-                      "failure detected");
+-        return FALSE;
+-    }
+-    return TRUE;
+-}
+-/**
+- * Called from AwtWin32GraphicsEnv's initScreens() after it initializes
+- * all of the display devices.  This function initializes the global
+- * DirectX state as well as the per-device DirectX objects.  This process
+- * includes:
+- *   - Checking native/Java flags to see what the user wants to manually
+- *   enable/disable
+- *   - Checking the registry to see if DirectX should be globally disabled
+- *   - Enumerating the display devices (this returns unique string IDs
+- *   for each display device)
+- *   - Checking the registry for each device to see what we have stored
+- *   there for this device.
+- *   - Enumerate the ddraw devices
+- *   - For each ddraw device, match it up with the associated device from
+- *   EnumDisplayDevices.
+- *   - If no registry entries exist, then run a series of tests using
+- *   ddraw and d3d, storing the results in the registry for this device ID
+- *   (and possibly color depth - test results may be bpp-specific)
+- *   - based on the results of the registry storage or the tests, enable
+- *   and disable various ddraw/d3d capabilities as appropriate.
+- */
+-void InitDirectX()
+-{
+-
+-    J2dRlsTraceLn(J2D_TRACE_INFO, "InitDirectX");
+-    // Check registry state for all display devices
+-    CheckRegistry();
+-
+-    // Need to prevent multiple initializations of the DX objects/primaries.
+-    // CriticalSection ensures that this initialization will only happen once,
+-    // even if multiple threads call into this function at startup time.
+-    static CriticalSection initLock;
+-    initLock.Enter();
+-    static bool dxInitialized = false;
+-    if (dxInitialized) {
+-        initLock.Leave();
+-        return;
+-    }
+-    dxInitialized = true;
+-    initLock.Leave();
+-
+-    // Check to make sure ddraw is not disabled globally
+-    if (useDD) {
+-        if (dxAcceleration == J2D_ACCEL_UNVERIFIED) {
+-            RegistryKey::SetIntValue(j2dAccelKey, J2D_ACCEL_DX_NAME,
+-                                     J2D_ACCEL_TESTING, TRUE);
+-        }
+-        hLibDDraw = ::LoadLibrary(TEXT("ddraw.dll"));
+-        if (!hLibDDraw) {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "InitDirectX: Could not load library");
+-            SetDDEnabledFlag(NULL, FALSE);
+-            if (dxAcceleration == J2D_ACCEL_UNVERIFIED) {
+-                RegistryKey::SetIntValue(j2dAccelKey, J2D_ACCEL_DX_NAME,
+-                                         J2D_ACCEL_FAILURE, TRUE);
+-            }
+-            return;
+-        }
+-        if (dxAcceleration == J2D_ACCEL_UNVERIFIED) {
+-            RegistryKey::SetIntValue(j2dAccelKey, J2D_ACCEL_DX_NAME,
+-                                     J2D_ACCEL_SUCCESS, TRUE);
+-        }
+-        maxDDDevices = 1;
+-        ddInstance = (DDrawObjectStruct**)safe_Malloc(maxDDDevices *
+-            sizeof(DDrawObjectStruct*));
+-        memset(ddInstance, NULL, maxDDDevices * sizeof(DDrawObjectStruct*));
+-        if (!DDCreateObject()) {
+-            J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                          "InitDirectX: Could not create ddraw object");
+-            SetDDEnabledFlag(NULL, FALSE);
+-        }
+-    }
+-
+-    if (checkRegistry) {
+-        // diagnostic purposes: iterate through all of the registry
+-        // settings we have just checked or set and print them out to
+-        // the console
+-        printf("Registry Settings:\n");
+-        RegistryKey::PrintValue(j2dAccelKey, J2D_ACCEL_DX_NAME,
+-                                L"  DxAcceleration");
+-        // Now check the registry entries for all display devices on the system
+-        int deviceNum = 0;
+-        _DISPLAY_DEVICE displayDevice;
+-        displayDevice.dwSize = sizeof(displayDevice);
+-        while (EnumDisplayDevices(NULL, deviceNum, & displayDevice, 0) &&
+-               deviceNum < 20) // avoid infinite loop with buggy drivers
+-        {
+-            DxCapabilities caps;
+-            if (displayDevice.dwFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) {
+-                // We only care about actual display devices.  Devices without
+-                // this flag could be virtual devices such as NetMeeting
+-                Devices::InstanceAccess devices;
+-                AwtWin32GraphicsDevice **devArray = devices->GetRawArray();
+-                int numScreens = devices->GetNumDevices();
+-                for (int i = 0; i < numScreens; ++i) {
+-                    MONITOR_INFO_EXTENDED *pMonInfo =
+-                        (PMONITOR_INFO_EXTENDED) devArray[i]->GetMonitorInfo();
+-                    if (wcscmp(pMonInfo->strDevice,
+-                               displayDevice.strDevName) == 0) {
+-                        // this GraphicsDevice matches this DisplayDevice; check
+-                        // the bit depth and grab the appropriate values from
+-                        // the registry
+-                        int bitDepth = devArray[i]->GetBitDepth();
+-                        WCHAR driverKeyName[2048];
+-                        WCHAR fullKeyName[2048];
+-                        GetDeviceKeyName(&displayDevice, driverKeyName);
+-                        swprintf(fullKeyName, L"%s%s\\%d", j2dAccelDriverKey,
+-                                 driverKeyName, bitDepth);
+-                        printf("  Device\\Depth: %S\\%d\n",
+-                               driverKeyName, bitDepth);
+-                        caps.Initialize(fullKeyName);
+-                        caps.PrintCaps();
+-                    }
+-                }
+-            }
+-            deviceNum++;
+-        }
+-    }
+-}
+-
+-/**
+- * Utility function that derives a unique name for this display
+- * device.  We do this by combining the "name" and "string"
+- * fields from the displayDevice structure.  Note that we
+- * remove '\' characters from the dev name; since we're going
+- * to use this as a registry key, we do not want all those '\'
+- * characters to create extra registry key levels.
+- */
+-void GetDeviceKeyName(_DISPLAY_DEVICE *displayDevice, WCHAR *devName)
+-{
+-    WCHAR *strDevName = displayDevice->strDevName;
+-    int devNameIndex = 0;
+-    for (size_t i = 0; i < wcslen(strDevName); ++i) {
+-        if (strDevName[i] != L'\\') {
+-            devName[devNameIndex++] = strDevName[i];
+-        }
+-    }
+-    devName[devNameIndex++] = L' ';
+-    devName[devNameIndex] = L'\0';
+-    wcscat(devName, displayDevice->strDevString);
+-}
+-
+-
+-/**
+- * CheckRegistry first queries the registry for whether DirectX
+- * should be disabled globally.  Then it enumerates the current
+- * display devices and queries the registry for each unique display
+- * device, putting the resulting values in the AwtWin32GraphicsDevice
+- * array for each appropriate display device.
+- */
+-void CheckRegistry()
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "CheckRegistry");
+-    if (accelReset) {
+-        RegistryKey::DeleteKey(j2dAccelKey);
+-    }
+-    dxAcceleration = RegistryKey::GetIntValue(j2dAccelKey, J2D_ACCEL_DX_NAME);
+-    if (dxAcceleration == J2D_ACCEL_TESTING ||
+-        dxAcceleration == J2D_ACCEL_FAILURE)
+-    {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "CheckRegistry: previous ddraw initialization failure"\
+-                      " detected, ddraw is disabled");
+-        // Disable ddraw if previous testing either crashed or failed
+-        SetDDEnabledFlag(NULL, FALSE);
+-        // Without DirectX, there is no point to the rest of the registry checks
+-        // so just return
+-        return;
+-    }
+-
+-    // First, get the list of current display devices
+-    int deviceNum = 0;  // all display devices (virtual and not)
+-    int numDesktopDevices = 0;  // actual display devices
+-    _DISPLAY_DEVICE displayDevice;
+-    displayDevice.dwSize = sizeof(displayDevice);
+-    _DISPLAY_DEVICE displayDevices[20];
+-    while (deviceNum < 20 && // avoid infinite loop with buggy drivers
+-           EnumDisplayDevices(NULL, deviceNum, &displayDevice, 0))
+-    {
+-        if (displayDevice.dwFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP)
+-        {
+-            // We only care about actual display devices.  Devices without
+-            // this flag could be virtual devices such as NetMeeting
+-            J2dRlsTraceLn2(J2D_TRACE_VERBOSE,
+-                           "CheckRegistry: Found Display Device %d: %S",
+-                           deviceNum, displayDevice.strDevString);
+-            displayDevices[numDesktopDevices] = displayDevice;
+-            ++numDesktopDevices;
+-        }
+-        deviceNum++;
+-    }
+-    // Workaround for platforms that do not have the EnumDisplayDevices function
+-    // (i.e., NT4): just set up a single device that has the display name that
+-    // has already been assigned to the first (and only) graphics device.
+-    if (deviceNum == 0) {
+-        Devices::InstanceAccess devices;
+-        MONITOR_INFO_EXTENDED *pMonInfo =
+-            (PMONITOR_INFO_EXTENDED) devices->GetDevice(0)->GetMonitorInfo();
+-        wcscpy(displayDevices[0].strDevName, pMonInfo->strDevice);
+-        wcscpy(displayDevices[0].strDevString, L"DefaultDriver");
+-        J2dRlsTraceLn(J2D_TRACE_VERBOSE,
+-                      "CheckRegistry: Single Default Display Device detected");
+-        numDesktopDevices++;
+-    }
+-
+-    // Now, check the current display devices against the list stored
+-    // in the registry already.
+-    // First, we get the current list of devices in the registry
+-    WCHAR subKeyNames[20][1024];
+-    int numSubKeys = 0;
+-    {
+-        RegistryKey hKey(j2dAccelDriverKey, KEY_ALL_ACCESS);
+-        DWORD buffSize = 1024;
+-        DWORD ret;
+-        while (numSubKeys < 20 &&  // same limit as display devices above
+-               ((ret = hKey.EnumerateSubKeys(numSubKeys, subKeyNames[numSubKeys],
+-                                            &buffSize)) ==
+-                ERROR_SUCCESS))
+-        {
+-            ++numSubKeys;
+-            buffSize = 1024;
+-        }
+-    }
+-    // Now, compare the display devices to the registry display devices
+-    BOOL devicesDifferent = FALSE;
+-    // Check that each display device is in the registry
+-    // Do this by checking each physical display device to see if it
+-    // is also in the registry.  If it is, do the same for the rest of
+-    // the physical devices.  If any device is not in the registry,
+-    // then there is a mis-match and we break out of the loop and
+-    // reset the registry.
+-    for (int i = 0; i < numDesktopDevices; ++i) {
+-        // Assume the device is not in the registry until proven otherwise
+-        devicesDifferent = TRUE;
+-        WCHAR driverName[2048];
+-        // Key name consists of (driver string) (driver name)
+-        // but we must remove the "\" characters from the driver
+-        // name to avoid creating too many levels
+-        GetDeviceKeyName(&(displayDevices[i]), driverName);
+-        for (int j = 0; j < numDesktopDevices; ++j) {
+-            if (wcscmp(driverName,
+-                       subKeyNames[j]) == 0)
+-            {
+-                // Found a match for this device; time to move on
+-                devicesDifferent = FALSE;
+-                break;
+-            }
+-        }
+-        if (devicesDifferent) {
+-            J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                        "CheckRegistry: Display device %S not in registry",
+-                        driverName);
+-            break;
+-        }
+-    }
+-    // Something was different in the runtime versus the registry; delete
+-    // the registry entries to force testing and writing the results to
+-    // the registry
+-    if (devicesDifferent) {
+-        for (int i = 0; i < numSubKeys; ++i) {
+-            WCHAR driverKeyName[2048];
+-            swprintf(driverKeyName, L"%s%s", j2dAccelDriverKey,
+-                     subKeyNames[i]);
+-            J2dTraceLn1(J2D_TRACE_VERBOSE,
+-                        "CheckRegistry: Deleting registry key: %S",
+-                        driverKeyName);
+-            RegistryKey::DeleteKey(driverKeyName);
+-        }
+-    }
+-
+-    // Now that we have the display devices and the registry in a good
+-    // start state, get or initialize the dx capabilities in the registry
+-    // for each display device
+-    for (deviceNum = 0; deviceNum < numDesktopDevices; ++deviceNum) {
+-        Devices::InstanceAccess devices;
+-        AwtWin32GraphicsDevice **devArray = devices->GetRawArray();
+-        int numScreens = devices->GetNumDevices();
+-        for (int i = 0; i < numScreens; ++i) {
+-            MONITOR_INFO_EXTENDED *pMonInfo =
+-                (PMONITOR_INFO_EXTENDED)devArray[i]->GetMonitorInfo();
+-            if (wcscmp(pMonInfo->strDevice,
+-                       displayDevices[deviceNum].strDevName) == 0)
+-            {
+-                // this GraphicsDevice matches this DisplayDevice; check
+-                // the bit depth and grab the appropriate values from
+-                // the registry
+-                int bitDepth = devArray[i]->GetBitDepth();
+-                WCHAR driverKeyName[2048];
+-                WCHAR fullKeyName[2048];
+-                // Key name consists of (driver string) (driver name)
+-                // but we must remove the "\" characters from the driver
+-                // name to avoid creating too many levels
+-                GetDeviceKeyName(&(displayDevices[i]), driverKeyName);
+-                swprintf(fullKeyName, L"%s%s\\%d", j2dAccelDriverKey,
+-                         driverKeyName, bitDepth);
+-                // - query registry for key with strDevString\\depth
+-                devArray[i]->GetDxCaps()->Initialize(fullKeyName);
+-            }
+-        }
+-    }
+-}
+-
+-
+-BOOL DDSetupDevice(DDrawObjectStruct *tmpDdInstance, DxCapabilities *dxCaps)
+-{
+-    J2dRlsTraceLn(J2D_TRACE_INFO, "DDSetupDevice");
+-    BOOL surfaceBasics = CheckDDCreationCaps(tmpDdInstance, dxCaps);
+-    if (!surfaceBasics) {
+-        goto FAILURE;
+-    }
+-    // create primary surface. There is one of these per ddraw object.
+-    // A D3DContext will be attempted to be created during the creation
+-    // of the primary surface.
+-    tmpDdInstance->primary = tmpDdInstance->ddObject->CreateDDPrimarySurface(
+-        (DWORD)tmpDdInstance->backBufferCount);
+-    if (!tmpDdInstance->primary) {
+-        goto FAILURE;
+-    }
+-    J2dRlsTraceLn(J2D_TRACE_VERBOSE,
+-                  "DDSetupDevice: successfully created primary surface");
+-    if (!tmpDdInstance->capsSet) {
+-        DDCAPS caps;
+-        tmpDdInstance->ddObject->GetDDCaps(&caps);
+-        tmpDdInstance->canBlt = (caps.dwCaps & DDCAPS_BLT);
+-        BOOL canCreateOffscreen = tmpDdInstance->canBlt &&
+-            (caps.dwVidMemTotal > 0);
+-        // Only register offscreen creation ok if we can Blt and if there
+-        // is available video memory.  Otherwise it
+-        // is useless functionality.  The Barco systems apparently allow
+-        // offscreen creation but do not allow hardware Blt's
+-        if ((caps.dwCaps & DDCAPS_NOHARDWARE) || !canCreateOffscreen) {
+-            AwtWin32GraphicsDevice::DisableOffscreenAccelerationForDevice(
+-                tmpDdInstance->hMonitor);
+-         if (caps.dwCaps & DDCAPS_NOHARDWARE) {
+-                // Does not have basic functionality we need; release
+-                // ddraw instance and return FALSE for this device.
+-                J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                              "DDSetupDevice: Disabling ddraw on "\
+-                              "device: no hw support");
+-                goto FAILURE;
+-            }
+-        }
+-        tmpDdInstance->capsSet = TRUE;
+-    }
+-    // Do NOT create a clipper in full-screen mode
+-    if (tmpDdInstance->hwndFullScreen == NULL) {
+-        if (!tmpDdInstance->clipper) {
+-            // May have already created a clipper
+-            tmpDdInstance->clipper = tmpDdInstance->ddObject->CreateDDClipper();
+-        }
+-        if (tmpDdInstance->clipper != NULL) {
+-            if (tmpDdInstance->primary->SetClipper(tmpDdInstance->clipper)
+-                != DD_OK)
+-            {
+-                goto FAILURE;
+-            }
+-        } else {
+-            goto FAILURE;
+-        }
+-    }
+-    J2dRlsTraceLn(J2D_TRACE_VERBOSE,
+-                  "DDSetupDevice: successfully setup ddraw device");
+-    return TRUE;
+-
+-FAILURE:
+-    J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                  "DDSetupDevice: Failed to setup ddraw device");
+-    AwtWin32GraphicsDevice::DisableOffscreenAccelerationForDevice(
+-        tmpDdInstance->hMonitor);
+-    ddInstanceLock.Enter();
+-    // Do not release the ddInstance structure here, just flag it
+-    // as having problems; other threads may currently be using a
+-    // reference to the structure and we cannot release it out from
+-    // under them.  It will be released sometime later
+-    // when all DD resources are released.
+-    tmpDdInstance->accelerated = FALSE;
+-    ddInstanceLock.Leave();
+-    return FALSE;
+-}
+-
+-DDrawObjectStruct *CreateDevice(GUID *lpGUID, HMONITOR hMonitor)
+-{
+-    J2dRlsTraceLn2(J2D_TRACE_INFO, "CreateDevice: lpGUID=0x%x hMon=0x%x",
+-                   lpGUID, hMonitor);
+-    DDrawObjectStruct *tmpDdInstance =
+-        (DDrawObjectStruct*)safe_Calloc(1, sizeof(DDrawObjectStruct));
+-    memset(tmpDdInstance, NULL, sizeof(DDrawObjectStruct));
+-    tmpDdInstance->valid = TRUE;
+-    tmpDdInstance->accelerated = TRUE;
+-    tmpDdInstance->capsSet = FALSE;
+-    tmpDdInstance->hMonitor = hMonitor;
+-    tmpDdInstance->hwndFullScreen = NULL;
+-    tmpDdInstance->backBufferCount = 0;
+-    tmpDdInstance->syncSurface = NULL;
+-    tmpDdInstance->context = CONTEXT_NORMAL;
+-    // Create ddraw object
+-    DxCapabilities *dxCaps =
+-        AwtWin32GraphicsDevice::GetDxCapsForDevice(hMonitor);
+-    if (dxCaps->GetDdCreationCap() == J2D_ACCEL_UNVERIFIED) {
+-        dxCaps->SetDdCreationCap(J2D_ACCEL_TESTING);
+-    } else if (dxCaps->GetDdCreationCap() != J2D_ACCEL_SUCCESS) {
+-        J2dRlsTraceLn(J2D_TRACE_ERROR,
+-                      "CreateDevice: previous failure detected, "\
+-                      "no ddraw device created");
+-        free(tmpDdInstance);
+-        return NULL;
+-    }
+-    tmpDdInstance->ddObject = DDraw::CreateDDrawObject(lpGUID, hMonitor);
+-    if (dxCaps->GetDdCreationCap() == J2D_ACCEL_TESTING) {
+-        dxCaps->SetDdCreationCap(tmpDdInstance->ddObject ? J2D_ACCEL_SUCCESS :
+-                                                           J2D_ACCEL_FAILURE);
+-    }
+-    if (!tmpDdInstance->ddObject) {
+-        // REMIND: might want to shut down ddraw (useDD == FALSE?)
+-        // if this error occurs
+-        free(tmpDdInstance);
+-        return NULL;
+-    }
+-    if (DDSetupDevice(tmpDdInstance, dxCaps)) {
+-        return tmpDdInstance;
+-    } else {
+-        free(tmpDdInstance);
+-        return NULL;
+-    }
+-}
+-
+-BOOL CALLBACK EnumDeviceCallback(GUID FAR* lpGUID, LPSTR szName, LPSTR szDevice,
+-                                 LPVOID lParam, HMONITOR hMonitor)
+-{
+-    J2dTraceLn(J2D_TRACE_INFO, "EnumDeviceCallback");
+-    if (currNumDevices == maxDDDevices) {
+-        maxDDDevices *= 2;
+-        DDrawObjectStruct **tmpDDDevices =
+-            (DDrawObjectStruct**)safe_Malloc(maxDDDevices *
+-            sizeof(DDrawObjectStruct*));
+-        memset(tmpDDDevices, NULL, maxDDDevices * sizeof(DDrawObjectStruct*));
+-        for (int i = 0; i < currNumDevices; ++i) {
+-            tmpDDDevices[i] = ddInstance[i];
+-        }
+-        DDrawObjectStruct **oldDDDevices = ddInstance;
+-        ddInstance = tmpDDDevices;
+-        free(oldDDDevices);
+-    }
+-    if (hMonitor != NULL) {
+-        DDrawObjectStruct    *tmpDdInstance;
+-        if (ddInstance[currNumDevices] != NULL) {
+-            DDFreeSyncSurface(ddInstance[currNumDevices]);
+-            free(ddInstance[currNumDevices]);
+-        }
+-        tmpDdInstance = CreateDevice(lpGUID, hMonitor);
+-        ddInstance[currNumDevices] = tmpDdInstance;
+-        J2dTraceLn2(J2D_TRACE_VERBOSE,
+-                    "EnumDeviceCallback: ddInstance[%d]=0x%x",
+-                    currNumDevices, tmpDdInstance);
+-        // Increment currNumDevices on success or failure; a null device
+-        // is perfectly fine; we may have an unaccelerated device
+-        // in the midst of our multimon configuration
+-        currNumDevices++;
+-    }
+-    return TRUE;
+-}
+-
+-typedef HRESULT (WINAPI *FnDDEnumerateFunc)(LPDDENUMCALLBACK cb,
+-    LPVOID lpContext);
+-
+-/**
+- * Create the ddraw object and the global
+- * ddInstance structure.  Note that we do not take the ddInstanceLock
+- * here; we assume that our callers are taking that lock for us.
+- */
+-BOOL DDCreateObject() {
+-    LPDIRECTDRAWENUMERATEEXA lpDDEnum;
+-
+-    J2dTraceLn(J2D_TRACE_INFO, "DDCreateObject");
+-
+-    currNumDevices = 0;
+-    // Note that we are hardcoding this call to the ANSI version and not
+-    // using the ANIS-or-UNICODE macro name.  This is because there is
+-    // apparently a problem with the UNICODE function name not being
+-    // implemented under the win98 MSLU.  So we just use the ANSI version
+-    // on all flavors of Windows instead.
+-    lpDDEnum = (LPDIRECTDRAWENUMERATEEXA)
+-        GetProcAddress(hLibDDraw, "DirectDrawEnumerateExA");
+-    if (lpDDEnum) {
+-        HRESULT ddResult = (lpDDEnum)(EnumDeviceCallback,
+-            NULL, DDENUM_ATTACHEDSECONDARYDEVICES);
+-        if (ddResult != DD_OK) {
+-            DebugPrintDirectDrawError(ddResult,
+-                 "DDCreateObject: EnumDeviceCallback failed");
+-        }
+-    }
+-    if (currNumDevices == 0) {
+-        // Either there was no ddEnumEx function or there was a problem during
+-        // enumeration; just create a device on the primary.
+-        ddInstance[currNumDevices++] = CreateDevice(NULL, NULL);
+-    }
+-    return TRUE;
+-}
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/java2d/windows/dxInit.h
+--- openjdk/jdk/src/windows/native/sun/java2d/windows/dxInit.h	Tue Feb 01 19:38:05 2011 +0000
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,58 +0,0 @@
+-/*
+- * Copyright (c) 2003, 2005, 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.  Oracle designates this
+- * particular file as subject to the "Classpath" exception as provided
+- * by Oracle in the LICENSE file that accompanied this code.
+- *
+- * 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.
+- */
+-
+-#ifndef DXINIT_H
+-#define DXINIT_H
+-
+-#include "Win32SurfaceData.h"
+-#include "Trace.h"
+-#include "awt_MMStub.h"
+-#include "dxCapabilities.h"
+-
+-// Registry definitions: these values are used to determine whether
+-// acceleration components are untested, working, or broken, depending
+-// on the results of testing
+-#define J2D_ACCEL_KEY_ROOT L"Software\\JavaSoft\\Java2D\\"
+-#define J2D_ACCEL_DRIVER_SUBKEY L"Drivers\\"
+-#define J2D_ACCEL_DX_NAME L"DXAcceleration"
+-
+-void    InitDirectX();
+-
+-void    GetDeviceKeyName(_DISPLAY_DEVICE *displayDevice, WCHAR *devName);
+-
+-void    CheckFlags();
+-
+-void    CheckRegistry();
+-
+-BOOL    DDSetupDevice(DDrawObjectStruct *tmpDdInstance, DxCapabilities *dxCaps);
+-
+-DDrawObjectStruct *CreateDevice(GUID *lpGUID, HMONITOR hMonitor);
+-
+-BOOL CALLBACK EnumDeviceCallback(GUID FAR* lpGUID, LPSTR szName, LPSTR szDevice,
+-                                 LPVOID lParam, HMONITOR hMonitor);
+-
+-BOOL    DDCreateObject();
+-
+-#endif DXINIT_H
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/Devices.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/Devices.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/Devices.cpp	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2001, 2008, 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
+@@ -84,6 +84,7 @@
+ #include "Devices.h"
+ #include "Trace.h"
+ #include "awt_Multimon.h"
++#include "D3DPipelineManager.h"
+ 
+ Devices* Devices::theInstance = NULL;
+ CriticalSection Devices::arrayLock;
+@@ -133,13 +134,12 @@
+     AwtWin32GraphicsDevice** rawDevices = newDevices->GetRawArray();
+     int i;
+     for (i = 0; i < numScreens; ++i) {
++        J2dTraceLn2(J2D_TRACE_VERBOSE, "  hmon[%d]=0x%x", i, monHds[i]);
+         rawDevices[i] = new AwtWin32GraphicsDevice(i, monHds[i], newDevices);
+     }
+     for (i = 0; i < numScreens; ++i) {
+         rawDevices[i]->Initialize();
+     }
+-    free(monHds);
+-
+     {
+         CriticalSection::Lock l(arrayLock);
+ 
+@@ -161,12 +161,14 @@
+                             "Devices::UpdateInstance: device removed: %d", i);
+                 oldDevices->GetDevice(i)->Invalidate(env);
+             }
+-
+             // Now that we have a new array in place, remove this (possibly the
+             // last) reference to the old instance.
+             oldDevices->Release();
+         }
++        D3DPipelineManager::HandleAdaptersChange((HMONITOR*)monHds,
++                                                 theInstance->GetNumDevices());
+     }
++    free(monHds);
+ 
+     return TRUE;
+ }
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt.h
+--- openjdk/jdk/src/windows/native/sun/windows/awt.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -144,6 +144,7 @@
+ #endif
+ #define IS_NT      (IS_WIN32 && !(::GetVersion() & 0x80000000))
+ #define IS_WIN2000 (IS_NT && LOBYTE(LOWORD(::GetVersion())) >= 5)
++#define IS_WIN2003 (IS_NT && LOBYTE(LOWORD(::GetVersion())) == 5 && HIBYTE(LOWORD(::GetVersion())) >= 2)
+ #define IS_WINXP   (IS_NT && (IS_WIN2000 && HIBYTE(LOWORD(::GetVersion())) >= 1) || LOBYTE(LOWORD(::GetVersion())) > 5)
+ #define IS_WINVISTA (IS_NT && LOBYTE(LOWORD(::GetVersion())) >= 6)
+ #define IS_WIN32S  (IS_WIN32 && !IS_NT && LOBYTE(LOWORD(::GetVersion())) < 4)
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -45,7 +45,6 @@
  #include "awt_Unicode.h"
  #include "awt_Window.h"
@@ -41791,7 +54697,7 @@
      env->DeleteLocalRef(target);
      return res;
  }
-@@ -1915,25 +1922,6 @@
+@@ -1934,25 +1941,6 @@
                                                    *((SIZE *)lParam));
            mr = mrConsume;
            break;
@@ -41817,7 +54723,7 @@
        case WM_UNDOCUMENTED_CLICKMENUBAR:
        {
            if (::IsWindow(AwtWindow::GetModalBlocker(GetHWnd()))) {
-@@ -2196,7 +2184,8 @@
+@@ -2215,7 +2203,8 @@
          }
      }
  
@@ -41827,7 +54733,7 @@
  
      if (owner == NULL) {
          ::SetFocus(hwnd);
-@@ -4749,31 +4738,6 @@
+@@ -4768,31 +4757,6 @@
      return pixelArray;
  }
  
@@ -41859,7 +54765,7 @@
  void *
  AwtComponent::GetNativeFocusOwner() {
      JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-@@ -5318,7 +5282,8 @@
+@@ -5337,7 +5301,8 @@
      MSG* msg = CreateMessage(message, wParam, MAKELPARAM(x, y), x, y);
      // If the window is not focusable but if this is a focusing
      // message we should skip it then and perform our own actions.
@@ -41869,7 +54775,7 @@
          PostHandleEventMessage(msg, TRUE);
      } else {
          delete msg;
-@@ -5830,7 +5795,10 @@
+@@ -5849,7 +5814,10 @@
                  AwtComponent* p = (AwtComponent*)pData;
                  // If the window is not focusable but if this is a focusing
                  // message we should skip it then and perform our own actions.
@@ -41881,7 +54787,7 @@
                      // Create copy for local msg
                      MSG* pCopiedMsg = new MSG;
                      memmove(pCopiedMsg, &msg, sizeof(MSG));
-@@ -6369,6 +6337,46 @@
+@@ -6394,6 +6362,46 @@
      return p->GetHWnd();
  }
  
@@ -41928,9 +54834,9 @@
  JNIEXPORT void JNICALL
  Java_java_awt_Component_initIDs(JNIEnv *env, jclass cls)
  {
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h openjdk/jdk/src/windows/native/sun/windows/awt_Component.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.h	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Component.h
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Component.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1996, 2007, Oracle and/or its affiliates. All rights reserved.
@@ -41978,9 +54884,9 @@
      static void * GetNativeFocusOwner();
      static void * GetNativeFocusedWindow();
      static void   ClearGlobalFocusOwner();
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_DrawingSurface.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1996, 2005, Oracle and/or its affiliates. All rights reserved.
@@ -42128,9 +55034,9 @@
  
      CATCH_BAD_ALLOC_RET(NULL);
  }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_DrawingSurface.h
+--- openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_DrawingSurface.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
@@ -42156,48 +55062,9 @@
  };
  
  /*
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt.h openjdk/jdk/src/windows/native/sun/windows/awt.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt.h	2011-01-08 01:26:50.491202427 +0000
-@@ -144,6 +144,7 @@
- #endif
- #define IS_NT      (IS_WIN32 && !(::GetVersion() & 0x80000000))
- #define IS_WIN2000 (IS_NT && LOBYTE(LOWORD(::GetVersion())) >= 5)
-+#define IS_WIN2003 (IS_NT && LOBYTE(LOWORD(::GetVersion())) == 5 && HIBYTE(LOWORD(::GetVersion())) >= 2)
- #define IS_WINXP   (IS_NT && (IS_WIN2000 && HIBYTE(LOWORD(::GetVersion())) >= 1) || LOBYTE(LOWORD(::GetVersion())) > 5)
- #define IS_WINVISTA (IS_NT && LOBYTE(LOWORD(::GetVersion())) >= 6)
- #define IS_WIN32S  (IS_WIN32 && !IS_NT && LOBYTE(LOWORD(::GetVersion())) < 4)
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awtmsg.h openjdk/jdk/src/windows/native/sun/windows/awtmsg.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awtmsg.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awtmsg.h	2011-01-08 01:26:50.491202427 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1996, 2008, 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
-@@ -252,17 +252,6 @@
-     WM_AWT_HIDECURSOR,
-     WM_AWT_CREATE_PRINTED_PIXELS,
- 
--    /* Synchronize ddraw fullscreen events on Windows event thread */
--    WM_AWT_DD_CREATE_SURFACE,
--    WM_AWT_DD_ENTER_FULLSCREEN,
--    WM_AWT_DD_EXIT_FULLSCREEN,
--    WM_AWT_DD_SET_DISPLAY_MODE,
--    WM_AWT_DD_RESTORE_DISPLAY_MODE,
--
--    /* Synchronize D3D device creation on Windows event thread */
--    WM_AWT_D3D_CREATE_DEVICE,
--    WM_AWT_D3D_RELEASE_DEVICE,
--
-     // Tray messages
-     WM_AWT_TRAY_NOTIFY,
- 
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Toolkit.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Toolkit.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -52,12 +52,13 @@
  #include "CmdIDList.h"
  #include "awt_new.h"
@@ -42343,9 +55210,9 @@
  
      CATCH_BAD_ALLOC;
  }
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -42603,13 +55470,23 @@
 -                "Could not get display mode");
 -            return NULL;
 -        }
--
++    dm.dmSize = sizeof(dm);
++    dm.dmDriverExtra = 0;
+ 
 -        return CreateDisplayMode(env, dm.width,
 -            dm.height, dm.bitDepth, dm.refreshRate);
 -    } else {
 -        DEVMODE dm;
 -        LPTSTR pName = NULL;
--
++    _DISPLAY_DEVICE displayDevice;
++    if (GetAttachedDisplayDevice(screen, &displayDevice)) {
++        pName = displayDevice.strDevName;
++    }
++    if (!EnumDisplaySettings(pName, ENUM_CURRENT_SETTINGS, &dm))
++    {
++        return NULL;
++    }
+ 
 -        dm.dmSize = sizeof(dm);
 -        dm.dmDriverExtra = 0;
 -
@@ -42621,20 +55498,10 @@
 -        {
 -            return NULL;
 -        }
-+    dm.dmSize = sizeof(dm);
-+    dm.dmDriverExtra = 0;
- 
+-
 -        return CreateDisplayMode(env, dm.dmPelsWidth,
 -            dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency);
-+    _DISPLAY_DEVICE displayDevice;
-+    if (GetAttachedDisplayDevice(screen, &displayDevice)) {
-+        pName = displayDevice.strDevName;
-     }
-+    if (!EnumDisplaySettings(pName, ENUM_CURRENT_SETTINGS, &dm))
-+    {
-+        return NULL;
-+    }
-+
+-    }
 +    return CreateDisplayMode(env, dm.dmPelsWidth,
 +        dm.dmPelsHeight, dm.dmBitsPerPel, dm.dmDisplayFrequency);
  
@@ -42706,7 +55573,15 @@
 -        dm.dmDisplayFrequency = refreshRate;
 -        dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT |
 -            DM_BITSPERPEL | DM_DISPLAYFREQUENCY;
--
++    dm.dmSize = sizeof(dm);
++    dm.dmDriverExtra = 0;
++    dm.dmPelsWidth = width;
++    dm.dmPelsHeight = height;
++    dm.dmBitsPerPel = bitDepth;
++    dm.dmDisplayFrequency = refreshRate;
++    dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT |
++        DM_BITSPERPEL | DM_DISPLAYFREQUENCY;
+ 
 -        // ChangeDisplaySettings works only on the primary screen.
 -        // ChangeDisplaySettingsEx is not available on NT,
 -        // so it'd be nice not to break it if we can help it.
@@ -42730,15 +55605,6 @@
 -            ((*fn_change_display_settings_ex)
 -                 (displayDevice.strDevName, &dm, NULL, CDS_FULLSCREEN, NULL) !=
 -              DISP_CHANGE_SUCCESSFUL))
-+    dm.dmSize = sizeof(dm);
-+    dm.dmDriverExtra = 0;
-+    dm.dmPelsWidth = width;
-+    dm.dmPelsHeight = height;
-+    dm.dmBitsPerPel = bitDepth;
-+    dm.dmDisplayFrequency = refreshRate;
-+    dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT |
-+        DM_BITSPERPEL | DM_DISPLAYFREQUENCY;
-+
 +    // ChangeDisplaySettings works only on the primary screen.
 +    // ChangeDisplaySettingsEx is not available on NT,
 +    // so it'd be nice not to break it if we can help it.
@@ -42807,7 +55673,10 @@
 -    HMONITOR monitor = (HMONITOR)AwtWin32GraphicsDevice::GetMonitor(screen);
 -    if (DeviceUseDDraw(monitor)) {
 -        EnumDisplayModeParam param(env, arrayList);
--
++    DEVMODE dm;
++    LPTSTR pName = NULL;
++    _DISPLAY_DEVICE displayDevice;
+ 
 -        if (!DDEnumDisplayModes(monitor, NULL, enumDMCallback, &param)) {
 -            JNU_ThrowInternalError(env,
 -                "Could not get display modes");
@@ -42817,23 +55686,20 @@
 -        DEVMODE dm;
 -        LPTSTR pName = NULL;
 -        _DISPLAY_DEVICE displayDevice;
-+    DEVMODE dm;
-+    LPTSTR pName = NULL;
-+    _DISPLAY_DEVICE displayDevice;
- 
+ 
++    if (GetAttachedDisplayDevice(screen, &displayDevice)) {
++        pName = displayDevice.strDevName;
++    }
  
 -        if (GetAttachedDisplayDevice(screen, &displayDevice)) {
 -            pName = displayDevice.strDevName;
 -        }
-+    if (GetAttachedDisplayDevice(screen, &displayDevice)) {
-+        pName = displayDevice.strDevName;
-+    }
++    dm.dmSize = sizeof(dm);
++    dm.dmDriverExtra = 0;
  
 -        dm.dmSize = sizeof(dm);
 -        dm.dmDriverExtra = 0;
-+    dm.dmSize = sizeof(dm);
-+    dm.dmDriverExtra = 0;
- 
+-
 -        BOOL bContinue = TRUE;
 -        for (int i = 0; bContinue; i++) {
 -            bContinue = EnumDisplaySettings(pName, i, &dm);
@@ -42905,9 +55771,9 @@
 -    return DDGetAvailableMemory(
 -        (HMONITOR)devices->GetDevice(screen)->GetMonitor());
 -}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Win32GraphicsDevice.h
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -42955,9 +55821,9 @@
  };
  
  #endif AWT_WIN32GRAPHICSDEVICE_H
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -1,5 +1,5 @@
  /*
 - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
@@ -43103,9 +55969,9 @@
 +{
 +    return IS_WINVISTA;
 +}
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Window.cpp
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.cpp	Fri Feb 04 16:32:49 2011 +0000
 @@ -33,7 +33,6 @@
  #include "awt_Toolkit.h"
  #include "awt_Window.h"
@@ -43187,9 +56053,9 @@
  }
  
  BOOL CALLBACK InvalidateChildRect(HWND hWnd, LPARAM)
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h openjdk/jdk/src/windows/native/sun/windows/awt_Window.h
---- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Window.h	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.h	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awt_Window.h
+--- openjdk/jdk/src/windows/native/sun/windows/awt_Window.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Window.h	Fri Feb 04 16:32:49 2011 +0000
 @@ -167,8 +167,6 @@
      virtual MsgRouting WmClose();
      virtual MsgRouting WmDestroy();
@@ -43199,61 +56065,40 @@
      virtual MsgRouting WmGetMinMaxInfo(LPMINMAXINFO lpmmi);
      virtual MsgRouting WmMove(int x, int y);
      virtual MsgRouting WmSize(UINT type, int w, int h);
-diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/Devices.cpp openjdk/jdk/src/windows/native/sun/windows/Devices.cpp
---- openjdk.orig/jdk/src/windows/native/sun/windows/Devices.cpp	2011-01-07 21:33:08.000000000 +0000
-+++ openjdk/jdk/src/windows/native/sun/windows/Devices.cpp	2011-01-08 01:26:50.491202427 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2001, 2008, 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
-@@ -84,6 +84,7 @@
- #include "Devices.h"
- #include "Trace.h"
- #include "awt_Multimon.h"
-+#include "D3DPipelineManager.h"
- 
- Devices* Devices::theInstance = NULL;
- CriticalSection Devices::arrayLock;
-@@ -133,13 +134,12 @@
-     AwtWin32GraphicsDevice** rawDevices = newDevices->GetRawArray();
-     int i;
-     for (i = 0; i < numScreens; ++i) {
-+        J2dTraceLn2(J2D_TRACE_VERBOSE, "  hmon[%d]=0x%x", i, monHds[i]);
-         rawDevices[i] = new AwtWin32GraphicsDevice(i, monHds[i], newDevices);
-     }
-     for (i = 0; i < numScreens; ++i) {
-         rawDevices[i]->Initialize();
-     }
--    free(monHds);
--
-     {
-         CriticalSection::Lock l(arrayLock);
- 
-@@ -161,12 +161,14 @@
-                             "Devices::UpdateInstance: device removed: %d", i);
-                 oldDevices->GetDevice(i)->Invalidate(env);
-             }
--
-             // Now that we have a new array in place, remove this (possibly the
-             // last) reference to the old instance.
-             oldDevices->Release();
-         }
-+        D3DPipelineManager::HandleAdaptersChange((HMONITOR*)monHds,
-+                                                 theInstance->GetNumDevices());
-     }
-+    free(monHds);
- 
-     return TRUE;
- }
-diff -Nru openjdk.orig/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java openjdk/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java
---- openjdk.orig/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java	2011-01-08 01:26:50.491202427 +0000
+diff -r f683aef58585 -r 6cf33f955d7d src/windows/native/sun/windows/awtmsg.h
+--- openjdk/jdk/src/windows/native/sun/windows/awtmsg.h	Tue Feb 01 19:38:05 2011 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awtmsg.h	Fri Feb 04 16:32:49 2011 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 1996, 2008, 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
+@@ -252,17 +252,6 @@
+     WM_AWT_HIDECURSOR,
+     WM_AWT_CREATE_PRINTED_PIXELS,
+ 
+-    /* Synchronize ddraw fullscreen events on Windows event thread */
+-    WM_AWT_DD_CREATE_SURFACE,
+-    WM_AWT_DD_ENTER_FULLSCREEN,
+-    WM_AWT_DD_EXIT_FULLSCREEN,
+-    WM_AWT_DD_SET_DISPLAY_MODE,
+-    WM_AWT_DD_RESTORE_DISPLAY_MODE,
+-
+-    /* Synchronize D3D device creation on Windows event thread */
+-    WM_AWT_D3D_CREATE_DEVICE,
+-    WM_AWT_D3D_RELEASE_DEVICE,
+-
+     // Tray messages
+     WM_AWT_TRAY_NOTIFY,
+ 
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/FullScreen/BufferStrategyExceptionTest/BufferStrategyExceptionTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,134 @@
 +/*
-+ * Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2006, 2008, 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
@@ -43270,9 +56115,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/**
@@ -43386,12 +56231,12 @@
 +    }
 +
 +}
-diff -Nru openjdk.orig/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java openjdk/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java
---- openjdk.orig/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/FullScreen/MultimonFullscreenTest/MultimonFullscreenTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,387 @@
 +/*
-+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2005, 2008, 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
@@ -43408,9 +56253,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/**
@@ -43777,12 +56622,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java openjdk/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java
---- openjdk.orig/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/FullScreen/NoResizeEventOnDMChangeTest/NoResizeEventOnDMChangeTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,216 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -43799,9 +56644,9 @@
 + * 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.
++ * 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
@@ -43997,12 +56842,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java openjdk/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java
---- openjdk.orig/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/FullScreen/SetFSWindow/FSFrame.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/FullScreen/SetFSWindow/FSFrame.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,204 @@
 +/*
-+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2005, 2008, 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
@@ -44019,9 +56864,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -44205,12 +57050,12 @@
 +        frame.dispose();
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java openjdk/jdk/test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java
---- openjdk.orig/jdk/test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,175 @@
-+/*
-+ * Copyright 1998-2008 Sun Microsystems, Inc.  All Rights Reserved.
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,168 @@
++/*
++ * Copyright (c) 2007, 2008, 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
@@ -44227,9 +57072,181 @@
 + * 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.
++ * 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 6614214
++ * @summary Verifies that we enter the fs mode on the correct screen.
++ * Here is how to test: start the test on on a multi-screen system.
++ * Verify that the display is correctly tracked by dragging the frame back
++ * and forth between screens. Then verify that the correct device enters
++ * the full-screen mode - when "Enter FS mode" is pressed it should enter on
++ * the device where the frame is.
++ *
++ * Then change the order of the monitors in the DisplayProperties dialog,
++ * (while the app is running) and see that it still works.
++ * Restart the app, verify again.
++ *
++ * Now change the primary monitor on the system and verify with the
++ * app running, as well as after restarting it that we still enter the
++ * fs mode on the right device.
++ *
++ * @run main/manual/othervm DeviceIdentificationTest
++ * @run main/manual/othervm -Dsun.java2d.noddraw=true DeviceIdentificationTest
++ * @run main/manual/othervm -Dsun.java2d.opengl=True DeviceIdentificationTest
++ */
++
++import java.awt.Button;
++import java.awt.Color;
++import java.awt.Frame;
++import java.awt.Graphics;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsDevice;
++import java.awt.GraphicsEnvironment;
++import java.awt.Panel;
++import java.awt.event.ActionEvent;
++import java.awt.event.ActionListener;
++import java.awt.event.ComponentAdapter;
++import java.awt.event.ComponentEvent;
++import java.awt.event.MouseAdapter;
++import java.awt.event.MouseEvent;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++
++public class DeviceIdentificationTest {
++
++    public static void main(String args[]) {
++        final Frame f = new Frame("DeviceIdentificationTest");
++        f.addWindowListener(new WindowAdapter() {
++            public void windowClosing(WindowEvent e) {
++                f.dispose();
++            }
++        });
++        f.addComponentListener(new ComponentAdapter() {
++            public void componentMoved(ComponentEvent e) {
++                f.setTitle("Currently on: "+
++                           f.getGraphicsConfiguration().getDevice());
++            }
++        });
++
++        Panel p = new Panel();
++        Button b = new Button("Print Current Devices");
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                GraphicsDevice gds[] =
++                    GraphicsEnvironment.getLocalGraphicsEnvironment().
++                        getScreenDevices();
++                int i = 0;
++                System.err.println("--- Devices: ---");
++                for (GraphicsDevice gd : gds) {
++                    System.err.println("Device["+i+"]= "+ gd);
++                    System.err.println("  bounds = "+
++                        gd.getDefaultConfiguration().getBounds());
++                    i++;
++                }
++                System.err.println("-------------------");
++            }
++        });
++        p.add(b);
++
++        b = new Button("Print My Device");
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                GraphicsConfiguration gc = f.getGraphicsConfiguration();
++                GraphicsDevice gd = gc.getDevice();
++                System.err.println("--- My Device ---");
++                System.err.println("Device  = "+ gd);
++                System.err.println(" bounds = "+
++                        gd.getDefaultConfiguration().getBounds());
++            }
++        });
++        p.add(b);
++
++        b = new Button("Create FS Frame on my Device");
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                GraphicsConfiguration gc = f.getGraphicsConfiguration();
++                final GraphicsDevice gd = gc.getDevice();
++                System.err.println("--- Creating FS Frame on Device ---");
++                System.err.println("Device  = "+ gd);
++                System.err.println(" bounds = "+
++                        gd.getDefaultConfiguration().getBounds());
++                final Frame fsf = new Frame("Full-screen Frame on dev"+gd, gc) {
++                    public void paint(Graphics g) {
++                        g.setColor(Color.green);
++                        g.fillRect(0, 0, getWidth(), getHeight());
++                        g.setColor(Color.red);
++                        g.drawString("FS on device: "+gd, 200, 200);
++                        g.drawString("Click to exit Full-screen.", 200, 250);
++                    }
++                };
++                fsf.setUndecorated(true);
++                fsf.addMouseListener(new MouseAdapter() {
++                    public void mouseClicked(MouseEvent e) {
++                        gd.setFullScreenWindow(null);
++                        fsf.dispose();
++                    }
++                });
++                gd.setFullScreenWindow(fsf);
++            }
++        });
++        p.add(b);
++        f.add("North", p);
++
++        p = new Panel();
++        b = new Button("Test Passed");
++        b.setBackground(Color.green);
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                System.out.println("Test Passed");
++                f.dispose();
++            }
++        });
++        p.add(b);
++        b = new Button("Test Failed");
++        b.setBackground(Color.red);
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                System.out.println("Test FAILED");
++                f.dispose();
++                throw new RuntimeException("Test FAILED");
++            }
++        });
++        p.add(b);
++        f.add("South", p);
++
++        f.pack();
++        f.setVisible(true);
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/java/awt/image/MemoryLeakTest/MemoryLeakTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,175 @@
++/*
++ * Copyright (c) 1998, 2008, 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
@@ -44384,320 +57401,9 @@
 +public void componentHidden(ComponentEvent e) {}
 +
 +}
-diff -Nru openjdk.orig/jdk/test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java openjdk/jdk/test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java
---- openjdk.orig/jdk/test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/java/awt/Multiscreen/DeviceIdentificationTest/DeviceIdentificationTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,168 @@
-+/*
-+ * Copyright 2007-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.
-+ */
-+/**
-+ * @test
-+ * @bug 6614214
-+ * @summary Verifies that we enter the fs mode on the correct screen.
-+ * Here is how to test: start the test on on a multi-screen system.
-+ * Verify that the display is correctly tracked by dragging the frame back
-+ * and forth between screens. Then verify that the correct device enters
-+ * the full-screen mode - when "Enter FS mode" is pressed it should enter on
-+ * the device where the frame is.
-+ *
-+ * Then change the order of the monitors in the DisplayProperties dialog,
-+ * (while the app is running) and see that it still works.
-+ * Restart the app, verify again.
-+ *
-+ * Now change the primary monitor on the system and verify with the
-+ * app running, as well as after restarting it that we still enter the
-+ * fs mode on the right device.
-+ *
-+ * @run main/manual/othervm DeviceIdentificationTest
-+ * @run main/manual/othervm -Dsun.java2d.noddraw=true DeviceIdentificationTest
-+ * @run main/manual/othervm -Dsun.java2d.opengl=True DeviceIdentificationTest
-+ */
-+
-+import java.awt.Button;
-+import java.awt.Color;
-+import java.awt.Frame;
-+import java.awt.Graphics;
-+import java.awt.GraphicsConfiguration;
-+import java.awt.GraphicsDevice;
-+import java.awt.GraphicsEnvironment;
-+import java.awt.Panel;
-+import java.awt.event.ActionEvent;
-+import java.awt.event.ActionListener;
-+import java.awt.event.ComponentAdapter;
-+import java.awt.event.ComponentEvent;
-+import java.awt.event.MouseAdapter;
-+import java.awt.event.MouseEvent;
-+import java.awt.event.WindowAdapter;
-+import java.awt.event.WindowEvent;
-+
-+public class DeviceIdentificationTest {
-+
-+    public static void main(String args[]) {
-+        final Frame f = new Frame("DeviceIdentificationTest");
-+        f.addWindowListener(new WindowAdapter() {
-+            public void windowClosing(WindowEvent e) {
-+                f.dispose();
-+            }
-+        });
-+        f.addComponentListener(new ComponentAdapter() {
-+            public void componentMoved(ComponentEvent e) {
-+                f.setTitle("Currently on: "+
-+                           f.getGraphicsConfiguration().getDevice());
-+            }
-+        });
-+
-+        Panel p = new Panel();
-+        Button b = new Button("Print Current Devices");
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                GraphicsDevice gds[] =
-+                    GraphicsEnvironment.getLocalGraphicsEnvironment().
-+                        getScreenDevices();
-+                int i = 0;
-+                System.err.println("--- Devices: ---");
-+                for (GraphicsDevice gd : gds) {
-+                    System.err.println("Device["+i+"]= "+ gd);
-+                    System.err.println("  bounds = "+
-+                        gd.getDefaultConfiguration().getBounds());
-+                    i++;
-+                }
-+                System.err.println("-------------------");
-+            }
-+        });
-+        p.add(b);
-+
-+        b = new Button("Print My Device");
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                GraphicsConfiguration gc = f.getGraphicsConfiguration();
-+                GraphicsDevice gd = gc.getDevice();
-+                System.err.println("--- My Device ---");
-+                System.err.println("Device  = "+ gd);
-+                System.err.println(" bounds = "+
-+                        gd.getDefaultConfiguration().getBounds());
-+            }
-+        });
-+        p.add(b);
-+
-+        b = new Button("Create FS Frame on my Device");
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                GraphicsConfiguration gc = f.getGraphicsConfiguration();
-+                final GraphicsDevice gd = gc.getDevice();
-+                System.err.println("--- Creating FS Frame on Device ---");
-+                System.err.println("Device  = "+ gd);
-+                System.err.println(" bounds = "+
-+                        gd.getDefaultConfiguration().getBounds());
-+                final Frame fsf = new Frame("Full-screen Frame on dev"+gd, gc) {
-+                    public void paint(Graphics g) {
-+                        g.setColor(Color.green);
-+                        g.fillRect(0, 0, getWidth(), getHeight());
-+                        g.setColor(Color.red);
-+                        g.drawString("FS on device: "+gd, 200, 200);
-+                        g.drawString("Click to exit Full-screen.", 200, 250);
-+                    }
-+                };
-+                fsf.setUndecorated(true);
-+                fsf.addMouseListener(new MouseAdapter() {
-+                    public void mouseClicked(MouseEvent e) {
-+                        gd.setFullScreenWindow(null);
-+                        fsf.dispose();
-+                    }
-+                });
-+                gd.setFullScreenWindow(fsf);
-+            }
-+        });
-+        p.add(b);
-+        f.add("North", p);
-+
-+        p = new Panel();
-+        b = new Button("Test Passed");
-+        b.setBackground(Color.green);
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                System.out.println("Test Passed");
-+                f.dispose();
-+            }
-+        });
-+        p.add(b);
-+        b = new Button("Test Failed");
-+        b.setBackground(Color.red);
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                System.out.println("Test FAILED");
-+                f.dispose();
-+                throw new RuntimeException("Test FAILED");
-+            }
-+        });
-+        p.add(b);
-+        f.add("South", p);
-+
-+        f.pack();
-+        f.setVisible(true);
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java openjdk/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,135 @@
-+/*
-+ * Copyright (c) 2007, 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.
-+ */
-+
-+import java.awt.Color;
-+import java.awt.Frame;
-+import java.awt.Graphics;
-+import java.awt.Graphics2D;
-+import java.awt.GraphicsConfiguration;
-+import java.awt.GraphicsEnvironment;
-+import java.awt.RenderingHints;
-+import java.awt.Toolkit;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.VolatileImage;
-+import java.io.File;
-+import java.io.IOException;
-+import javax.imageio.ImageIO;
-+
-+/**
-+ * @test
-+ * @bug 6429665
-+ * @bug 6588884
-+ * @summary Tests that the transform is correctly handled
-+ * @author Dmitri.Trembovetski area=Graphics
-+ * @run main AcceleratedScaleTest
-+ * @run main/othervm -Dsun.java2d.d3d=true AcceleratedScaleTest
-+ * @run main/othervm -Dsun.java2d.opengl=true AcceleratedScaleTest
-+ */
-+public class AcceleratedScaleTest {
-+    private static final int IMAGE_SIZE = 200;
-+    private static VolatileImage destVI;
-+
-+    private static void initVI(GraphicsConfiguration gc) {
-+        int res;
-+        if (destVI == null) {
-+            res = VolatileImage.IMAGE_INCOMPATIBLE;
-+        } else {
-+            res = destVI.validate(gc);
-+        }
-+        if (res == VolatileImage.IMAGE_INCOMPATIBLE) {
-+            if (destVI != null) destVI.flush();
-+            destVI = gc.createCompatibleVolatileImage(IMAGE_SIZE, IMAGE_SIZE);
-+            destVI.validate(gc);
-+            res = VolatileImage.IMAGE_RESTORED;
-+        }
-+        if (res == VolatileImage.IMAGE_RESTORED) {
-+            Graphics vig = destVI.getGraphics();
-+            vig.setColor(Color.red);
-+            vig.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
-+            vig.dispose();
-+        }
-+    }
-+
-+    public static void main(String[] args) {
-+        Frame f = new Frame();
-+        f.pack();
-+        GraphicsConfiguration gc = f.getGraphicsConfiguration();
-+        if (gc.getColorModel().getPixelSize() < 16) {
-+            System.out.printf("Bit depth: %d . Test considered passed.",
-+                              gc.getColorModel().getPixelSize());
-+            f.dispose();
-+            return;
-+        }
-+
-+        BufferedImage bi =
-+            new BufferedImage(IMAGE_SIZE/4, IMAGE_SIZE/4,
-+                              BufferedImage.TYPE_INT_RGB);
-+        Graphics2D g = (Graphics2D)bi.getGraphics();
-+        g.setColor(Color.red);
-+        g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
-+        BufferedImage snapshot;
-+        do {
-+            initVI(gc);
-+            g = (Graphics2D)destVI.getGraphics();
-+            // "accelerate" BufferedImage
-+            for (int i = 0; i < 5; i++) {
-+                g.drawImage(bi, 0, 0, null);
-+            }
-+            g.setColor(Color.white);
-+            g.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
-+
-+            // this will force the use of Transform primitive instead of
-+            // Scale (the latter doesn't do bilinear filtering required by
-+            // VALUE_RENDER_QUALITY, which triggers the bug in D3D pipeline
-+            g.setRenderingHint(RenderingHints.KEY_RENDERING,
-+                               RenderingHints.VALUE_RENDER_QUALITY);
-+            g.drawImage(bi, 0, 0, destVI.getWidth(), destVI.getHeight(), null);
-+            g.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
-+
-+            g.drawImage(bi, 0, 0, destVI.getWidth(), destVI.getHeight(), null);
-+
-+            snapshot = destVI.getSnapshot();
-+        } while (destVI.contentsLost());
-+
-+        f.dispose();
-+        int whitePixel = Color.white.getRGB();
-+        for (int y = 0; y < snapshot.getHeight(); y++) {
-+            for (int x = 0; x < snapshot.getWidth(); x++) {
-+                if (snapshot.getRGB(x, y) == whitePixel) {
-+                    System.out.printf("Found untouched pixel at %dx%d\n", x, y);
-+                    System.out.println("Dumping the dest. image to " +
-+                                       "AcceleratedScaleTest_dst.png");
-+                    try {
-+                        ImageIO.write(snapshot, "png",
-+                                      new File("AcceleratedScaleTest_dst.png"));
-+                    } catch (IOException ex) {
-+                        ex.printStackTrace();
-+                    }
-+                    throw new RuntimeException("Test failed.");
-+                }
-+            }
-+        }
-+        System.out.println("Test Passed.");
-+    }
-+
-+}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java openjdk/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/AccelPaintsTest/AccelPaintsTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,180 @@
 +/*
 + * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -44879,12 +57585,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java openjdk/jdk/test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,50 @@
-+/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/AcceleratedScaleTest/AcceleratedScaleTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,135 @@
++/*
++ * Copyright (c) 2006, 2008, 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
@@ -44901,9 +57607,148 @@
 + * 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.
++ * 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.
++ */
++
++import java.awt.Color;
++import java.awt.Frame;
++import java.awt.Graphics;
++import java.awt.Graphics2D;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsEnvironment;
++import java.awt.RenderingHints;
++import java.awt.Toolkit;
++import java.awt.image.BufferedImage;
++import java.awt.image.VolatileImage;
++import java.io.File;
++import java.io.IOException;
++import javax.imageio.ImageIO;
++
++/**
++ * @test
++ * @bug 6429665
++ * @bug 6588884
++ * @summary Tests that the transform is correctly handled
++ * @author Dmitri.Trembovetski area=Graphics
++ * @run main AcceleratedScaleTest
++ * @run main/othervm -Dsun.java2d.d3d=true AcceleratedScaleTest
++ * @run main/othervm -Dsun.java2d.opengl=true AcceleratedScaleTest
++ */
++public class AcceleratedScaleTest {
++    private static final int IMAGE_SIZE = 200;
++    private static VolatileImage destVI;
++
++    private static void initVI(GraphicsConfiguration gc) {
++        int res;
++        if (destVI == null) {
++            res = VolatileImage.IMAGE_INCOMPATIBLE;
++        } else {
++            res = destVI.validate(gc);
++        }
++        if (res == VolatileImage.IMAGE_INCOMPATIBLE) {
++            if (destVI != null) destVI.flush();
++            destVI = gc.createCompatibleVolatileImage(IMAGE_SIZE, IMAGE_SIZE);
++            destVI.validate(gc);
++            res = VolatileImage.IMAGE_RESTORED;
++        }
++        if (res == VolatileImage.IMAGE_RESTORED) {
++            Graphics vig = destVI.getGraphics();
++            vig.setColor(Color.red);
++            vig.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
++            vig.dispose();
++        }
++    }
++
++    public static void main(String[] args) {
++        Frame f = new Frame();
++        f.pack();
++        GraphicsConfiguration gc = f.getGraphicsConfiguration();
++        if (gc.getColorModel().getPixelSize() < 16) {
++            System.out.printf("Bit depth: %d . Test considered passed.",
++                              gc.getColorModel().getPixelSize());
++            f.dispose();
++            return;
++        }
++
++        BufferedImage bi =
++            new BufferedImage(IMAGE_SIZE/4, IMAGE_SIZE/4,
++                              BufferedImage.TYPE_INT_RGB);
++        Graphics2D g = (Graphics2D)bi.getGraphics();
++        g.setColor(Color.red);
++        g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
++        BufferedImage snapshot;
++        do {
++            initVI(gc);
++            g = (Graphics2D)destVI.getGraphics();
++            // "accelerate" BufferedImage
++            for (int i = 0; i < 5; i++) {
++                g.drawImage(bi, 0, 0, null);
++            }
++            g.setColor(Color.white);
++            g.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
++
++            // this will force the use of Transform primitive instead of
++            // Scale (the latter doesn't do bilinear filtering required by
++            // VALUE_RENDER_QUALITY, which triggers the bug in D3D pipeline
++            g.setRenderingHint(RenderingHints.KEY_RENDERING,
++                               RenderingHints.VALUE_RENDER_QUALITY);
++            g.drawImage(bi, 0, 0, destVI.getWidth(), destVI.getHeight(), null);
++            g.fillRect(0, 0, destVI.getWidth(), destVI.getHeight());
++
++            g.drawImage(bi, 0, 0, destVI.getWidth(), destVI.getHeight(), null);
++
++            snapshot = destVI.getSnapshot();
++        } while (destVI.contentsLost());
++
++        f.dispose();
++        int whitePixel = Color.white.getRGB();
++        for (int y = 0; y < snapshot.getHeight(); y++) {
++            for (int x = 0; x < snapshot.getWidth(); x++) {
++                if (snapshot.getRGB(x, y) == whitePixel) {
++                    System.out.printf("Found untouched pixel at %dx%d\n", x, y);
++                    System.out.println("Dumping the dest. image to " +
++                                       "AcceleratedScaleTest_dst.png");
++                    try {
++                        ImageIO.write(snapshot, "png",
++                                      new File("AcceleratedScaleTest_dst.png"));
++                    } catch (IOException ex) {
++                        ex.printStackTrace();
++                    }
++                    throw new RuntimeException("Test failed.");
++                }
++            }
++        }
++        System.out.println("Test Passed.");
++    }
++
++}
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/IAEforEmptyFrameTest/IAEforEmptyFrameTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,50 @@
++/*
++ * Copyright (c) 2007, 2008, 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.
 + */
 +
 +/*
@@ -44933,12 +57778,12 @@
 +        };
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java openjdk/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/InfiniteValidationLoopTest/InfiniteValidationLoopTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,116 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -44955,9 +57800,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -45053,12 +57898,12 @@
 +        System.out.println("Test PASSED");
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java openjdk/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/OnScreenRenderingResizeTest/OnScreenRenderingResizeTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,209 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45075,9 +57920,9 @@
 + * 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.
++ * 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
@@ -45266,12 +58111,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java openjdk/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/OverriddenInsetsTest/OverriddenInsetsTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,150 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45288,9 +58133,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -45420,12 +58265,12 @@
 +        System.out.println("Test PASSED");
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java openjdk/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/RenderingToCachedGraphicsTest/RenderingToCachedGraphicsTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,174 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45442,9 +58287,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -45598,12 +58443,12 @@
 +        System.out.println("Test PASSED");
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java openjdk/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/StrikeDisposalCrashTest/StrikeDisposalCrashTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,109 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45620,9 +58465,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/**
@@ -45711,12 +58556,12 @@
 +        Toolkit.getDefaultToolkit().sync();
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java openjdk/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/SwingOnScreenScrollingTest/SwingOnScreenScrollingTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,146 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45733,9 +58578,9 @@
 + * 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.
++ * 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
@@ -45861,12 +58706,12 @@
 +        return new Dimension(100, 300);
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java openjdk/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java
---- openjdk.orig/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/TransformedPaintTest/TransformedPaintTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,219 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -45883,9 +58728,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -46084,12 +58929,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/GdiRendering/InsetClipping.java openjdk/jdk/test/sun/java2d/GdiRendering/InsetClipping.java
---- openjdk.orig/jdk/test/sun/java2d/GdiRendering/InsetClipping.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/GdiRendering/InsetClipping.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/GdiRendering/InsetClipping.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/GdiRendering/InsetClipping.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,112 @@
 +/*
-+ * Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2003, 2008, 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
@@ -46106,9 +58951,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/**
@@ -46200,12 +59045,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java openjdk/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java
---- openjdk.orig/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java	2011-01-08 01:26:50.495202471 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/OpenGL/DrawBufImgOp.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/OpenGL/DrawBufImgOp.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,483 @@
 +/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2007, 2008, 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
@@ -46222,9 +59067,9 @@
 + * 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.
++ * 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
@@ -46687,324 +59532,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java openjdk/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java
---- openjdk.orig/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,308 @@
-+/*
-+ * Copyright 2007-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.
-+ */
-+/*
-+ * @test
-+ * @bug 6635805 6653780 6667607
-+ * @summary Tests that the resource sharing layer API is not broken
-+ * @author Dmitri.Trembovetski@sun.com: area=Graphics
-+ * @compile -XDignore.symbol.file=true RSLAPITest.java
-+ * @run main/othervm RSLAPITest
-+ * @run main/othervm -Dsun.java2d.noddraw=true RSLAPITest
-+ * @run main/othervm -Dsun.java2d.opengl=True RSLAPITest
-+ */
-+
-+import java.awt.Graphics;
-+import java.awt.GraphicsConfiguration;
-+import java.awt.GraphicsDevice;
-+import java.awt.GraphicsEnvironment;
-+import java.awt.Rectangle;
-+import java.awt.Transparency;
-+import java.awt.image.VolatileImage;
-+import java.util.HashSet;
-+import sun.java2d.DestSurfaceProvider;
-+import sun.java2d.Surface;
-+import sun.java2d.pipe.BufferedContext;
-+import sun.java2d.pipe.RenderQueue;
-+import sun.java2d.pipe.hw.AccelDeviceEventListener;
-+import sun.java2d.pipe.hw.AccelGraphicsConfig;
-+import sun.java2d.pipe.hw.AccelSurface;
-+import static java.awt.Transparency.*;
-+import java.lang.reflect.Field;
-+import static sun.java2d.pipe.hw.AccelSurface.*;
-+import static sun.java2d.pipe.hw.ContextCapabilities.*;
-+
-+public class RSLAPITest {
-+    private static volatile boolean failed = false;
-+
-+    public static void main(String[] args) {
-+        GraphicsEnvironment ge =
-+                GraphicsEnvironment.getLocalGraphicsEnvironment();
-+        GraphicsDevice gd = ge.getDefaultScreenDevice();
-+        GraphicsConfiguration gc = gd.getDefaultConfiguration();
-+        testGC(gc);
-+
-+        if (failed) {
-+            throw new RuntimeException("Test FAILED. See err output for more");
-+        }
-+
-+        System.out.println("Test PASSED.");
-+    }
-+
-+    private static void testInvalidType(AccelSurface surface, int type) {
-+        long ret = surface.getNativeResource(type);
-+        System.out.printf("  getNativeResource(%d)=0x%x\n", type, ret);
-+        if (ret != 0l) {
-+            System.err.printf(
-+                    "FAILED: surface.getNativeResource(%d) returned" +
-+                    " 0x%s. It should have have returned 0L\n",
-+                    type, ret);
-+            failed = true;
-+        }
-+    }
-+
-+    private static void testD3DDeviceResourceField(final AccelSurface surface) {
-+        try {
-+            Class d3dc = Class.forName("sun.java2d.d3d.D3DSurfaceData");
-+            if (d3dc.isInstance(surface)) {
-+                Field f = d3dc.getDeclaredField("D3D_DEVICE_RESOURCE");
-+                f.setAccessible(true);
-+                int d3dDR = (Integer)f.get(null);
-+
-+                System.out.printf(
-+                        "  getNativeResource(D3D_DEVICE_RESOURCE)=0x%x\n",
-+                        surface.getNativeResource(d3dDR));
-+            }
-+        } catch (ClassNotFoundException e) {}
-+        catch (IllegalAccessException e) {}
-+        catch (NoSuchFieldException e) {
-+            System.err.println("Failed: D3DSurfaceData.D3D_DEVICE_RESOURCE" +
-+                               " field not found!");
-+            failed = true;
-+        }
-+    }
-+
-+    private static void printSurface(Surface s) {
-+        if (s instanceof AccelSurface) {
-+            final AccelSurface surface = (AccelSurface) s;
-+            System.out.println(" Accel Surface: ");
-+            System.out.println("  type=" + surface.getType());
-+            System.out.println("  bounds=" + surface.getBounds());
-+            System.out.println("  nativeBounds=" + surface.getNativeBounds());
-+            System.out.println("  isSurfaceLost=" + surface.isSurfaceLost());
-+            System.out.println("  isValid=" + surface.isValid());
-+            RenderQueue rq = surface.getContext().getRenderQueue();
-+            rq.lock();
-+            try {
-+                rq.flushAndInvokeNow(new Runnable() {
-+                    public void run() {
-+                        System.out.printf("  getNativeResource(TEXTURE)=0x%x\n",
-+                            surface.getNativeResource(TEXTURE));
-+                        System.out.printf("  getNativeResource(RT_TEXTURE)=0x%x\n",
-+                            surface.getNativeResource(RT_TEXTURE));
-+                        System.out.printf("  getNativeResource(RT_PLAIN)=0x%x\n",
-+                            surface.getNativeResource(RT_PLAIN));
-+                        System.out.printf(
-+                            "  getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
-+                            surface.getNativeResource(FLIP_BACKBUFFER));
-+
-+                        testD3DDeviceResourceField(surface);
-+
-+                        testInvalidType(surface, -1);
-+                        testInvalidType(surface, -150);
-+                        testInvalidType(surface, 300);
-+                        testInvalidType(surface, Integer.MAX_VALUE);
-+                        testInvalidType(surface, Integer.MIN_VALUE);
-+                    }
-+                });
-+            } finally {
-+                rq.unlock();
-+            }
-+        } else {
-+            System.out.println("null accelerated surface");
-+        }
-+    }
-+
-+    private static void printAGC(AccelGraphicsConfig agc) {
-+        System.out.println("Accelerated Graphics Config: " + agc);
-+        System.out.println("Capabilities:");
-+        System.out.printf("AGC caps: 0x%x\n",
-+                          agc.getContextCapabilities().getCaps());
-+        System.out.println(agc.getContextCapabilities());
-+    }
-+
-+    private static void testGC(GraphicsConfiguration gc) {
-+        if (!(gc instanceof AccelGraphicsConfig)) {
-+            System.out.println("Test passed: no hw accelerated configs found.");
-+            return;
-+        }
-+        System.out.println("AccelGraphicsConfig exists, testing.");
-+        AccelGraphicsConfig agc = (AccelGraphicsConfig) gc;
-+        printAGC(agc);
-+
-+        testContext(agc);
-+
-+        VolatileImage vi = gc.createCompatibleVolatileImage(10, 10);
-+        vi.validate(gc);
-+        if (vi instanceof DestSurfaceProvider) {
-+            System.out.println("Passed: VI is DestSurfaceProvider");
-+            Surface s = ((DestSurfaceProvider) vi).getDestSurface();
-+            if (s instanceof AccelSurface) {
-+                System.out.println("Passed: Obtained Accel Surface");
-+                printSurface((AccelSurface) s);
-+            }
-+            Graphics g = vi.getGraphics();
-+            if (g instanceof DestSurfaceProvider) {
-+                System.out.println("Passed: VI graphics is " +
-+                                   "DestSurfaceProvider");
-+                printSurface(((DestSurfaceProvider) g).getDestSurface());
-+            }
-+        } else {
-+            System.out.println("VI is not DestSurfaceProvider");
-+        }
-+        testVICreation(agc, CAPS_RT_TEXTURE_ALPHA, TRANSLUCENT, RT_TEXTURE);
-+        testVICreation(agc, CAPS_RT_TEXTURE_OPAQUE, OPAQUE, RT_TEXTURE);
-+        testVICreation(agc, CAPS_RT_PLAIN_ALPHA, TRANSLUCENT, RT_PLAIN);
-+        testVICreation(agc, agc.getContextCapabilities().getCaps(), OPAQUE,
-+                       TEXTURE);
-+        testForNPEDuringCreation(agc);
-+    }
-+
-+    private static void testVICreation(AccelGraphicsConfig agc, int cap,
-+                                       int transparency, int type)
-+    {
-+        int caps = agc.getContextCapabilities().getCaps();
-+        int w = 11, h = 17;
-+
-+        VolatileImage vi =
-+            agc.createCompatibleVolatileImage(w, h, transparency, type);
-+        if ((cap & caps) != 0) {
-+            if (vi == null) {
-+                System.out.printf("Failed: cap=%d is supported but " +
-+                                  "image wasn't created\n", cap);
-+                throw new RuntimeException("Failed: image wasn't created " +
-+                                           "for supported cap");
-+            } else {
-+                if (!(vi instanceof DestSurfaceProvider)) {
-+                    throw new RuntimeException("Failed: created VI is not " +
-+                                               "DestSurfaceProvider");
-+                }
-+                Surface s = ((DestSurfaceProvider) vi).getDestSurface();
-+                if (s instanceof AccelSurface) {
-+                    AccelSurface as = (AccelSurface) s;
-+                    printSurface(as);
-+                    if (as.getType() != type) {
-+                        throw new RuntimeException("Failed: returned VI is" +
-+                                " of incorrect type: " + as.getType() +
-+                                " requested type=" + type);
-+                    } else {
-+                        System.out.printf("Passed: VI of type %d was " +
-+                                "created for cap=%d\n", type, cap);
-+                    }
-+                    if (as.getType() == TEXTURE) {
-+                        boolean ex = false;
-+                        try {
-+                            Graphics g = vi.getGraphics();
-+                            g.dispose();
-+                        } catch (UnsupportedOperationException e) {
-+                            ex = true;
-+                        }
-+                        if (!ex) {
-+                            throw new RuntimeException("Failed: " +
-+                                "texture.getGraphics() didn't throw exception");
-+                        } else {
-+                            System.out.println("Passed: VI.getGraphics()" +
-+                                    " threw exception for texture-based VI");
-+                        }
-+                    }
-+                } else {
-+                    System.out.printf("Passed: VI of type %d was " +
-+                            "created for cap=%d but accel surface is null\n",
-+                            type, cap);
-+                }
-+            }
-+        } else {
-+            if (vi != null) {
-+                throw new RuntimeException("Failed: created VI for " +
-+                                           "unsupported cap=" + cap);
-+            }
-+        }
-+    }
-+
-+    private static void testContext(final AccelGraphicsConfig agc) {
-+        BufferedContext c = agc.getContext();
-+        final AccelDeviceEventListener l = new AccelDeviceEventListener() {
-+            public void onDeviceDispose() {
-+                System.out.println("onDeviceDispose invoked");
-+                agc.removeDeviceEventListener(this);
-+            }
-+            public void onDeviceReset() {
-+                System.out.println("onDeviceReset invoked");
-+            }
-+        };
-+        agc.addDeviceEventListener(l);
-+
-+        RenderQueue rq = c.getRenderQueue();
-+        rq.lock();
-+        try {
-+            c.saveState();
-+            rq.flushNow();
-+            c.restoreState();
-+            rq.flushNow();
-+            System.out.println("Passed: Save/Restore");
-+        } finally {
-+            rq.unlock();
-+        }
-+    }
-+
-+    private static void testForNPEDuringCreation(AccelGraphicsConfig agc) {
-+        int iterations = 100;
-+        HashSet<VolatileImage> vis = new HashSet<VolatileImage>();
-+        GraphicsConfiguration gc = (GraphicsConfiguration)agc;
-+        Rectangle r = gc.getBounds();
-+        long ram = gc.getDevice().getAvailableAcceleratedMemory();
-+        if (ram > 0) {
-+            // guesstimate the number of iterations needed to exhaust vram
-+            int i = 2 *
-+                (int)(ram / (r.width * r.height * gc.getColorModel().getPixelSize()/8));
-+            iterations = Math.max(iterations, i);
-+            System.err.println("iterations="+iterations);
-+        }
-+        for (int i = 0; i < iterations; i++) {
-+            VolatileImage vi =
-+                agc.createCompatibleVolatileImage(r.width, r.height,
-+                                                  Transparency.OPAQUE,
-+                                                  AccelSurface.RT_PLAIN);
-+            if (vi == null) {
-+                break;
-+            }
-+            vis.add(vi);
-+        }
-+        for (VolatileImage vi : vis) {
-+            vi.flush();
-+        }
-+        vis = null;
-+
-+        System.out.println("Passed: testing for possible NPEs " +
-+                           "during VI creation");
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java openjdk/jdk/test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java
---- openjdk.orig/jdk/test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,338 @@
-+/*
-+ * Copyright 2007-2008 Sun Microsystems, Inc.  All Rights Reserved.
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/SunGraphics2D/DrawImageBilinear.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,205 @@
++/*
++ * Copyright (c) 2007, 2008, 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
@@ -47021,524 +59554,9 @@
 + * 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
-+ * @bug 6678218 6681745 6691737
-+ * @summary Tests that v-synced BufferStrategies works (if vsync is supported)
-+ * @author Dmitri.Trembovetski@sun.com: area=Graphics
-+ * @compile -XDignore.symbol.file=true VSyncedBufferStrategyTest.java
-+ * @run main/manual/othervm VSyncedBufferStrategyTest
-+ * @run main/manual/othervm -Dsun.java2d.opengl=True VSyncedBufferStrategyTest
-+ */
-+
-+import java.awt.AWTException;
-+import java.awt.BufferCapabilities;
-+import java.awt.BufferCapabilities.FlipContents;
-+import java.awt.Button;
-+import java.awt.Canvas;
-+import java.awt.Color;
-+import java.awt.Dimension;
-+import java.awt.EventQueue;
-+import java.awt.FlowLayout;
-+import java.awt.Font;
-+import java.awt.Frame;
-+import java.awt.Graphics;
-+import java.awt.HeadlessException;
-+import java.awt.ImageCapabilities;
-+import java.awt.Panel;
-+import java.awt.event.ActionEvent;
-+import java.awt.event.ActionListener;
-+import java.awt.event.WindowAdapter;
-+import java.awt.event.WindowEvent;
-+import java.awt.image.BufferStrategy;
-+import java.util.concurrent.CountDownLatch;
-+import javax.swing.JButton;
-+import javax.swing.JFrame;
-+import javax.swing.JPanel;
-+import javax.swing.JScrollPane;
-+import javax.swing.JTextArea;
-+
-+public class VSyncedBufferStrategyTest extends Canvas implements Runnable {
-+
-+    private static final int BLOCK_W = 50;
-+    private static final int BLOCK_H = 200;
-+
-+    BufferStrategy bs;
-+    Thread renderThread;
-+
-+    int blockX = 10;
-+    int blockY = 10;
-+
-+    private volatile boolean done = false;
-+    private volatile boolean requestVSync;
-+    private boolean currentBSVSynced;
-+
-+    public VSyncedBufferStrategyTest(boolean requestVSync) {
-+        this.requestVSync = requestVSync;
-+        this.currentBSVSynced = !requestVSync;
-+        renderThread = new Thread(this);
-+        renderThread.start();
-+    }
-+
-+    private static final BufferCapabilities defaultBC =
-+        new BufferCapabilities(
-+                new ImageCapabilities(true),
-+                new ImageCapabilities(true),
-+                null);
-+
-+    private void createBS(boolean requestVSync) {
-+        if (bs != null && requestVSync == currentBSVSynced) {
-+            return;
-+        }
-+
-+        BufferCapabilities bc = defaultBC;
-+        if (requestVSync) {
-+            bc = new sun.java2d.pipe.hw.ExtendedBufferCapabilities(
-+                    new ImageCapabilities(true),
-+                    new ImageCapabilities(true),
-+                    FlipContents.COPIED,
-+                    sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_ON);
-+        }
-+        try {
-+            createBufferStrategy(2, bc);
-+        } catch (AWTException e) {
-+            System.err.println("Warning: cap is not supported: "+bc);
-+            e.printStackTrace();
-+            createBufferStrategy(2);
-+        }
-+        currentBSVSynced = requestVSync;
-+        bs = getBufferStrategy();
-+        String s =
-+            getParent() instanceof Frame ?
-+                ((Frame)getParent()).getTitle() : "parent";
-+        System.out.println("Created BS for \"" + s + "\" frame, bs="+bs);
-+    }
-+
-+    @Override
-+    public void paint(Graphics g) {
-+    }
-+    @Override
-+    public void update(Graphics g) {
-+    }
-+
-+    @Override
-+    public void run() {
-+        while (!isShowing()) {
-+            try { Thread.sleep(5); } catch (InterruptedException e) {}
-+        }
-+        try { Thread.sleep(2000); } catch (InterruptedException e) {}
-+
-+        try {
-+            while (!done && isShowing()) {
-+                createBS(requestVSync);
-+                do {
-+                    step();
-+                    Graphics g = bs.getDrawGraphics();
-+                    render(g);
-+                    if (!bs.contentsRestored()) {
-+                        bs.show();
-+                    }
-+                } while (bs.contentsLost());
-+                Thread.yield();
-+            }
-+        } catch (Throwable e) {
-+            // since we're not bothering with proper synchronization, exceptions
-+            // may be thrown when the frame is closed
-+            if (isShowing()) {
-+                throw new RuntimeException(e);
-+            }
-+        }
-+    }
-+
-+    int inc = 5;
-+    private void step() {
-+        blockX += inc;
-+        if (blockX > getWidth() - BLOCK_W - 10) {
-+            inc = -inc;
-+            blockX += inc;
-+        }
-+        if (blockX < 10) {
-+            inc = -inc;
-+            blockX += inc;
-+        }
-+    }
-+
-+    private void render(Graphics g) {
-+        g.setColor(Color.white);
-+        g.fillRect(0, 0, getWidth(), getHeight());
-+
-+        g.setColor(Color.black);
-+        g.fillRect(blockX, blockY, BLOCK_W, BLOCK_H);
-+    }
-+
-+    private void setRequestVSync(boolean reqVSync) {
-+        requestVSync = reqVSync;
-+    }
-+
-+    @Override
-+    public Dimension getPreferredSize() {
-+        return new Dimension(BLOCK_W*10+20, BLOCK_H+20);
-+    }
-+
-+    private static int frameNum = 0;
-+    private static Frame createAndShowBSFrame() {
-+        final Frame f = new Frame("Not V-Synced");
-+
-+        int myNum;
-+        synchronized (VSyncedBufferStrategyTest.class) {
-+            myNum = frameNum++;
-+        }
-+
-+        final VSyncedBufferStrategyTest component =
-+                new VSyncedBufferStrategyTest(false);
-+        f.setIgnoreRepaint(true);
-+        f.add("Center", component);
-+
-+        Panel p = new Panel();
-+
-+        Button b = new Button("Request VSync");
-+        b.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                f.setTitle("Possibly V-Synced");
-+                component.setRequestVSync(true);
-+            }
-+        });
-+        p.add(b);
-+
-+        b = new Button("Relinquish VSync");
-+        b.addActionListener(new ActionListener() {
-+            int inc = 1;
-+            public void actionPerformed(ActionEvent e) {
-+                f.setTitle("Not V-Synced");
-+                component.setRequestVSync(false);
-+                f.setSize(f.getWidth()+inc, f.getHeight());
-+                inc = -inc;
-+            }
-+        });
-+        p.add(b);
-+
-+        f.add("South", p);
-+
-+        f.pack();
-+        f.setLocation(10, myNum * f.getHeight());
-+        f.setVisible(true);
-+        f.addWindowListener(new WindowAdapter() {
-+            @Override
-+            public void windowClosing(WindowEvent e) {
-+                component.done = true;
-+                f.dispose();
-+            }
-+            @Override
-+            public void windowClosed(WindowEvent e) {
-+                component.done = true;
-+            }
-+        });
-+
-+        return f;
-+    }
-+
-+    private static final String description =
-+        "Tests that v-synced BufferStrategy works. Note that it in some\n" +
-+        "cases the v-sync can not be enabled, and it is accepted.\n" +
-+        "The following however is true: only one buffer strategy at a time can\n"+
-+        "be created v-synced. In order for other BS to become v-synced, the one\n"+
-+        "that currently is v-synched (or its window) needs to be disposed.\n" +
-+        "Try the following scenarios:\n" +
-+        "  - click the \"Request VSync\" button in one of the frames. If the\n"+
-+        "    behavior of the animation changes - the animation becomes smooth\n" +
-+        "    it had successfully created a v-synced BS. Note that the animation\n" +
-+        "    in other frames may also become smoother - this is a side-effect\n"+
-+        "    of one of the BS-es becoming v-synched\n" +
-+        "  - click the \"Relinquish VSync\" button on the same frame. If the\n"+
-+        "    behavior changes to the original (tearing)- it had successfully\n" +
-+        "    created a non-vsynced strategy.\n" +
-+        "  - next, try making another one v-synced. It should succeed.\n" +
-+        "  - next, try making another one v-synced - while there's already\n" +
-+        "    a v-synced frame. It should not succeed - meaning, it shouldn't\n" +
-+        "    appear to become smoother, and the behavior of the current v-synced\n" +
-+        "    frame shouldn't change.\n" +
-+        "\n" +
-+        "If there aren't any BufferStrategy-related exceptions or other\n" +
-+        "issues, and the scenarios worked, the test passed, otherwise it\n"+
-+        "failed.\n";
-+
-+    private static void createAndShowDescGUI(final Frame f3, final Frame f1,
-+                                             final Frame f2)
-+        throws HeadlessException, RuntimeException
-+    {
-+        final JFrame desc =
-+            new JFrame("VSyncedBufferStrategyTest - Description");
-+        desc.addWindowListener(new WindowAdapter() {
-+
-+            @Override
-+            public void windowClosing(WindowEvent e) {
-+                f1.dispose();
-+                f2.dispose();
-+                f3.dispose();
-+                l.countDown();
-+            }
-+        });
-+        JPanel p = new JPanel();
-+        JButton bPassed = new JButton("Passed");
-+        bPassed.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                desc.dispose();
-+                f1.dispose();
-+                f2.dispose();
-+                f3.dispose();
-+                l.countDown();
-+            }
-+        });
-+        JButton bFailed = new JButton("Failed");
-+        bFailed.addActionListener(new ActionListener() {
-+            public void actionPerformed(ActionEvent e) {
-+                failed = true;
-+                desc.dispose();
-+                f1.dispose();
-+                f2.dispose();
-+                f3.dispose();
-+                l.countDown();
-+            }
-+        });
-+        p.setLayout(new FlowLayout());
-+        p.add(bPassed);
-+        p.add(bFailed);
-+        JTextArea ta = new JTextArea(24, 75);
-+        ta.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
-+        ta.setEditable(false);
-+        ta.setText(description);
-+        desc.add("Center", new JScrollPane(ta));
-+        desc.add("South", p);
-+        desc.pack();
-+        desc.setLocation(BLOCK_W*10+50, 0);
-+        desc.setVisible(true);
-+    }
-+
-+    private static void createTestFrames() {
-+        Frame f1 = createAndShowBSFrame();
-+        Frame f2 = createAndShowBSFrame();
-+        Frame f3 = createAndShowBSFrame();
-+        createAndShowDescGUI(f1, f2, f3);
-+    }
-+
-+    static boolean failed = false;
-+    static CountDownLatch l = new CountDownLatch(1);
-+    public static void main(String[] args) throws Exception {
-+        EventQueue.invokeLater(new Runnable() {
-+            public void run() {
-+                createTestFrames();
-+            }
-+        });
-+        l.await();
-+        if (failed) {
-+            throw new RuntimeException("Test FAILED");
-+        }
-+        System.out.println("Test PASSED");
-+    }
-+
-+}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java openjdk/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java
---- openjdk.orig/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,169 @@
-+/*
-+ * Copyright 2007-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.
-+ */
-+
-+/**
-+ * @test
-+ * @bug 6613860 6691934
-+ * @summary Tests that the pipelines can handle (in somewhat limited
-+ * manner) mutable Colors
-+ *
-+ * @run main/othervm MutableColorTest
-+ * @run main/othervm -Dsun.java2d.noddraw=true MutableColorTest
-+ * @run main/othervm -Dsun.java2d.opengl=True MutableColorTest
-+ */
-+
-+import java.awt.Color;
-+import java.awt.Graphics2D;
-+import java.awt.GraphicsConfiguration;
-+import java.awt.GraphicsEnvironment;
-+import java.awt.Image;
-+import java.awt.Transparency;
-+import java.awt.geom.Ellipse2D;
-+import java.awt.image.BufferedImage;
-+import java.awt.image.VolatileImage;
-+import java.io.File;
-+import java.io.IOException;
-+import javax.imageio.ImageIO;
-+
-+public class MutableColorTest {
-+
-+    static Image bmImage;
-+    static Image argbImage;
-+
-+    static class EvilColor extends Color {
-+        Color colors[] = { Color.red, Color.green, Color.blue };
-+        int currentIndex = 0;
-+        EvilColor() {
-+            super(Color.red.getRGB());
-+        }
-+
-+        @Override
-+        public int getRGB() {
-+            return colors[currentIndex].getRGB();
-+        }
-+        void nextColor() {
-+            currentIndex++;
-+        }
-+    }
-+
-+    private static int testImage(Image im,
-+                                 boolean doClip, boolean doTx)
-+    {
-+        int w = im.getWidth(null);
-+        int h = im.getHeight(null);
-+        Graphics2D g = (Graphics2D)im.getGraphics();
-+        EvilColor evilColor = new EvilColor();
-+        g.setColor(evilColor);
-+        g.fillRect(0, 0, w, h);
-+        g.dispose();
-+
-+        evilColor.nextColor();
-+
-+        g = (Graphics2D)im.getGraphics();
-+
-+        if (doTx) {
-+            g.rotate(Math.PI/2.0, w/2, h/2);
-+        }
-+        g.setColor(evilColor);
-+        g.fillRect(0, 0, w, h);
-+        if (doClip) {
-+            g.clip(new Ellipse2D.Float(0, 0, w, h));
-+        }
-+        g.fillRect(0, h/3, w, h/3);
-+
-+        // tests native BlitBg loop
-+        g.drawImage(bmImage, 0, 2*h/3, evilColor, null);
-+        // tests General BlitBg loop
-+        g.drawImage(argbImage, 0, 2*h/3+h/3/2, evilColor, null);
-+
-+        return evilColor.getRGB();
-+    }
-+
-+    private static void testResult(final String desc,
-+                                   final BufferedImage snapshot,
-+                                   final int evilColor) {
-+        for (int y = 0; y < snapshot.getHeight(); y++) {
-+            for (int x = 0; x < snapshot.getWidth(); x++) {
-+                int snapRGB = snapshot.getRGB(x, y);
-+                if (snapRGB != evilColor) {
-+                    System.err.printf("Wrong RGB for %s at (%d,%d): 0x%x " +
-+                        "instead of 0x%x\n", desc, x, y, snapRGB, evilColor);
-+                    String fileName = "MutableColorTest_"+desc+".png";
-+                    try {
-+                        ImageIO.write(snapshot, "png", new File(fileName));
-+                        System.err.println("Dumped snapshot to "+fileName);
-+                    } catch (IOException ex) {}
-+                    throw new RuntimeException("Test FAILED.");
-+                }
-+            }
-+        }
-+    }
-+
-+    public static void main(String[] args) {
-+        GraphicsConfiguration gc =
-+            GraphicsEnvironment.getLocalGraphicsEnvironment().
-+                getDefaultScreenDevice().getDefaultConfiguration();
-+
-+        bmImage = gc.createCompatibleImage(64, 64, Transparency.BITMASK);
-+        argbImage = gc.createCompatibleImage(64, 64, Transparency.TRANSLUCENT);
-+
-+        if (gc.getColorModel().getPixelSize() > 8) {
-+            VolatileImage vi =
-+                gc.createCompatibleVolatileImage(64, 64, Transparency.OPAQUE);
-+            do {
-+                if (vi.validate(gc) == VolatileImage.IMAGE_INCOMPATIBLE) {
-+                    vi = gc.createCompatibleVolatileImage(64, 64,
-+                                                          Transparency.OPAQUE);
-+                    vi.validate(gc);
-+                }
-+
-+                int color = testImage(vi, false, false);
-+                testResult("vi_noclip_notx", vi.getSnapshot(), color);
-+
-+                color = testImage(vi, true, true);
-+                testResult("vi_clip_tx", vi.getSnapshot(), color);
-+
-+                color = testImage(vi, true, false);
-+                testResult("vi_clip_notx", vi.getSnapshot(), color);
-+
-+                color = testImage(vi, false, true);
-+                testResult("vi_noclip_tx", vi.getSnapshot(), color);
-+            } while (vi.contentsLost());
-+        }
-+
-+        BufferedImage bi = new BufferedImage(64, 64, BufferedImage.TYPE_INT_RGB);
-+        int color = testImage(bi, false, false);
-+        testResult("bi_noclip_notx", bi, color);
-+
-+        color = testImage(bi, true, true);
-+        testResult("bi_clip_tx", bi, color);
-+
-+        color = testImage(bi, true, false);
-+        testResult("bi_clip_notx", bi, color);
-+
-+        color = testImage(bi, false, true);
-+        testResult("bi_noclip_tx", bi, color);
-+
-+        System.err.println("Test passed.");
-+    }
-+}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java openjdk/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java
---- openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/SunGraphics2D/DrawImageBilinear.java	2011-01-08 01:26:50.495202471 +0000
-@@ -0,0 +1,205 @@
-+/*
-+ * Copyright 2007-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.
++ * 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
@@ -47723,12 +59741,12 @@
 +        testRegion(capture, new Rectangle(150, 10, 40, 40));
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java openjdk/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java
---- openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java	2011-01-08 01:26:50.499202515 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/SunGraphics2D/PolyVertTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/SunGraphics2D/PolyVertTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,661 @@
 +/*
-+ * Copyright 2002-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2002, 2008, 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
@@ -47745,9 +59763,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -48388,12 +60406,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java openjdk/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java
---- openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java	2011-01-08 01:26:50.499202515 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/SunGraphics2D/SimplePrimQuality.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/SunGraphics2D/SimplePrimQuality.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,281 @@
 +/*
-+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2005, 2008, 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
@@ -48410,9 +60428,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -48673,12 +60691,12 @@
 +        }
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java openjdk/jdk/test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java
---- openjdk.orig/jdk/test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java	2011-01-08 01:26:50.499202515 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/SunGraphics2D/SourceClippingBlitTest/SourceClippingBlitTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,295 @@
 +/*
-+ * Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
++ * Copyright (c) 2005, 2008, 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
@@ -48695,9 +60713,9 @@
 + * 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.
++ * 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.
 + */
 +
 +/*
@@ -48972,9 +60990,9 @@
 +        return image;
 +    }
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java
---- openjdk.orig/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java	2011-01-08 01:26:50.499202515 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.java	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,156 @@
 +/*
 + * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
@@ -49132,12 +61150,12 @@
 +    }
 +
 +}
-diff -Nru openjdk.orig/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh
---- openjdk.orig/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh	1970-01-01 01:00:00.000000000 +0100
-+++ openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh	2011-01-08 01:26:50.499202515 +0000
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/X11SurfaceData/SharedMemoryPixmapsTest/SharedMemoryPixmapsTest.sh	Fri Feb 04 16:32:49 2011 +0000
 @@ -0,0 +1,51 @@
 +#
-+# Copyright 2005-2008 Sun Microsystems, Inc.  All Rights Reserved.
++# Copyright (c) 2005, 2008, 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
@@ -49154,9 +61172,9 @@
 +# 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.
++# 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.
 +#
 +
 +#!/bin/sh
@@ -49187,3 +61205,830 @@
 +fi
 +
 +exit 0
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/pipe/MutableColorTest/MutableColorTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,169 @@
++/*
++ * Copyright (c) 2007, 2008, 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 6613860 6691934
++ * @summary Tests that the pipelines can handle (in somewhat limited
++ * manner) mutable Colors
++ *
++ * @run main/othervm MutableColorTest
++ * @run main/othervm -Dsun.java2d.noddraw=true MutableColorTest
++ * @run main/othervm -Dsun.java2d.opengl=True MutableColorTest
++ */
++
++import java.awt.Color;
++import java.awt.Graphics2D;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsEnvironment;
++import java.awt.Image;
++import java.awt.Transparency;
++import java.awt.geom.Ellipse2D;
++import java.awt.image.BufferedImage;
++import java.awt.image.VolatileImage;
++import java.io.File;
++import java.io.IOException;
++import javax.imageio.ImageIO;
++
++public class MutableColorTest {
++
++    static Image bmImage;
++    static Image argbImage;
++
++    static class EvilColor extends Color {
++        Color colors[] = { Color.red, Color.green, Color.blue };
++        int currentIndex = 0;
++        EvilColor() {
++            super(Color.red.getRGB());
++        }
++
++        @Override
++        public int getRGB() {
++            return colors[currentIndex].getRGB();
++        }
++        void nextColor() {
++            currentIndex++;
++        }
++    }
++
++    private static int testImage(Image im,
++                                 boolean doClip, boolean doTx)
++    {
++        int w = im.getWidth(null);
++        int h = im.getHeight(null);
++        Graphics2D g = (Graphics2D)im.getGraphics();
++        EvilColor evilColor = new EvilColor();
++        g.setColor(evilColor);
++        g.fillRect(0, 0, w, h);
++        g.dispose();
++
++        evilColor.nextColor();
++
++        g = (Graphics2D)im.getGraphics();
++
++        if (doTx) {
++            g.rotate(Math.PI/2.0, w/2, h/2);
++        }
++        g.setColor(evilColor);
++        g.fillRect(0, 0, w, h);
++        if (doClip) {
++            g.clip(new Ellipse2D.Float(0, 0, w, h));
++        }
++        g.fillRect(0, h/3, w, h/3);
++
++        // tests native BlitBg loop
++        g.drawImage(bmImage, 0, 2*h/3, evilColor, null);
++        // tests General BlitBg loop
++        g.drawImage(argbImage, 0, 2*h/3+h/3/2, evilColor, null);
++
++        return evilColor.getRGB();
++    }
++
++    private static void testResult(final String desc,
++                                   final BufferedImage snapshot,
++                                   final int evilColor) {
++        for (int y = 0; y < snapshot.getHeight(); y++) {
++            for (int x = 0; x < snapshot.getWidth(); x++) {
++                int snapRGB = snapshot.getRGB(x, y);
++                if (snapRGB != evilColor) {
++                    System.err.printf("Wrong RGB for %s at (%d,%d): 0x%x " +
++                        "instead of 0x%x\n", desc, x, y, snapRGB, evilColor);
++                    String fileName = "MutableColorTest_"+desc+".png";
++                    try {
++                        ImageIO.write(snapshot, "png", new File(fileName));
++                        System.err.println("Dumped snapshot to "+fileName);
++                    } catch (IOException ex) {}
++                    throw new RuntimeException("Test FAILED.");
++                }
++            }
++        }
++    }
++
++    public static void main(String[] args) {
++        GraphicsConfiguration gc =
++            GraphicsEnvironment.getLocalGraphicsEnvironment().
++                getDefaultScreenDevice().getDefaultConfiguration();
++
++        bmImage = gc.createCompatibleImage(64, 64, Transparency.BITMASK);
++        argbImage = gc.createCompatibleImage(64, 64, Transparency.TRANSLUCENT);
++
++        if (gc.getColorModel().getPixelSize() > 8) {
++            VolatileImage vi =
++                gc.createCompatibleVolatileImage(64, 64, Transparency.OPAQUE);
++            do {
++                if (vi.validate(gc) == VolatileImage.IMAGE_INCOMPATIBLE) {
++                    vi = gc.createCompatibleVolatileImage(64, 64,
++                                                          Transparency.OPAQUE);
++                    vi.validate(gc);
++                }
++
++                int color = testImage(vi, false, false);
++                testResult("vi_noclip_notx", vi.getSnapshot(), color);
++
++                color = testImage(vi, true, true);
++                testResult("vi_clip_tx", vi.getSnapshot(), color);
++
++                color = testImage(vi, true, false);
++                testResult("vi_clip_notx", vi.getSnapshot(), color);
++
++                color = testImage(vi, false, true);
++                testResult("vi_noclip_tx", vi.getSnapshot(), color);
++            } while (vi.contentsLost());
++        }
++
++        BufferedImage bi = new BufferedImage(64, 64, BufferedImage.TYPE_INT_RGB);
++        int color = testImage(bi, false, false);
++        testResult("bi_noclip_notx", bi, color);
++
++        color = testImage(bi, true, true);
++        testResult("bi_clip_tx", bi, color);
++
++        color = testImage(bi, true, false);
++        testResult("bi_clip_notx", bi, color);
++
++        color = testImage(bi, false, true);
++        testResult("bi_noclip_tx", bi, color);
++
++        System.err.println("Test passed.");
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,308 @@
++/*
++ * Copyright (c) 2007, 2008, 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 6635805 6653780 6667607
++ * @summary Tests that the resource sharing layer API is not broken
++ * @author Dmitri.Trembovetski@sun.com: area=Graphics
++ * @compile -XDignore.symbol.file=true RSLAPITest.java
++ * @run main/othervm RSLAPITest
++ * @run main/othervm -Dsun.java2d.noddraw=true RSLAPITest
++ * @run main/othervm -Dsun.java2d.opengl=True RSLAPITest
++ */
++
++import java.awt.Graphics;
++import java.awt.GraphicsConfiguration;
++import java.awt.GraphicsDevice;
++import java.awt.GraphicsEnvironment;
++import java.awt.Rectangle;
++import java.awt.Transparency;
++import java.awt.image.VolatileImage;
++import java.util.HashSet;
++import sun.java2d.DestSurfaceProvider;
++import sun.java2d.Surface;
++import sun.java2d.pipe.BufferedContext;
++import sun.java2d.pipe.RenderQueue;
++import sun.java2d.pipe.hw.AccelDeviceEventListener;
++import sun.java2d.pipe.hw.AccelGraphicsConfig;
++import sun.java2d.pipe.hw.AccelSurface;
++import static java.awt.Transparency.*;
++import java.lang.reflect.Field;
++import static sun.java2d.pipe.hw.AccelSurface.*;
++import static sun.java2d.pipe.hw.ContextCapabilities.*;
++
++public class RSLAPITest {
++    private static volatile boolean failed = false;
++
++    public static void main(String[] args) {
++        GraphicsEnvironment ge =
++                GraphicsEnvironment.getLocalGraphicsEnvironment();
++        GraphicsDevice gd = ge.getDefaultScreenDevice();
++        GraphicsConfiguration gc = gd.getDefaultConfiguration();
++        testGC(gc);
++
++        if (failed) {
++            throw new RuntimeException("Test FAILED. See err output for more");
++        }
++
++        System.out.println("Test PASSED.");
++    }
++
++    private static void testInvalidType(AccelSurface surface, int type) {
++        long ret = surface.getNativeResource(type);
++        System.out.printf("  getNativeResource(%d)=0x%x\n", type, ret);
++        if (ret != 0l) {
++            System.err.printf(
++                    "FAILED: surface.getNativeResource(%d) returned" +
++                    " 0x%s. It should have have returned 0L\n",
++                    type, ret);
++            failed = true;
++        }
++    }
++
++    private static void testD3DDeviceResourceField(final AccelSurface surface) {
++        try {
++            Class d3dc = Class.forName("sun.java2d.d3d.D3DSurfaceData");
++            if (d3dc.isInstance(surface)) {
++                Field f = d3dc.getDeclaredField("D3D_DEVICE_RESOURCE");
++                f.setAccessible(true);
++                int d3dDR = (Integer)f.get(null);
++
++                System.out.printf(
++                        "  getNativeResource(D3D_DEVICE_RESOURCE)=0x%x\n",
++                        surface.getNativeResource(d3dDR));
++            }
++        } catch (ClassNotFoundException e) {}
++        catch (IllegalAccessException e) {}
++        catch (NoSuchFieldException e) {
++            System.err.println("Failed: D3DSurfaceData.D3D_DEVICE_RESOURCE" +
++                               " field not found!");
++            failed = true;
++        }
++    }
++
++    private static void printSurface(Surface s) {
++        if (s instanceof AccelSurface) {
++            final AccelSurface surface = (AccelSurface) s;
++            System.out.println(" Accel Surface: ");
++            System.out.println("  type=" + surface.getType());
++            System.out.println("  bounds=" + surface.getBounds());
++            System.out.println("  nativeBounds=" + surface.getNativeBounds());
++            System.out.println("  isSurfaceLost=" + surface.isSurfaceLost());
++            System.out.println("  isValid=" + surface.isValid());
++            RenderQueue rq = surface.getContext().getRenderQueue();
++            rq.lock();
++            try {
++                rq.flushAndInvokeNow(new Runnable() {
++                    public void run() {
++                        System.out.printf("  getNativeResource(TEXTURE)=0x%x\n",
++                            surface.getNativeResource(TEXTURE));
++                        System.out.printf("  getNativeResource(RT_TEXTURE)=0x%x\n",
++                            surface.getNativeResource(RT_TEXTURE));
++                        System.out.printf("  getNativeResource(RT_PLAIN)=0x%x\n",
++                            surface.getNativeResource(RT_PLAIN));
++                        System.out.printf(
++                            "  getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
++                            surface.getNativeResource(FLIP_BACKBUFFER));
++
++                        testD3DDeviceResourceField(surface);
++
++                        testInvalidType(surface, -1);
++                        testInvalidType(surface, -150);
++                        testInvalidType(surface, 300);
++                        testInvalidType(surface, Integer.MAX_VALUE);
++                        testInvalidType(surface, Integer.MIN_VALUE);
++                    }
++                });
++            } finally {
++                rq.unlock();
++            }
++        } else {
++            System.out.println("null accelerated surface");
++        }
++    }
++
++    private static void printAGC(AccelGraphicsConfig agc) {
++        System.out.println("Accelerated Graphics Config: " + agc);
++        System.out.println("Capabilities:");
++        System.out.printf("AGC caps: 0x%x\n",
++                          agc.getContextCapabilities().getCaps());
++        System.out.println(agc.getContextCapabilities());
++    }
++
++    private static void testGC(GraphicsConfiguration gc) {
++        if (!(gc instanceof AccelGraphicsConfig)) {
++            System.out.println("Test passed: no hw accelerated configs found.");
++            return;
++        }
++        System.out.println("AccelGraphicsConfig exists, testing.");
++        AccelGraphicsConfig agc = (AccelGraphicsConfig) gc;
++        printAGC(agc);
++
++        testContext(agc);
++
++        VolatileImage vi = gc.createCompatibleVolatileImage(10, 10);
++        vi.validate(gc);
++        if (vi instanceof DestSurfaceProvider) {
++            System.out.println("Passed: VI is DestSurfaceProvider");
++            Surface s = ((DestSurfaceProvider) vi).getDestSurface();
++            if (s instanceof AccelSurface) {
++                System.out.println("Passed: Obtained Accel Surface");
++                printSurface((AccelSurface) s);
++            }
++            Graphics g = vi.getGraphics();
++            if (g instanceof DestSurfaceProvider) {
++                System.out.println("Passed: VI graphics is " +
++                                   "DestSurfaceProvider");
++                printSurface(((DestSurfaceProvider) g).getDestSurface());
++            }
++        } else {
++            System.out.println("VI is not DestSurfaceProvider");
++        }
++        testVICreation(agc, CAPS_RT_TEXTURE_ALPHA, TRANSLUCENT, RT_TEXTURE);
++        testVICreation(agc, CAPS_RT_TEXTURE_OPAQUE, OPAQUE, RT_TEXTURE);
++        testVICreation(agc, CAPS_RT_PLAIN_ALPHA, TRANSLUCENT, RT_PLAIN);
++        testVICreation(agc, agc.getContextCapabilities().getCaps(), OPAQUE,
++                       TEXTURE);
++        testForNPEDuringCreation(agc);
++    }
++
++    private static void testVICreation(AccelGraphicsConfig agc, int cap,
++                                       int transparency, int type)
++    {
++        int caps = agc.getContextCapabilities().getCaps();
++        int w = 11, h = 17;
++
++        VolatileImage vi =
++            agc.createCompatibleVolatileImage(w, h, transparency, type);
++        if ((cap & caps) != 0) {
++            if (vi == null) {
++                System.out.printf("Failed: cap=%d is supported but " +
++                                  "image wasn't created\n", cap);
++                throw new RuntimeException("Failed: image wasn't created " +
++                                           "for supported cap");
++            } else {
++                if (!(vi instanceof DestSurfaceProvider)) {
++                    throw new RuntimeException("Failed: created VI is not " +
++                                               "DestSurfaceProvider");
++                }
++                Surface s = ((DestSurfaceProvider) vi).getDestSurface();
++                if (s instanceof AccelSurface) {
++                    AccelSurface as = (AccelSurface) s;
++                    printSurface(as);
++                    if (as.getType() != type) {
++                        throw new RuntimeException("Failed: returned VI is" +
++                                " of incorrect type: " + as.getType() +
++                                " requested type=" + type);
++                    } else {
++                        System.out.printf("Passed: VI of type %d was " +
++                                "created for cap=%d\n", type, cap);
++                    }
++                    if (as.getType() == TEXTURE) {
++                        boolean ex = false;
++                        try {
++                            Graphics g = vi.getGraphics();
++                            g.dispose();
++                        } catch (UnsupportedOperationException e) {
++                            ex = true;
++                        }
++                        if (!ex) {
++                            throw new RuntimeException("Failed: " +
++                                "texture.getGraphics() didn't throw exception");
++                        } else {
++                            System.out.println("Passed: VI.getGraphics()" +
++                                    " threw exception for texture-based VI");
++                        }
++                    }
++                } else {
++                    System.out.printf("Passed: VI of type %d was " +
++                            "created for cap=%d but accel surface is null\n",
++                            type, cap);
++                }
++            }
++        } else {
++            if (vi != null) {
++                throw new RuntimeException("Failed: created VI for " +
++                                           "unsupported cap=" + cap);
++            }
++        }
++    }
++
++    private static void testContext(final AccelGraphicsConfig agc) {
++        BufferedContext c = agc.getContext();
++        final AccelDeviceEventListener l = new AccelDeviceEventListener() {
++            public void onDeviceDispose() {
++                System.out.println("onDeviceDispose invoked");
++                agc.removeDeviceEventListener(this);
++            }
++            public void onDeviceReset() {
++                System.out.println("onDeviceReset invoked");
++            }
++        };
++        agc.addDeviceEventListener(l);
++
++        RenderQueue rq = c.getRenderQueue();
++        rq.lock();
++        try {
++            c.saveState();
++            rq.flushNow();
++            c.restoreState();
++            rq.flushNow();
++            System.out.println("Passed: Save/Restore");
++        } finally {
++            rq.unlock();
++        }
++    }
++
++    private static void testForNPEDuringCreation(AccelGraphicsConfig agc) {
++        int iterations = 100;
++        HashSet<VolatileImage> vis = new HashSet<VolatileImage>();
++        GraphicsConfiguration gc = (GraphicsConfiguration)agc;
++        Rectangle r = gc.getBounds();
++        long ram = gc.getDevice().getAvailableAcceleratedMemory();
++        if (ram > 0) {
++            // guesstimate the number of iterations needed to exhaust vram
++            int i = 2 *
++                (int)(ram / (r.width * r.height * gc.getColorModel().getPixelSize()/8));
++            iterations = Math.max(iterations, i);
++            System.err.println("iterations="+iterations);
++        }
++        for (int i = 0; i < iterations; i++) {
++            VolatileImage vi =
++                agc.createCompatibleVolatileImage(r.width, r.height,
++                                                  Transparency.OPAQUE,
++                                                  AccelSurface.RT_PLAIN);
++            if (vi == null) {
++                break;
++            }
++            vis.add(vi);
++        }
++        for (VolatileImage vi : vis) {
++            vi.flush();
++        }
++        vis = null;
++
++        System.out.println("Passed: testing for possible NPEs " +
++                           "during VI creation");
++    }
++}
+diff -r f683aef58585 -r 6cf33f955d7d test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/pipe/hw/VSyncedBufferStrategyTest/VSyncedBufferStrategyTest.java	Fri Feb 04 16:32:49 2011 +0000
+@@ -0,0 +1,338 @@
++/*
++ * Copyright (c) 2007, 2008, 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 6678218 6681745 6691737
++ * @summary Tests that v-synced BufferStrategies works (if vsync is supported)
++ * @author Dmitri.Trembovetski@sun.com: area=Graphics
++ * @compile -XDignore.symbol.file=true VSyncedBufferStrategyTest.java
++ * @run main/manual/othervm VSyncedBufferStrategyTest
++ * @run main/manual/othervm -Dsun.java2d.opengl=True VSyncedBufferStrategyTest
++ */
++
++import java.awt.AWTException;
++import java.awt.BufferCapabilities;
++import java.awt.BufferCapabilities.FlipContents;
++import java.awt.Button;
++import java.awt.Canvas;
++import java.awt.Color;
++import java.awt.Dimension;
++import java.awt.EventQueue;
++import java.awt.FlowLayout;
++import java.awt.Font;
++import java.awt.Frame;
++import java.awt.Graphics;
++import java.awt.HeadlessException;
++import java.awt.ImageCapabilities;
++import java.awt.Panel;
++import java.awt.event.ActionEvent;
++import java.awt.event.ActionListener;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++import java.awt.image.BufferStrategy;
++import java.util.concurrent.CountDownLatch;
++import javax.swing.JButton;
++import javax.swing.JFrame;
++import javax.swing.JPanel;
++import javax.swing.JScrollPane;
++import javax.swing.JTextArea;
++
++public class VSyncedBufferStrategyTest extends Canvas implements Runnable {
++
++    private static final int BLOCK_W = 50;
++    private static final int BLOCK_H = 200;
++
++    BufferStrategy bs;
++    Thread renderThread;
++
++    int blockX = 10;
++    int blockY = 10;
++
++    private volatile boolean done = false;
++    private volatile boolean requestVSync;
++    private boolean currentBSVSynced;
++
++    public VSyncedBufferStrategyTest(boolean requestVSync) {
++        this.requestVSync = requestVSync;
++        this.currentBSVSynced = !requestVSync;
++        renderThread = new Thread(this);
++        renderThread.start();
++    }
++
++    private static final BufferCapabilities defaultBC =
++        new BufferCapabilities(
++                new ImageCapabilities(true),
++                new ImageCapabilities(true),
++                null);
++
++    private void createBS(boolean requestVSync) {
++        if (bs != null && requestVSync == currentBSVSynced) {
++            return;
++        }
++
++        BufferCapabilities bc = defaultBC;
++        if (requestVSync) {
++            bc = new sun.java2d.pipe.hw.ExtendedBufferCapabilities(
++                    new ImageCapabilities(true),
++                    new ImageCapabilities(true),
++                    FlipContents.COPIED,
++                    sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_ON);
++        }
++        try {
++            createBufferStrategy(2, bc);
++        } catch (AWTException e) {
++            System.err.println("Warning: cap is not supported: "+bc);
++            e.printStackTrace();
++            createBufferStrategy(2);
++        }
++        currentBSVSynced = requestVSync;
++        bs = getBufferStrategy();
++        String s =
++            getParent() instanceof Frame ?
++                ((Frame)getParent()).getTitle() : "parent";
++        System.out.println("Created BS for \"" + s + "\" frame, bs="+bs);
++    }
++
++    @Override
++    public void paint(Graphics g) {
++    }
++    @Override
++    public void update(Graphics g) {
++    }
++
++    @Override
++    public void run() {
++        while (!isShowing()) {
++            try { Thread.sleep(5); } catch (InterruptedException e) {}
++        }
++        try { Thread.sleep(2000); } catch (InterruptedException e) {}
++
++        try {
++            while (!done && isShowing()) {
++                createBS(requestVSync);
++                do {
++                    step();
++                    Graphics g = bs.getDrawGraphics();
++                    render(g);
++                    if (!bs.contentsRestored()) {
++                        bs.show();
++                    }
++                } while (bs.contentsLost());
++                Thread.yield();
++            }
++        } catch (Throwable e) {
++            // since we're not bothering with proper synchronization, exceptions
++            // may be thrown when the frame is closed
++            if (isShowing()) {
++                throw new RuntimeException(e);
++            }
++        }
++    }
++
++    int inc = 5;
++    private void step() {
++        blockX += inc;
++        if (blockX > getWidth() - BLOCK_W - 10) {
++            inc = -inc;
++            blockX += inc;
++        }
++        if (blockX < 10) {
++            inc = -inc;
++            blockX += inc;
++        }
++    }
++
++    private void render(Graphics g) {
++        g.setColor(Color.white);
++        g.fillRect(0, 0, getWidth(), getHeight());
++
++        g.setColor(Color.black);
++        g.fillRect(blockX, blockY, BLOCK_W, BLOCK_H);
++    }
++
++    private void setRequestVSync(boolean reqVSync) {
++        requestVSync = reqVSync;
++    }
++
++    @Override
++    public Dimension getPreferredSize() {
++        return new Dimension(BLOCK_W*10+20, BLOCK_H+20);
++    }
++
++    private static int frameNum = 0;
++    private static Frame createAndShowBSFrame() {
++        final Frame f = new Frame("Not V-Synced");
++
++        int myNum;
++        synchronized (VSyncedBufferStrategyTest.class) {
++            myNum = frameNum++;
++        }
++
++        final VSyncedBufferStrategyTest component =
++                new VSyncedBufferStrategyTest(false);
++        f.setIgnoreRepaint(true);
++        f.add("Center", component);
++
++        Panel p = new Panel();
++
++        Button b = new Button("Request VSync");
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                f.setTitle("Possibly V-Synced");
++                component.setRequestVSync(true);
++            }
++        });
++        p.add(b);
++
++        b = new Button("Relinquish VSync");
++        b.addActionListener(new ActionListener() {
++            int inc = 1;
++            public void actionPerformed(ActionEvent e) {
++                f.setTitle("Not V-Synced");
++                component.setRequestVSync(false);
++                f.setSize(f.getWidth()+inc, f.getHeight());
++                inc = -inc;
++            }
++        });
++        p.add(b);
++
++        f.add("South", p);
++
++        f.pack();
++        f.setLocation(10, myNum * f.getHeight());
++        f.setVisible(true);
++        f.addWindowListener(new WindowAdapter() {
++            @Override
++            public void windowClosing(WindowEvent e) {
++                component.done = true;
++                f.dispose();
++            }
++            @Override
++            public void windowClosed(WindowEvent e) {
++                component.done = true;
++            }
++        });
++
++        return f;
++    }
++
++    private static final String description =
++        "Tests that v-synced BufferStrategy works. Note that it in some\n" +
++        "cases the v-sync can not be enabled, and it is accepted.\n" +
++        "The following however is true: only one buffer strategy at a time can\n"+
++        "be created v-synced. In order for other BS to become v-synced, the one\n"+
++        "that currently is v-synched (or its window) needs to be disposed.\n" +
++        "Try the following scenarios:\n" +
++        "  - click the \"Request VSync\" button in one of the frames. If the\n"+
++        "    behavior of the animation changes - the animation becomes smooth\n" +
++        "    it had successfully created a v-synced BS. Note that the animation\n" +
++        "    in other frames may also become smoother - this is a side-effect\n"+
++        "    of one of the BS-es becoming v-synched\n" +
++        "  - click the \"Relinquish VSync\" button on the same frame. If the\n"+
++        "    behavior changes to the original (tearing)- it had successfully\n" +
++        "    created a non-vsynced strategy.\n" +
++        "  - next, try making another one v-synced. It should succeed.\n" +
++        "  - next, try making another one v-synced - while there's already\n" +
++        "    a v-synced frame. It should not succeed - meaning, it shouldn't\n" +
++        "    appear to become smoother, and the behavior of the current v-synced\n" +
++        "    frame shouldn't change.\n" +
++        "\n" +
++        "If there aren't any BufferStrategy-related exceptions or other\n" +
++        "issues, and the scenarios worked, the test passed, otherwise it\n"+
++        "failed.\n";
++
++    private static void createAndShowDescGUI(final Frame f3, final Frame f1,
++                                             final Frame f2)
++        throws HeadlessException, RuntimeException
++    {
++        final JFrame desc =
++            new JFrame("VSyncedBufferStrategyTest - Description");
++        desc.addWindowListener(new WindowAdapter() {
++
++            @Override
++            public void windowClosing(WindowEvent e) {
++                f1.dispose();
++                f2.dispose();
++                f3.dispose();
++                l.countDown();
++            }
++        });
++        JPanel p = new JPanel();
++        JButton bPassed = new JButton("Passed");
++        bPassed.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                desc.dispose();
++                f1.dispose();
++                f2.dispose();
++                f3.dispose();
++                l.countDown();
++            }
++        });
++        JButton bFailed = new JButton("Failed");
++        bFailed.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                failed = true;
++                desc.dispose();
++                f1.dispose();
++                f2.dispose();
++                f3.dispose();
++                l.countDown();
++            }
++        });
++        p.setLayout(new FlowLayout());
++        p.add(bPassed);
++        p.add(bFailed);
++        JTextArea ta = new JTextArea(24, 75);
++        ta.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
++        ta.setEditable(false);
++        ta.setText(description);
++        desc.add("Center", new JScrollPane(ta));
++        desc.add("South", p);
++        desc.pack();
++        desc.setLocation(BLOCK_W*10+50, 0);
++        desc.setVisible(true);
++    }
++
++    private static void createTestFrames() {
++        Frame f1 = createAndShowBSFrame();
++        Frame f2 = createAndShowBSFrame();
++        Frame f3 = createAndShowBSFrame();
++        createAndShowDescGUI(f1, f2, f3);
++    }
++
++    static boolean failed = false;
++    static CountDownLatch l = new CountDownLatch(1);
++    public static void main(String[] args) throws Exception {
++        EventQueue.invokeLater(new Runnable() {
++            public void run() {
++                createTestFrames();
++            }
++        });
++        l.await();
++        if (failed) {
++            throw new RuntimeException("Test FAILED");
++        }
++        System.out.println("Test PASSED");
++    }
++
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6728834-blurred-lcd-aa-text.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,226 @@
+# HG changeset patch
+# User tdv
+# Date 1217874568 25200
+# Node ID a56641c1f54e4a81a42ca755a952fd772c14a511
+# Parent  e62bc7b05b8a7cd11d7e76f1c29cf07f0c3c7d34
+6728834: D3D/OGL: LCD AA text becomes bold and blurred when rendering to a non-opaque destination
+Reviewed-by: campbell
+
+diff -r e62bc7b05b8a -r a56641c1f54e src/share/classes/sun/java2d/opengl/OGLSurfaceData.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	Mon Aug 04 18:50:43 2008 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/opengl/OGLSurfaceData.java	Mon Aug 04 11:29:28 2008 -0700
+@@ -401,6 +401,7 @@
+      *   - the fragment shader extension is available, and
+      *   - blending is disabled, and
+      *   - the source color is opaque
++     *   - and the destination is opaque
+      *
+      * Eventually, we could enhance the native OGL text rendering code
+      * and remove the above restrictions, but that would require significantly
+@@ -410,7 +411,8 @@
+         return
+             graphicsConfig.isCapPresent(CAPS_EXT_LCD_SHADER) &&
+             sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
+-            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR;
++            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR &&
++            sg2d.surfaceData.getTransparency() == Transparency.OPAQUE;
+     }
+ 
+     public void validatePipe(SunGraphics2D sg2d) {
+diff -r e62bc7b05b8a -r a56641c1f54e src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
+--- openjdk.orig/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Mon Aug 04 18:50:43 2008 +0400
++++ openjdk/jdk/src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java	Mon Aug 04 11:29:28 2008 -0700
+@@ -501,12 +501,14 @@
+      *   - the pixel shaders are available, and
+      *   - blending is disabled, and
+      *   - the source color is opaque
++     *   - and the destination is opaque
+      */
+     public boolean canRenderLCDText(SunGraphics2D sg2d) {
+         return
+             graphicsDevice.isCapPresent(CAPS_LCD_SHADER) &&
+             sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
+-            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR;
++            sg2d.paintState <= SunGraphics2D.PAINT_OPAQUECOLOR   &&
++            sg2d.surfaceData.getTransparency() == Transparency.OPAQUE;
+     }
+ 
+     public void validatePipe(SunGraphics2D sg2d) {
+diff -r e62bc7b05b8a -r a56641c1f54e test/sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java	Mon Aug 04 11:29:28 2008 -0700
+@@ -0,0 +1,174 @@
++/*
++ * Copyright 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.
++ */
++
++/*
++ * @test
++ * @bug 6728834
++ * @summary Tests that LCD AA text rendering works properly with destinations
++ * being VolatileImage of all transparency types
++ * @author Dmitri.Trembovetski: area=Graphics
++ * @run main/manual/othervm NonOpaqueDestLCDAATest
++ * @run main/manual/othervm -Dsun.java2d.opengl=True NonOpaqueDestLCDAATest
++ */
++
++import java.awt.AlphaComposite;
++import java.awt.Color;
++import java.awt.Dimension;
++import java.awt.EventQueue;
++import java.awt.Graphics;
++import java.awt.Graphics2D;
++import java.awt.GraphicsConfiguration;
++import java.awt.RenderingHints;
++import java.awt.event.ActionEvent;
++import java.awt.event.ActionListener;
++import java.awt.event.ComponentAdapter;
++import java.awt.event.ComponentEvent;
++import java.awt.event.WindowAdapter;
++import java.awt.event.WindowEvent;
++import java.awt.image.VolatileImage;
++import java.io.File;
++import java.util.concurrent.CountDownLatch;
++import javax.imageio.ImageIO;
++import javax.swing.JButton;
++import javax.swing.JFrame;
++import javax.swing.JPanel;
++import javax.swing.JTextArea;
++import static java.awt.Transparency.*;
++
++public class NonOpaqueDestLCDAATest extends JFrame implements ActionListener {
++    private static volatile boolean passed = true;
++    private static CountDownLatch complete = new CountDownLatch(1);
++
++    public NonOpaqueDestLCDAATest() {
++        JTextArea desc = new JTextArea();
++        desc.setText(
++            "\n  Instructions: the three text strings below should appear\n" +
++            "  readable, without smudges or misshapen bold glyphs.\n\n" +
++            "  If they look fine the test PASSED otherwise it FAILED.\n");
++        desc.setEditable(false);
++        desc.setBackground(Color.black);
++        desc.setForeground(Color.green);
++        add("North", desc);
++        JPanel renderPanel = new JPanel() {
++            public void paintComponent(Graphics g) {
++                render(g, getWidth(), getHeight());
++            }
++        };
++        renderPanel.setPreferredSize(new Dimension(350, 150));
++        renderPanel.addComponentListener(new ComponentAdapter() {
++            public void componentResized(ComponentEvent e) {
++                images = null;
++            }
++        });
++        add("Center", renderPanel);
++
++        JButton passed = new JButton("Passed");
++        JButton failed = new JButton("Failed");
++        passed.addActionListener(this);
++        failed.addActionListener(this);
++        JPanel p = new JPanel();
++        p.add(passed);
++        p.add(failed);
++        add("South", p);
++        addWindowListener(new WindowAdapter() {
++            public void windowClosing(WindowEvent e) {
++                complete.countDown();
++            }
++        });
++        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
++    }
++
++    public void render(Graphics g, int w, int h) {
++        initImages(w, h);
++
++        Graphics2D g2d = (Graphics2D) g.create();
++        for (VolatileImage vi : images) {
++            g2d.drawImage(vi, 0, 0, null);
++            g2d.translate(0, vi.getHeight());
++        }
++    }
++
++    String tr[] = { "OPAQUE", "BITMASK", "TRANSLUCENT" };
++    public void actionPerformed(ActionEvent e) {
++        if (e.getActionCommand().equals("Passed")) {
++            passed = true;
++            System.out.println("Test Passed");
++        } else if (e.getActionCommand().equals("Failed")) {
++            System.out.println("Test Failed");
++            for (int i = 0; i < images.length; i++) {
++                String f = "NonOpaqueDestLCDAATest_"+tr[i]+".png";
++                try {
++                    ImageIO.write(images[i].getSnapshot(), "png", new File(f));
++                    System.out.printf("Dumped %s image to %s\n", tr[i], f);
++                } catch (Throwable t) {}
++            }
++            passed = false;
++        }
++        dispose();
++        complete.countDown();
++    }
++
++    static void clear(Graphics2D  g, int w, int h) {
++        Graphics2D gg = (Graphics2D) g.create();
++        gg.setColor(new Color(0, 0, 0, 0));
++        gg.setComposite(AlphaComposite.Src);
++        gg.fillRect(0, 0, w, h);
++    }
++
++    VolatileImage images[];
++    private void initImages(int w, int h) {
++        if (images == null) {
++            images = new VolatileImage[3];
++            GraphicsConfiguration gc = getGraphicsConfiguration();
++            for (int i = OPAQUE; i <= TRANSLUCENT; i++) {
++                VolatileImage vi =
++                    gc.createCompatibleVolatileImage(w,h/3,i);
++                images[i-1] = vi;
++                vi.validate(gc);
++                Graphics2D g2d = (Graphics2D) vi.getGraphics();
++                if (i > OPAQUE) {
++                    clear(g2d, vi.getWidth(), vi.getHeight());
++                }
++                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
++                        RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
++                String s = "LCD AA Text rendered to "+tr[i-1]+ " destination";
++                g2d.drawString(s, 10, vi.getHeight()/2);
++            }
++        }
++    }
++
++    public static void main(String[] args) throws InterruptedException {
++        EventQueue.invokeLater(new Runnable() {
++            public void run() {
++                NonOpaqueDestLCDAATest t = new NonOpaqueDestLCDAATest();
++                t.pack();
++                t.setVisible(true);
++            }
++        });
++
++        complete.await();
++        if (!passed) {
++            throw new RuntimeException("Test Failed!");
++        }
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6736649-text_bearings.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,112 @@
+# HG changeset patch
+# User mlapshin
+# Date 1219738583 -14400
+# Node ID e78c2f17a60646b8198279b2f676712094b833a0
+# Parent  c9d407ab230941d41025428b25bc5d787cf7c18f
+6736649: test/closed/javax/swing/JMenuItem/6458123/ManualBug6458123.java fails on Linux
+Summary: Now text bearings are taken into account when labelRect width is calculated
+Reviewed-by: alexp
+
+diff -r c9d407ab2309 -r e78c2f17a606 src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java
+--- openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java	Tue Aug 12 17:59:58 2008 -0700
++++ openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java	Tue Aug 26 12:16:23 2008 +0400
+@@ -136,7 +136,7 @@
+ 
+         // accRect
+         if (!getAccText().equals("")) {
+-            getAccSize().setWidth(accGu.computeStringWidth(getAccContext(),
++             getAccSize().setWidth(accGu.computeStringWidth(getAccContext(),
+                     getAccFontMetrics().getFont(), getAccFontMetrics(),
+                     getAccText()));
+             getAccSize().setHeight(getAccFontMetrics().getHeight());
+@@ -195,6 +195,7 @@
+                     getHorizontalAlignment(), getVerticalAlignment(),
+                     getHorizontalTextPosition(), getVerticalTextPosition(),
+                     getViewRect(), iconRect, textRect, getGap());
++            textRect.width += getLeftTextExtraWidth() + getRightTextExtraWidth();
+             Rectangle labelRect = iconRect.union(textRect);
+             getLabelSize().setHeight(labelRect.height);
+             getLabelSize().setWidth(labelRect.width);
+diff -r c9d407ab2309 -r e78c2f17a606 src/share/classes/sun/swing/MenuItemLayoutHelper.java
+--- openjdk/jdk/src/share/classes/sun/swing/MenuItemLayoutHelper.java	Tue Aug 12 17:59:58 2008 -0700
++++ openjdk/jdk/src/share/classes/sun/swing/MenuItemLayoutHelper.java	Tue Aug 26 12:16:23 2008 +0400
+@@ -83,6 +83,9 @@
+     private int afterCheckIconGap;
+     private int minTextOffset;
+ 
++    private int leftTextExtraWidth;
++    private int rightTextExtraWidth;
++
+     private Rectangle viewRect;
+ 
+     private RectSize iconSize;
+@@ -143,6 +146,7 @@
+         this.checkSize = new RectSize();
+         this.arrowSize = new RectSize();
+         this.labelSize = new RectSize();
++        calcExtraWidths();
+         calcWidthsAndHeights();
+         setOriginalWidths();
+         calcMaxWidths();
+@@ -151,6 +155,29 @@
+         calcMaxTextOffset(viewRect);
+     }
+ 
++    private void calcExtraWidths() {
++        leftTextExtraWidth = getLeftExtraWidth(text);
++        rightTextExtraWidth = getRightExtraWidth(text);
++    }
++
++    private int getLeftExtraWidth(String str) {
++        int lsb = SwingUtilities2.getLeftSideBearing(mi, fm, str);
++        if (lsb < 0) {
++            return -lsb;
++        } else {
++            return 0;
++        }
++    }
++
++    private int getRightExtraWidth(String str) {
++        int rsb = SwingUtilities2.getRightSideBearing(mi, fm, str);
++        if (rsb > 0) {
++            return rsb;
++        } else {
++            return 0;
++        }
++    }
++
+     private void setOriginalWidths() {
+         iconSize.origWidth = iconSize.width;
+         textSize.origWidth = textSize.width;
+@@ -286,6 +313,7 @@
+                     verticalAlignment, horizontalAlignment,
+                     verticalTextPosition, horizontalTextPosition,
+                     viewRect, iconRect, textRect, gap);
++            textRect.width += leftTextExtraWidth + rightTextExtraWidth;
+             Rectangle labelRect = iconRect.union(textRect);
+             labelSize.height = labelRect.height;
+             labelSize.width = labelRect.width;
+@@ -727,7 +755,7 @@
+         }
+     }
+ 
+-    /**
++   /**
+      * Sets Y coordinates of text and icon
+      * taking into account the vertical alignment
+      */
+@@ -1089,6 +1117,14 @@
+         this.labelSize = labelSize;
+     }
+ 
++    public int getLeftTextExtraWidth() {
++        return leftTextExtraWidth;
++    }
++
++    public int getRightTextExtraWidth() {
++        return rightTextExtraWidth;
++    }
++
+     /**
+      * Returns false if the component is a JMenu and it is a top
+      * level menu (on the menubar).
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6749060-bad-lcd-aa-non-opaque-dest.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,219 @@
+# HG changeset patch
+# User tdv
+# Date 1223597570 25200
+# Node ID 3bc4d79d8123bbc0307e0e58f7c64ee663e25af9
+# Parent  41ff3f84cd9608ef1b4ecd0a823a8ff188712784
+6749060: LCD AA text rendered incorrectly when destination is non opaque (sw pipeline only)
+Reviewed-by: campbell, prr
+
+diff -r 41ff3f84cd96 -r 3bc4d79d8123 src/share/classes/sun/java2d/SurfaceData.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceData.java	Wed Sep 24 11:58:21 2008 -0700
++++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java	Thu Oct 09 17:12:50 2008 -0700
+@@ -449,7 +449,8 @@
+         // For now the answer can only be true in the following cases:
+         if (sg2d.compositeState <= SunGraphics2D.COMP_ISCOPY &&
+             sg2d.paintState <= SunGraphics2D.PAINT_ALPHACOLOR &&
+-            sg2d.clipState <= SunGraphics2D.CLIP_RECTANGULAR)
++            sg2d.clipState <= SunGraphics2D.CLIP_RECTANGULAR &&
++            sg2d.surfaceData.getTransparency() == Transparency.OPAQUE)
+         {
+             if (haveLCDLoop == LCDLOOP_UNKNOWN) {
+                 DrawGlyphListLCD loop =
+diff -r 41ff3f84cd96 -r 3bc4d79d8123 test/sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java
+--- openjdk.orig/jdk/test/sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java	Wed Sep 24 11:58:21 2008 -0700
++++ openjdk/jdk/test/sun/java2d/DirectX/NonOpaqueDestLCDAATest/NonOpaqueDestLCDAATest.java	Thu Oct 09 17:12:50 2008 -0700
+@@ -23,10 +23,11 @@
+ 
+ /*
+  * @test
+- * @bug 6728834
++ * @bug 6728834 6749060
+  * @summary Tests that LCD AA text rendering works properly with destinations
+  * being VolatileImage of all transparency types
+  * @author Dmitri.Trembovetski: area=Graphics
++ * @run main/manual/othervm -Dsun.java2d.d3d=false NonOpaqueDestLCDAATest
+  * @run main/manual/othervm NonOpaqueDestLCDAATest
+  * @run main/manual/othervm -Dsun.java2d.opengl=True NonOpaqueDestLCDAATest
+  */
+@@ -35,9 +36,11 @@
+ import java.awt.Color;
+ import java.awt.Dimension;
+ import java.awt.EventQueue;
++import java.awt.Font;
+ import java.awt.Graphics;
+ import java.awt.Graphics2D;
+ import java.awt.GraphicsConfiguration;
++import java.awt.Image;
+ import java.awt.RenderingHints;
+ import java.awt.event.ActionEvent;
+ import java.awt.event.ActionListener;
+@@ -45,6 +48,7 @@
+ import java.awt.event.ComponentEvent;
+ import java.awt.event.WindowAdapter;
+ import java.awt.event.WindowEvent;
++import java.awt.image.BufferedImage;
+ import java.awt.image.VolatileImage;
+ import java.io.File;
+ import java.util.concurrent.CountDownLatch;
+@@ -62,35 +66,43 @@
+     public NonOpaqueDestLCDAATest() {
+         JTextArea desc = new JTextArea();
+         desc.setText(
+-            "\n  Instructions: the three text strings below should appear\n" +
+-            "  readable, without smudges or misshapen bold glyphs.\n\n" +
+-            "  If they look fine the test PASSED otherwise it FAILED.\n");
++            "\n  Instructions: the three text strings below should appear" +
++            "  readable, without smudges or misshapen bold glyphs.\n" +
++            "  You may need a magnifier to notice some bad colorfringing in "+
++            "  in SW Translucent case, especially in vertical stems.\n\n"+
++            "  Basically text rendered to TRANSLUCENT destination should look"+
++            "  similar to one rendered to OPAQUE - it may differ in whether or" +
++            "  not it's LCD, but it should look 'correct'\n\n"+
++            "If the text looks fine the test PASSED otherwise it FAILED.\n");
+         desc.setEditable(false);
+         desc.setBackground(Color.black);
+         desc.setForeground(Color.green);
+         add("North", desc);
+         JPanel renderPanel = new JPanel() {
++            @Override
+             public void paintComponent(Graphics g) {
+                 render(g, getWidth(), getHeight());
+             }
+         };
+-        renderPanel.setPreferredSize(new Dimension(350, 150));
++        renderPanel.setPreferredSize(new Dimension(1024, 650));
+         renderPanel.addComponentListener(new ComponentAdapter() {
++            @Override
+             public void componentResized(ComponentEvent e) {
+                 images = null;
+             }
+         });
+         add("Center", renderPanel);
+ 
+-        JButton passed = new JButton("Passed");
+-        JButton failed = new JButton("Failed");
+-        passed.addActionListener(this);
+-        failed.addActionListener(this);
++        JButton passedBtn = new JButton("Passed");
++        JButton failedBtn = new JButton("Failed");
++        passedBtn.addActionListener(this);
++        failedBtn.addActionListener(this);
+         JPanel p = new JPanel();
+-        p.add(passed);
+-        p.add(failed);
++        p.add(passedBtn);
++        p.add(failedBtn);
+         add("South", p);
+         addWindowListener(new WindowAdapter() {
++            @Override
+             public void windowClosing(WindowEvent e) {
+                 complete.countDown();
+             }
+@@ -101,14 +113,18 @@
+     public void render(Graphics g, int w, int h) {
+         initImages(w, h);
+ 
++        g.setColor(new Color(0xAD, 0xD8, 0xE6));
++        g.fillRect(0, 0, w, h);
++
+         Graphics2D g2d = (Graphics2D) g.create();
+-        for (VolatileImage vi : images) {
+-            g2d.drawImage(vi, 0, 0, null);
+-            g2d.translate(0, vi.getHeight());
++        for (Image im : images) {
++            g2d.drawImage(im, 0, 0, null);
++            g2d.translate(0, im.getHeight(null));
+         }
+     }
+ 
+     String tr[] = { "OPAQUE", "BITMASK", "TRANSLUCENT" };
++    @Override
+     public void actionPerformed(ActionEvent e) {
+         if (e.getActionCommand().equals("Passed")) {
+             passed = true;
+@@ -116,9 +132,17 @@
+         } else if (e.getActionCommand().equals("Failed")) {
+             System.out.println("Test Failed");
+             for (int i = 0; i < images.length; i++) {
+-                String f = "NonOpaqueDestLCDAATest_"+tr[i]+".png";
++                String f = "NonOpaqueDestLCDAATest_"+tr[i];
+                 try {
+-                    ImageIO.write(images[i].getSnapshot(), "png", new File(f));
++                    if (images[i] instanceof VolatileImage) {
++                        f += "_vi.png";
++                        ImageIO.write(((VolatileImage)images[i]).
++                                getSnapshot(), "png", new File(f));
++                    } else {
++                        f += "_bi.png";
++                        ImageIO.write((BufferedImage)images[i],
++                                       "png", new File(f));
++                    }
+                     System.out.printf("Dumped %s image to %s\n", tr[i], f);
+                 } catch (Throwable t) {}
+             }
+@@ -128,37 +152,51 @@
+         complete.countDown();
+     }
+ 
+-    static void clear(Graphics2D  g, int w, int h) {
++    static void clear(Graphics2D  g, int type, int w, int h) {
+         Graphics2D gg = (Graphics2D) g.create();
+-        gg.setColor(new Color(0, 0, 0, 0));
+-        gg.setComposite(AlphaComposite.Src);
++        if (type > OPAQUE) {
++            gg.setColor(new Color(0, 0, 0, 0));
++            gg.setComposite(AlphaComposite.Src);
++        } else {
++            gg.setColor(new Color(0xAD, 0xD8, 0xE6));
++        }
+         gg.fillRect(0, 0, w, h);
+     }
+ 
+-    VolatileImage images[];
++    private void render(Image im, int type, String s) {
++        Graphics2D g2d = (Graphics2D) im.getGraphics();
++        clear(g2d, type, im.getWidth(null), im.getHeight(null));
++        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
++                RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
++        Font f = new Font("Dialog", Font.BOLD, 40);// g2d.getFont().deriveFont(32.0f);
++        g2d.setColor(Color.white);
++        g2d.setFont(g2d.getFont().deriveFont(36.0f));
++        g2d.drawString(s, 10, im.getHeight(null) / 2);
++    }
++
++    Image images[];
+     private void initImages(int w, int h) {
+         if (images == null) {
+-            images = new VolatileImage[3];
++            images = new Image[6];
+             GraphicsConfiguration gc = getGraphicsConfiguration();
+             for (int i = OPAQUE; i <= TRANSLUCENT; i++) {
+                 VolatileImage vi =
+-                    gc.createCompatibleVolatileImage(w,h/3,i);
++                    gc.createCompatibleVolatileImage(w,h/images.length,i);
+                 images[i-1] = vi;
+                 vi.validate(gc);
+-                Graphics2D g2d = (Graphics2D) vi.getGraphics();
+-                if (i > OPAQUE) {
+-                    clear(g2d, vi.getWidth(), vi.getHeight());
+-                }
+-                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
+-                        RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
+-                String s = "LCD AA Text rendered to "+tr[i-1]+ " destination";
+-                g2d.drawString(s, 10, vi.getHeight()/2);
++                String s = "LCD AA Text rendered to " + tr[i - 1] + " HW destination";
++                render(vi, i, s);
++
++                s = "LCD AA Text rendered to " + tr[i - 1] + " SW destination";
++                images[i-1+3] = gc.createCompatibleImage(w, h/images.length, i);
++                render(images[i-1+3], i, s);
+             }
+         }
+     }
+ 
+     public static void main(String[] args) throws InterruptedException {
+         EventQueue.invokeLater(new Runnable() {
++            @Override
+             public void run() {
+                 NonOpaqueDestLCDAATest t = new NonOpaqueDestLCDAATest();
+                 t.pack();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6797139-jbutton_truncation.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,610 @@
+# HG changeset patch
+# User alexp
+# Date 1251899239 -14400
+# Node ID 281fbd82a971f05fcf6f2c31cfe7db7ef74909e9
+# Parent  935814bd43a62d1b2c6871f0298c5b59fbf54428
+6797139: JButton title is truncating for some strings irrespective of preferred size.
+Reviewed-by: peterz
+
+diff -r 935814bd43a6 -r 281fbd82a971 src/share/classes/javax/swing/SwingUtilities.java
+--- openjdk/jdk/src/share/classes/javax/swing/SwingUtilities.java	Tue Sep 01 18:51:15 2009 +0400
++++ openjdk/jdk/src/share/classes/javax/swing/SwingUtilities.java	Wed Sep 02 17:47:19 2009 +0400
+@@ -999,24 +999,20 @@
+                 textR.height = (int) v.getPreferredSpan(View.Y_AXIS);
+             } else {
+                 textR.width = SwingUtilities2.stringWidth(c, fm, text);
+-
+-                // Take into account the left and right side bearings.
+-                // This gives more space than it is actually needed,
+-                // but there are two reasons:
+-                // 1. If we set the width to the actual bounds,
+-                //    all callers would have to account for the bearings
+-                //    themselves. NOTE: all pref size calculations don't do it.
+-                // 2. You can do a drawString at the returned location
+-                //    and the text won't be clipped.
+                 lsb = SwingUtilities2.getLeftSideBearing(c, fm, text);
+                 if (lsb < 0) {
++                    // If lsb is negative, add it to the width and later
++                    // adjust the x location. This gives more space than is
++                    // actually needed.
++                    // This is done like this for two reasons:
++                    // 1. If we set the width to the actual bounds all
++                    //    callers would have to account for negative lsb
++                    //    (pref size calculations ONLY look at width of
++                    //    textR)
++                    // 2. You can do a drawString at the returned location
++                    //    and the text won't be clipped.
+                     textR.width -= lsb;
+                 }
+-                rsb = SwingUtilities2.getRightSideBearing(c, fm, text);
+-                if (rsb > 0) {
+-                    textR.width += rsb;
+-                }
+-
+                 if (textR.width > availTextWidth) {
+                     text = SwingUtilities2.clipString(c, fm, text,
+                                                       availTextWidth);
+diff -r 935814bd43a6 -r 281fbd82a971 src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java
+--- openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java	Tue Sep 01 18:51:15 2009 +0400
++++ openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthMenuItemLayoutHelper.java	Wed Sep 02 17:47:19 2009 +0400
+@@ -195,7 +195,7 @@
+                     getHorizontalAlignment(), getVerticalAlignment(),
+                     getHorizontalTextPosition(), getVerticalTextPosition(),
+                     getViewRect(), iconRect, textRect, getGap());
+-            textRect.width += getLeftTextExtraWidth() + getRightTextExtraWidth();
++            textRect.width += getLeftTextExtraWidth();
+             Rectangle labelRect = iconRect.union(textRect);
+             getLabelSize().setHeight(labelRect.height);
+             getLabelSize().setWidth(labelRect.width);
+diff -r 935814bd43a6 -r 281fbd82a971 src/share/classes/sun/swing/MenuItemLayoutHelper.java
+--- openjdk/jdk/src/share/classes/sun/swing/MenuItemLayoutHelper.java	Tue Sep 01 18:51:15 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/swing/MenuItemLayoutHelper.java	Wed Sep 02 17:47:19 2009 +0400
+@@ -84,7 +84,6 @@
+     private int minTextOffset;
+ 
+     private int leftTextExtraWidth;
+-    private int rightTextExtraWidth;
+ 
+     private Rectangle viewRect;
+ 
+@@ -157,7 +156,6 @@
+ 
+     private void calcExtraWidths() {
+         leftTextExtraWidth = getLeftExtraWidth(text);
+-        rightTextExtraWidth = getRightExtraWidth(text);
+     }
+ 
+     private int getLeftExtraWidth(String str) {
+@@ -169,15 +167,6 @@
+         }
+     }
+ 
+-    private int getRightExtraWidth(String str) {
+-        int rsb = SwingUtilities2.getRightSideBearing(mi, fm, str);
+-        if (rsb > 0) {
+-            return rsb;
+-        } else {
+-            return 0;
+-        }
+-    }
+-
+     private void setOriginalWidths() {
+         iconSize.origWidth = iconSize.width;
+         textSize.origWidth = textSize.width;
+@@ -313,7 +302,7 @@
+                     verticalAlignment, horizontalAlignment,
+                     verticalTextPosition, horizontalTextPosition,
+                     viewRect, iconRect, textRect, gap);
+-            textRect.width += leftTextExtraWidth + rightTextExtraWidth;
++            textRect.width += leftTextExtraWidth;
+             Rectangle labelRect = iconRect.union(textRect);
+             labelSize.height = labelRect.height;
+             labelSize.width = labelRect.width;
+@@ -1121,10 +1110,6 @@
+         return leftTextExtraWidth;
+     }
+ 
+-    public int getRightTextExtraWidth() {
+-        return rightTextExtraWidth;
+-    }
+-
+     /**
+      * Returns false if the component is a JMenu and it is a top
+      * level menu (on the menubar).
+diff -r 935814bd43a6 -r 281fbd82a971 src/share/classes/sun/swing/SwingUtilities2.java
+--- openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Tue Sep 01 18:51:15 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Wed Sep 02 17:47:19 2009 +0400
+@@ -27,7 +27,6 @@
+ 
+ import java.security.*;
+ import java.lang.reflect.*;
+-import java.lang.ref.SoftReference;
+ import java.awt.*;
+ import static java.awt.RenderingHints.*;
+ import java.awt.event.*;
+@@ -78,17 +77,23 @@
+     public static final Object LAF_STATE_KEY =
+             new StringBuffer("LookAndFeel State");
+ 
+-    // Most of applications use 10 or less fonts simultaneously
+-    private static final int STRONG_BEARING_CACHE_SIZE = 10;
+-    // Strong cache for the left and right side bearings
+-    // for STRONG_BEARING_CACHE_SIZE most recently used fonts.
+-    private static BearingCacheEntry[] strongBearingCache =
+-            new BearingCacheEntry[STRONG_BEARING_CACHE_SIZE];
+-    // Next index to insert an entry into the strong bearing cache
+-    private static int strongBearingCacheNextIndex = 0;
+-    // Soft cache for the left and right side bearings
+-    private static Set<SoftReference<BearingCacheEntry>> softBearingCache =
+-            new HashSet<SoftReference<BearingCacheEntry>>();
++    // Maintain a cache of CACHE_SIZE fonts and the left side bearing
++     // of the characters falling into the range MIN_CHAR_INDEX to
++     // MAX_CHAR_INDEX. The values in fontCache are created as needed.
++     private static LSBCacheEntry[] fontCache;
++     // Windows defines 6 font desktop properties, we will therefore only
++     // cache the metrics for 6 fonts.
++     private static final int CACHE_SIZE = 6;
++     // nextIndex in fontCache to insert a font into.
++     private static int nextIndex;
++     // LSBCacheEntry used to search in fontCache to see if we already
++     // have an entry for a particular font
++     private static LSBCacheEntry searchKey;
++
++     // getLeftSideBearing will consult all characters that fall in the
++     // range MIN_CHAR_INDEX to MAX_CHAR_INDEX.
++     private static final int MIN_CHAR_INDEX = (int)'W';
++     private static final int MAX_CHAR_INDEX = (int)'W' + 1;
+ 
+     public static final FontRenderContext DEFAULT_FRC =
+         new FontRenderContext(null, false, false);
+@@ -183,6 +188,10 @@
+     private static final Object charsBufferLock = new Object();
+     private static char[] charsBuffer = new char[CHAR_BUFFER_SIZE];
+ 
++    static {
++        fontCache = new LSBCacheEntry[CACHE_SIZE];
++    }
++
+     /**
+      * checks whether TextLayout is required to handle characters.
+      *
+@@ -226,7 +235,9 @@
+ 
+     /**
+      * Returns the left side bearing of the first character of string. The
+-     * left side bearing is calculated from the passed in FontMetrics.
++     * left side bearing is calculated from the passed in
++     * FontMetrics.  If the passed in String is less than one
++     * character, this will throw a StringIndexOutOfBoundsException exception.
+      *
+      * @param c JComponent that will display the string
+      * @param fm FontMetrics used to measure the String width
+@@ -234,14 +245,11 @@
+      */
+     public static int getLeftSideBearing(JComponent c, FontMetrics fm,
+                                          String string) {
+-        if ((string == null) || (string.length() == 0)) {
+-            return 0;
+-        }
+         return getLeftSideBearing(c, fm, string.charAt(0));
+     }
+ 
+     /**
+-     * Returns the left side bearing of the specified character. The
++     * Returns the left side bearing of the first character of string. The
+      * left side bearing is calculated from the passed in FontMetrics.
+      *
+      * @param c JComponent that will display the string
+@@ -250,105 +258,37 @@
+      */
+     public static int getLeftSideBearing(JComponent c, FontMetrics fm,
+                                          char firstChar) {
+-        return getBearing(c, fm, firstChar, true);
+-    }
++        int charIndex = (int) firstChar;
++        if (charIndex < MAX_CHAR_INDEX && charIndex >= MIN_CHAR_INDEX) {
++            byte[] lsbs = null;
+ 
+-    /**
+-     * Returns the right side bearing of the last character of string. The
+-     * right side bearing is calculated from the passed in FontMetrics.
+-     *
+-     * @param c JComponent that will display the string
+-     * @param fm FontMetrics used to measure the String width
+-     * @param string String to get the right side bearing for.
+-     */
+-    public static int getRightSideBearing(JComponent c, FontMetrics fm,
+-                                          String string) {
+-        if ((string == null) || (string.length() == 0)) {
+-            return 0;
+-        }
+-        return getRightSideBearing(c, fm, string.charAt(string.length() - 1));
+-    }
+-
+-    /**
+-     * Returns the right side bearing of the specified character. The
+-     * right side bearing is calculated from the passed in FontMetrics.
+-     *
+-     * @param c JComponent that will display the string
+-     * @param fm FontMetrics used to measure the String width
+-     * @param lastChar Character to get the right side bearing for.
+-     */
+-    public static int getRightSideBearing(JComponent c, FontMetrics fm,
+-                                         char lastChar) {
+-        return getBearing(c, fm, lastChar, false);
+-    }
+-
+-    /* Calculates the left and right side bearing for a character.
+-     * Strongly caches bearings for STRONG_BEARING_CACHE_SIZE
+-     * most recently used Fonts and softly caches as many as GC allows.
+-     */
+-    private static int getBearing(JComponent comp, FontMetrics fm, char c,
+-                                  boolean isLeftBearing) {
+-        if (fm == null) {
+-            if (comp == null) {
+-                return 0;
+-            } else {
+-                fm = comp.getFontMetrics(comp.getFont());
+-            }
+-        }
+-        synchronized (SwingUtilities2.class) {
+-            BearingCacheEntry entry = null;
+-            BearingCacheEntry searchKey = new BearingCacheEntry(fm);
+-            // See if we already have an entry in the strong cache
+-            for (BearingCacheEntry cacheEntry : strongBearingCache) {
+-                if (searchKey.equals(cacheEntry)) {
+-                    entry = cacheEntry;
+-                    break;
++            FontRenderContext frc = getFontRenderContext(c, fm);
++            Font font = fm.getFont();
++            synchronized (SwingUtilities2.class) {
++                LSBCacheEntry entry = null;
++                if (searchKey == null) {
++                    searchKey = new LSBCacheEntry(frc, font);
++                } else {
++                    searchKey.reset(frc, font);
+                 }
+-            }
+-            // See if we already have an entry in the soft cache
+-            if (entry == null) {
+-                Iterator<SoftReference<BearingCacheEntry>> iter =
+-                        softBearingCache.iterator();
+-                while (iter.hasNext()) {
+-                    BearingCacheEntry cacheEntry = iter.next().get();
+-                    if (cacheEntry == null) {
+-                        // Remove discarded soft reference from the cache
+-                        iter.remove();
+-                        continue;
+-                    }
++                // See if we already have an entry for this pair
++                for (LSBCacheEntry cacheEntry : fontCache) {
+                     if (searchKey.equals(cacheEntry)) {
+                         entry = cacheEntry;
+-                        putEntryInStrongCache(entry);
+                         break;
+                     }
+                 }
++                if (entry == null) {
++                    // No entry for this pair, add it.
++                    entry = searchKey;
++                    fontCache[nextIndex] = searchKey;
++                    searchKey = null;
++                    nextIndex = (nextIndex + 1) % CACHE_SIZE;
++                }
++                return entry.getLeftSideBearing(firstChar);
+             }
+-            if (entry == null) {
+-                // No entry, add it
+-                entry = searchKey;
+-                cacheEntry(entry);
+-            }
+-            return (isLeftBearing)
+-                    ? entry.getLeftSideBearing(c)
+-                    : entry.getRightSideBearing(c);
+         }
+-    }
+-
+-    private synchronized static void cacheEntry(BearingCacheEntry entry) {
+-        // Move the oldest entry from the strong cache into the soft cache
+-        BearingCacheEntry oldestEntry =
+-                strongBearingCache[strongBearingCacheNextIndex];
+-        if (oldestEntry != null) {
+-            softBearingCache.add(new SoftReference<BearingCacheEntry>(oldestEntry));
+-        }
+-        // Put entry in the strong cache
+-        putEntryInStrongCache(entry);
+-    }
+-
+-    private synchronized static void putEntryInStrongCache(BearingCacheEntry entry) {
+-        strongBearingCache[strongBearingCacheNextIndex] = entry;
+-        strongBearingCacheNextIndex = (strongBearingCacheNextIndex + 1)
+-                % STRONG_BEARING_CACHE_SIZE;
++        return 0;
+     }
+ 
+     /**
+@@ -1063,99 +1003,72 @@
+     }
+ 
+     /**
+-     * BearingCacheEntry is used to cache left and right character bearings
+-     * for a particular <code>Font</code> and <code>FontRenderContext</code>.
++     * LSBCacheEntry is used to cache the left side bearing (lsb) for
++     * a particular <code>Font</code> and <code>FontRenderContext</code>.
++     * This only caches characters that fall in the range
++     * <code>MIN_CHAR_INDEX</code> to <code>MAX_CHAR_INDEX</code>.
+      */
+-    private static class BearingCacheEntry {
+-        private FontMetrics fontMetrics;
++    private static class LSBCacheEntry {
++        // Used to indicate a particular entry in lsb has not been set.
++        private static final byte UNSET = Byte.MAX_VALUE;
++        // Used in creating a GlyphVector to get the lsb
++        private static final char[] oneChar = new char[1];
++
++        private byte[] lsbCache;
+         private Font font;
+         private FontRenderContext frc;
+-        private Map<Character, Short> cache;
+-        // Used for the creation of a GlyphVector
+-        private static final char[] oneChar = new char[1];
+ 
+-        public BearingCacheEntry(FontMetrics fontMetrics) {
+-            this.fontMetrics = fontMetrics;
+-            this.font = fontMetrics.getFont();
+-            this.frc = fontMetrics.getFontRenderContext();
+-            this.cache = new HashMap<Character, Short>();
+-            assert (font != null && frc != null);
++
++        public LSBCacheEntry(FontRenderContext frc, Font font) {
++            lsbCache = new byte[MAX_CHAR_INDEX - MIN_CHAR_INDEX];
++            reset(frc, font);
++
++        }
++
++        public void reset(FontRenderContext frc, Font font) {
++            this.font = font;
++            this.frc = frc;
++            for (int counter = lsbCache.length - 1; counter >= 0; counter--) {
++                lsbCache[counter] = UNSET;
++            }
+         }
+ 
+         public int getLeftSideBearing(char aChar) {
+-            Short bearing = cache.get(aChar);
+-            if (bearing == null) {
+-                bearing = calcBearing(aChar);
+-                cache.put(aChar, bearing);
++            int index = aChar - MIN_CHAR_INDEX;
++            assert (index >= 0 && index < (MAX_CHAR_INDEX - MIN_CHAR_INDEX));
++            byte lsb = lsbCache[index];
++            if (lsb == UNSET) {
++                oneChar[0] = aChar;
++                GlyphVector gv = font.createGlyphVector(frc, oneChar);
++                lsb = (byte) gv.getGlyphPixelBounds(0, frc, 0f, 0f).x;
++                if (lsb < 0) {
++                    /* HRGB/HBGR LCD glyph images will always have a pixel
++                     * on the left used in colour fringe reduction.
++                     * Text rendering positions this correctly but here
++                     * we are using the glyph image to adjust that position
++                     * so must account for it.
++                     */
++                    Object aaHint = frc.getAntiAliasingHint();
++                    if (aaHint == VALUE_TEXT_ANTIALIAS_LCD_HRGB ||
++                            aaHint == VALUE_TEXT_ANTIALIAS_LCD_HBGR) {
++                        lsb++;
++                    }
++                }
++                lsbCache[index] = lsb;
+             }
+-            return ((0xFF00 & bearing) >>> 8) - 127;
+-        }
++            return lsb;
+ 
+-        public int getRightSideBearing(char aChar) {
+-            Short bearing = cache.get(aChar);
+-            if (bearing == null) {
+-                bearing = calcBearing(aChar);
+-                cache.put(aChar, bearing);
+-            }
+-            return (0xFF & bearing) - 127;
+-        }
+ 
+-        /* Calculates left and right side bearings for a character.
+-         * Makes an assumption that bearing is a value between -127 and +127.
+-         * Stores LSB and RSB as single two-byte number (short):
+-         * LSB is the high byte, RSB is the low byte.
+-         */
+-        private short calcBearing(char aChar) {
+-            oneChar[0] = aChar;
+-            GlyphVector gv = font.createGlyphVector(frc, oneChar);
+-            Rectangle pixelBounds = gv.getGlyphPixelBounds(0, frc, 0f, 0f);
+-
+-            // Get bearings
+-            int lsb = pixelBounds.x;
+-            int rsb = pixelBounds.width - fontMetrics.charWidth(aChar);
+-
+-            /* HRGB/HBGR LCD glyph images will always have a pixel
+-             * on the left and a pixel on the right
+-             * used in colour fringe reduction.
+-             * Text rendering positions this correctly but here
+-             * we are using the glyph image to adjust that position
+-             * so must account for it.
+-             */
+-            if (lsb < 0) {
+-                 Object aaHint = frc.getAntiAliasingHint();
+-                 if (aaHint == VALUE_TEXT_ANTIALIAS_LCD_HRGB ||
+-                     aaHint == VALUE_TEXT_ANTIALIAS_LCD_HBGR) {
+-                     lsb++;
+-                 }
+-            }
+-            if (rsb > 0) {
+-                 Object aaHint = frc.getAntiAliasingHint();
+-                 if (aaHint == VALUE_TEXT_ANTIALIAS_LCD_HRGB ||
+-                     aaHint == VALUE_TEXT_ANTIALIAS_LCD_HBGR) {
+-                     rsb--;
+-                 }
+-            }
+-
+-            // Make sure that LSB and RSB are valid (see 6472972)
+-            if (lsb < -127 || lsb > 127) {
+-                lsb = 0;
+-            }
+-            if (rsb < -127 || rsb > 127) {
+-                rsb = 0;
+-            }
+-
+-            int bearing = ((lsb + 127) << 8) + (rsb + 127);
+-            return (short)bearing;
+         }
+ 
+         public boolean equals(Object entry) {
+             if (entry == this) {
+                 return true;
+             }
+-            if (!(entry instanceof BearingCacheEntry)) {
++            if (!(entry instanceof LSBCacheEntry)) {
+                 return false;
+             }
+-            BearingCacheEntry oEntry = (BearingCacheEntry)entry;
++            LSBCacheEntry oEntry = (LSBCacheEntry) entry;
+             return (font.equals(oEntry.font) &&
+                     frc.equals(oEntry.frc));
+         }
+@@ -1172,7 +1085,6 @@
+         }
+     }
+ 
+-
+     /*
+      * here goes the fix for 4856343 [Problem with applet interaction
+      * with system selection clipboard]
+@@ -1181,36 +1093,34 @@
+      * are to be performed
+      */
+ 
+-
+     /**
+-     * checks the security permissions for accessing system clipboard
+-     *
+-     * for untrusted context (see isTrustedContext) checks the
+-     * permissions for the current event being handled
+-     *
+-     */
+-    public static boolean canAccessSystemClipboard() {
+-        boolean canAccess = false;
+-        if (!GraphicsEnvironment.isHeadless()) {
+-            SecurityManager sm = System.getSecurityManager();
+-            if (sm == null) {
+-                canAccess = true;
+-            } else {
+-                try {
+-                    sm.checkSystemClipboardAccess();
+-                    canAccess = true;
+-                } catch (SecurityException e) {
+-                }
+-                if (canAccess && ! isTrustedContext()) {
+-                    canAccess = canCurrentEventAccessSystemClipboard(true);
+-                }
+-            }
+-        }
+-        return canAccess;
+-    }
+-
++    * checks the security permissions for accessing system clipboard
++    *
++    * for untrusted context (see isTrustedContext) checks the
++    * permissions for the current event being handled
++    *
++    */
++   public static boolean canAccessSystemClipboard() {
++       boolean canAccess = false;
++       if (!GraphicsEnvironment.isHeadless()) {
++           SecurityManager sm = System.getSecurityManager();
++           if (sm == null) {
++               canAccess = true;
++           } else {
++               try {
++                   sm.checkSystemClipboardAccess();
++                   canAccess = true;
++               } catch (SecurityException e) {
++               }
++               if (canAccess && ! isTrustedContext()) {
++                   canAccess = canCurrentEventAccessSystemClipboard(true);
++               }
++           }
++       }
++       return canAccess;
++   }
+     /**
+-     * Returns true if EventQueue.getCurrentEvent() has the permissions to
++    * Returns true if EventQueue.getCurrentEvent() has the permissions to
+      * access the system clipboard
+      */
+     public static boolean canCurrentEventAccessSystemClipboard() {
+diff -r 935814bd43a6 -r 281fbd82a971 test/javax/swing/SwingUtilities/6797139/bug6797139.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/javax/swing/SwingUtilities/6797139/bug6797139.java	Wed Sep 02 17:47:19 2009 +0400
+@@ -0,0 +1,62 @@
++/*
++ * Copyright (c) 2009, 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 6797139
++ * @author Alexander Potochkin
++ * @summary tests that JButton's text is not incorrectly truncated
++ */
++import javax.swing.*;
++import javax.swing.plaf.basic.BasicButtonUI;
++import java.awt.*;
++import java.awt.image.BufferedImage;
++
++public class bug6797139 {
++
++    private static void createGui() {
++        JButton b = new JButton("Probably");
++        b.setUI(new BasicButtonUI() {
++            protected void paintText(Graphics g, AbstractButton b, Rectangle textRect, String text) {
++                super.paintText(g, b, textRect, text);
++                if (text.endsWith("...")) {
++                    throw new RuntimeException("Text is truncated!");
++                }
++            }
++        });
++        b.setSize(b.getPreferredSize());
++        BufferedImage image = new BufferedImage(b.getWidth(), b.getHeight(),
++                BufferedImage.TYPE_INT_ARGB);
++        Graphics g = image.getGraphics();
++        b.paint(g);
++        g.dispose();
++    }
++
++    public static void main(String[] args) throws Exception {
++        SwingUtilities.invokeAndWait(new Runnable() {
++            public void run() {
++                createGui();
++            }
++        });
++    }
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6797195-hw_lw_mixing.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,3276 @@
+diff -Nru openjdk.orig/jdk/make/sun/awt/Makefile openjdk/jdk/make/sun/awt/Makefile
+--- openjdk.orig/jdk/make/sun/awt/Makefile	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/sun/awt/Makefile	2011-02-16 00:36:10.750531044 +0000
+@@ -51,7 +51,7 @@
+ # sun/awt/resources       handled by java/awt/Makefile
+ # sun/java2d/pisces       handled by sun/pisces/Makefile
+ #
+-AUTO_FILES_JAVA_DIRS = sun/awt sun/java2d
++AUTO_FILES_JAVA_DIRS = sun/awt sun/java2d com/sun/awt
+ AUTO_JAVA_PRUNE = resources pisces
+ 
+ ifeq ($(PLATFORM), windows)
+diff -Nru openjdk.orig/jdk/make/tools/sharing/classlist.linux openjdk/jdk/make/tools/sharing/classlist.linux
+--- openjdk.orig/jdk/make/tools/sharing/classlist.linux	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/tools/sharing/classlist.linux	2011-02-16 00:36:10.758530424 +0000
+@@ -1718,6 +1718,7 @@
+ sun/awt/color/CMM
+ java/applet/Applet
+ java/awt/Panel
++com/sun/awt/AWTUtilities
+ javax/swing/KeyboardManager$ComponentKeyStrokePair
+ sun/awt/EmbeddedFrame
+ sun/awt/im/InputMethodContext
+diff -Nru openjdk.orig/jdk/make/tools/sharing/classlist.solaris openjdk/jdk/make/tools/sharing/classlist.solaris
+--- openjdk.orig/jdk/make/tools/sharing/classlist.solaris	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/tools/sharing/classlist.solaris	2011-02-16 00:36:10.758530424 +0000
+@@ -961,6 +961,7 @@
+ javax/swing/SystemEventQueueUtilities$ComponentWorkRequest
+ java/applet/Applet
+ java/awt/Panel
++com/sun/awt/AWTUtilities
+ sun/awt/X11/XExposeEvent
+ java/util/jar/Manifest
+ java/io/ByteArrayInputStream
+diff -Nru openjdk.orig/jdk/make/tools/sharing/classlist.windows openjdk/jdk/make/tools/sharing/classlist.windows
+--- openjdk.orig/jdk/make/tools/sharing/classlist.windows	2011-01-20 23:54:06.000000000 +0000
++++ openjdk/jdk/make/tools/sharing/classlist.windows	2011-02-16 00:36:10.758530424 +0000
+@@ -1621,6 +1621,7 @@
+ sun/font/FontDesignMetrics$MetricsKey
+ java/applet/Applet
+ java/awt/Panel
++com/sun/awt/AWTUtilities
+ javax/swing/KeyboardManager$ComponentKeyStrokePair
+ sun/awt/im/InputMethodContext
+ java/awt/im/spi/InputMethodContext
+diff -Nru openjdk.orig/jdk/src/share/classes/com/sun/awt/AWTUtilities.java openjdk/jdk/src/share/classes/com/sun/awt/AWTUtilities.java
+--- openjdk.orig/jdk/src/share/classes/com/sun/awt/AWTUtilities.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/src/share/classes/com/sun/awt/AWTUtilities.java	2011-02-16 00:36:10.758530424 +0000
+@@ -0,0 +1,104 @@
++/*
++ * Copyright (c) 2008, 2009, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package com.sun.awt;
++
++import java.awt.*;
++import sun.awt.AWTAccessor;
++
++
++/**
++ * A collection of utility methods for AWT.
++ *
++ * The functionality provided by the static methods of the class includes:
++ * <ul>
++ * <li>Setting a 'mixing-cutout' shape for a component.
++ * </ul>
++ * <p>
++ * <b>WARNING</b>: This class is an implementation detail and only meant
++ * for limited use outside of the core platform. This API may change
++ * drastically between update release, and it may even be
++ * removed or be moved in some other package(s)/class(es).
++ */
++public final class AWTUtilities {
++
++    /**
++     * The AWTUtilities class should not be instantiated
++     */
++    private AWTUtilities() {
++    }
++
++    /**
++     * Sets a 'mixing-cutout' shape for the given component.
++     *
++     * By default a lightweight component is treated as an opaque rectangle for
++     * the purposes of the Heavyweight/Lightweight Components Mixing feature.
++     * This method enables developers to set an arbitrary shape to be cut out
++     * from heavyweight components positioned underneath the lightweight
++     * component in the z-order.
++     * <p>
++     * The {@code shape} argument may have the following values:
++     * <ul>
++     * <li>{@code null} - reverts the default cutout shape (the rectangle equal
++     * to the component's {@code getBounds()})
++     * <li><i>empty-shape</i> - does not cut out anything from heavyweight
++     * components. This makes the given lightweight component effectively
++     * transparent. Note that descendants of the lightweight component still
++     * affect the shapes of heavyweight components.  An example of an
++     * <i>empty-shape</i> is {@code new Rectangle()}.
++     * <li><i>non-empty-shape</i> - the given shape will be cut out from
++     * heavyweight components.
++     * </ul>
++     * <p>
++     * The most common example when the 'mixing-cutout' shape is needed is a
++     * glass pane component. The {@link JRootPane#setGlassPane()} method
++     * automatically sets the <i>empty-shape</i> as the 'mixing-cutout' shape
++     * for the given glass pane component.  If a developer needs some other
++     * 'mixing-cutout' shape for the glass pane (which is rare), this must be
++     * changed manually after installing the glass pane to the root pane.
++     * <p>
++     * Note that the 'mixing-cutout' shape neither affects painting, nor the
++     * mouse events handling for the given component. It is used exclusively
++     * for the purposes of the Heavyweight/Lightweight Components Mixing
++     * feature.
++     *
++     * @param component the component that needs non-default
++     * 'mixing-cutout' shape
++     * @param shape the new 'mixing-cutout' shape
++     * @throws NullPointerException if the component argument is {@code null}
++     */
++    public static void setComponentMixingCutoutShape(Component component,
++            Shape shape)
++    {
++        if (component == null) {
++            throw new NullPointerException(
++                    "The component argument should not be null.");
++        }
++
++        AWTAccessor.getComponentAccessor().setMixingCutoutShape(component,
++                shape);
++    }
++}
++
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Component.java openjdk/jdk/src/share/classes/java/awt/Component.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Component.java	2011-02-16 00:32:37.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	2011-02-16 00:36:10.762530115 +0000
+@@ -66,8 +66,10 @@
+ 
+ import sun.security.action.GetPropertyAction;
+ import sun.awt.AppContext;
++import sun.awt.AWTAccessor;
+ import sun.awt.ConstrainableGraphics;
+ import sun.awt.SubRegionShowable;
++import sun.awt.SunToolkit;
+ import sun.awt.WindowClosingListener;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.EmbeddedFrame;
+@@ -761,22 +763,26 @@
+      * The shape set with the applyCompoundShape() method. It uncludes the result
+      * of the HW/LW mixing related shape computation. It may also include
+      * the user-specified shape of the component.
++     * The 'null' value means the component has normal shape (or has no shape at all)
++     * and applyCompoundShape() will skip the following shape identical to normal.
+      */
+     private transient Region compoundShape = null;
+ 
+     /*
++     * Represents the shape of this lightweight component to be cut out from
++     * heavyweight components should they intersect. Possible values:
++     *    1. null - consider the shape rectangular
++     *    2. EMPTY_REGION - nothing gets cut out (children still get cut out)
++     *    3. non-empty - this shape gets cut out.
++     */
++    private transient Region mixingCutoutRegion = null;
++
++    /*
+      * Indicates whether addNotify() is complete
+      * (i.e. the peer is created).
+      */
+     private transient boolean isAddNotifyComplete = false;
+ 
+-    private static final PropertyChangeListener opaquePropertyChangeListener =
+-        new PropertyChangeListener() {
+-            public void propertyChange(java.beans.PropertyChangeEvent evt) {
+-                ((Component)evt.getSource()).mixOnOpaqueChanging();
+-            }
+-        };
+-
+     /**
+      * Should only be used in subclass getBounds to check that part of bounds
+      * is actualy changing
+@@ -806,6 +812,39 @@
+     }
+ 
+ 
++    static {
++        AWTAccessor.setComponentAccessor(new AWTAccessor.ComponentAccessor() {
++            public void setMixingCutoutShape(Component comp, Shape shape) {
++                Region region = shape == null ?  null :
++                    Region.getInstance(shape, null);
++
++                synchronized (comp.getTreeLock()) {
++                    boolean needShowing = false;
++                    boolean needHiding = false;
++
++                    if (!comp.isNonOpaqueForMixing()) {
++                        needHiding = true;
++                    }
++
++                    comp.mixingCutoutRegion = region;
++
++                    if (!comp.isNonOpaqueForMixing()) {
++                        needShowing = true;
++                    }
++
++                    if (comp.isMixingNeeded()) {
++                        if (needHiding) {
++                            comp.mixOnHiding(comp.isLightweight());
++                        }
++                        if (needShowing) {
++                            comp.mixOnShowing();
++                        }
++                    }
++                }
++            }
++        });
++    }
++
+     /**
+      * Constructs a new component. Class <code>Component</code> can be
+      * extended directly to create a lightweight component that does not
+@@ -6574,7 +6613,6 @@
+             }
+ 
+             if (!isAddNotifyComplete) {
+-                addPropertyChangeListener("opaque", opaquePropertyChangeListener);
+                 mixOnShowing();
+             }
+ 
+@@ -6666,9 +6704,11 @@
+                 p.dispose();
+ 
+                 mixOnHiding(isLightweight);
+-                removePropertyChangeListener("opaque", opaquePropertyChangeListener);
+ 
+                 isAddNotifyComplete = false;
++                // Nullifying compoundShape means that the component has normal shape
++                // (or has no shape at all).
++                this.compoundShape = null;
+             }
+ 
+             if (hierarchyListener != null ||
+@@ -9330,10 +9370,9 @@
+      * Null-layout of the container or absence of the container mean
+      * the bounds of the component are final and can be trusted.
+      */
+-    private boolean areBoundsValid() {
++    final boolean areBoundsValid() {
+         Container cont = getContainer();
+-        return cont == null || cont.isValid()
+-            || cont.getLayout() == null;
++        return cont == null || cont.isValid() || cont.getLayout() == null;
+     }
+ 
+     /**
+@@ -9342,6 +9381,14 @@
+      */
+     void applyCompoundShape(Region shape) {
+         checkTreeLock();
++
++        if (!areBoundsValid()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this + "; areBoundsValid = " + areBoundsValid());
++            }
++            return;
++        }
++
+         if (!isLightweight()) {
+             ComponentPeer peer = getPeer();
+             if (peer != null) {
+@@ -9351,22 +9398,31 @@
+                 // with some incorrect Region object with loX being
+                 // greater than the hiX for instance.
+                 if (shape.isEmpty()) {
+-                    shape = Region.getInstanceXYWH(0, 0, 0, 0);
++                    shape = Region.EMPTY_REGION;
+                 }
+ 
++
+                 // Note: the shape is not really copied/cloned. We create
+                 // the Region object ourselves, so there's no any possibility
+                 // to modify the object outside of the mixing code.
+-                this.compoundShape = shape;
+-
+-                if (areBoundsValid()) {
++                // Nullifying compoundShape means that the component has normal shape
++                // (or has no shape at all).
++                if (shape.equals(getNormalShape())) {
++                    if (this.compoundShape == null) {
++                        return;
++                    }
++                    this.compoundShape = null;
++                    peer.applyShape(null);
++                } else {
++                    if (shape.equals(getAppliedShape())) {
++                        return;
++                    }
++                    this.compoundShape = shape;
+                     Point compAbsolute = getLocationOnWindow();
+-
+                     if (mixingLog.isLoggable(Level.FINER)) {
+                         mixingLog.fine("this = " + this +
+-                            "; compAbsolute=" + compAbsolute + "; shape=" + shape);
++                                "; compAbsolute=" + compAbsolute + "; shape=" + shape);
+                     }
+-
+                     peer.applyShape(shape.getTranslatedRegion(-compAbsolute.x, -compAbsolute.y));
+                 }
+             }
+@@ -9389,7 +9445,7 @@
+         Point curLocation = getLocation();
+ 
+         for (Container parent = getContainer();
+-                parent != null;
++                parent != null && !(parent instanceof Window);
+                 parent = parent.getContainer())
+         {
+             curLocation.x += parent.getX();
+@@ -9415,7 +9471,28 @@
+             );
+     }
+ 
+-    private int getSiblingIndexAbove() {
++    /**
++     * Returns the "opaque shape" of the component.
++     *
++     * The opaque shape of a lightweight components is the actual shape that
++     * needs to be cut off of the heavyweight components in order to mix this
++     * lightweight component correctly with them.
++     *
++     * The method is overriden in the java.awt.Container to handle non-opaque
++     * containers containing opaque children.
++     *
++     * See 6637655 for details.
++     */
++    Region getOpaqueShape() {
++        checkTreeLock();
++        if (mixingCutoutRegion != null) {
++            return mixingCutoutRegion;
++        } else {
++            return getNormalShape();
++        }
++    }
++
++    final int getSiblingIndexAbove() {
+         checkTreeLock();
+         Container parent = getContainer();
+         if (parent == null) {
+@@ -9427,7 +9504,7 @@
+         return nextAbove < 0 ? -1 : nextAbove;
+     }
+ 
+-    private int getSiblingIndexBelow() {
++    final int getSiblingIndexBelow() {
+         checkTreeLock();
+         Container parent = getContainer();
+         if (parent == null) {
+@@ -9439,6 +9516,11 @@
+         return nextBelow >= parent.getComponentCount() ? -1 : nextBelow;
+     }
+ 
++    final boolean isNonOpaqueForMixing() {
++        return mixingCutoutRegion != null &&
++            mixingCutoutRegion.isEmpty();
++    }
++
+     private Region calculateCurrentShape() {
+         checkTreeLock();
+         Region s = getNormalShape();
+@@ -9461,8 +9543,8 @@
+                      * implementation of the Container class.
+                      */
+                     Component c = cont.getComponent(index);
+-                    if (c.isLightweight() && c.isShowing() && c.isOpaque()) {
+-                        s = s.getDifference(c.getNormalShape());
++                    if (c.isLightweight() && c.isShowing()) {
++                        s = s.getDifference(c.getOpaqueShape());
+                     }
+                 }
+ 
+@@ -9487,6 +9569,9 @@
+     void applyCurrentShape() {
+         checkTreeLock();
+         if (!areBoundsValid()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this + "; areBoundsValid = " + areBoundsValid());
++            }
+             return; // Because applyCompoundShape() ignores such components anyway
+         }
+         if (mixingLog.isLoggable(Level.FINE)) {
+@@ -9505,16 +9590,54 @@
+         applyCompoundShape(getAppliedShape().getDifference(s));
+     }
+ 
++    private final void applyCurrentShapeBelowMe() {
++        checkTreeLock();
++        Container parent = getContainer();
++        if (parent != null && parent.isShowing()) {
++            // First, reapply shapes of my siblings
++            parent.recursiveApplyCurrentShape(getSiblingIndexBelow());
++
++            // Second, if my container is non-opaque, reapply shapes of siblings of my container
++            Container parent2 = parent.getContainer();
++            while (!parent.isOpaque() && parent2 != null) {
++                parent2.recursiveApplyCurrentShape(parent.getSiblingIndexBelow());
++
++                parent = parent2;
++                parent2 = parent.getContainer();
++            }
++        }
++    }
++
++    final void subtractAndApplyShapeBelowMe() {
++        checkTreeLock();
++        Container parent = getContainer();
++        if (parent != null && isShowing()) {
++            Region opaqueShape = getOpaqueShape();
++
++            // First, cut my siblings
++            parent.recursiveSubtractAndApplyShape(opaqueShape, getSiblingIndexBelow());
++
++            // Second, if my container is non-opaque, cut siblings of my container
++            Container parent2 = parent.getContainer();
++            while (!parent.isOpaque() && parent2 != null) {
++                parent2.recursiveSubtractAndApplyShape(opaqueShape, parent.getSiblingIndexBelow());
++
++                parent = parent2;
++                parent2 = parent.getContainer();
++            }
++        }
++    }
++
+     void mixOnShowing() {
+         synchronized (getTreeLock()) {
+             if (mixingLog.isLoggable(Level.FINE)) {
+                 mixingLog.fine("this = " + this);
+             }
++            if (!isMixingNeeded()) {
++                return;
++            }
+             if (isLightweight()) {
+-                Container parent = getContainer();
+-                if (parent != null && isShowing() && isOpaque()) {
+-                    parent.recursiveSubtractAndApplyShape(getNormalShape(), getSiblingIndexBelow());
+-                }
++                subtractAndApplyShapeBelowMe();
+             } else {
+                 applyCurrentShape();
+             }
+@@ -9528,12 +9651,12 @@
+             if (mixingLog.isLoggable(Level.FINE)) {
+                 mixingLog.fine("this = " + this + "; isLightweight = " + isLightweight);
+             }
++            if (!isMixingNeeded()) {
++                return;
++            }
+             if (isLightweight) {
+-                Container parent = getContainer();
+-                if (parent != null) {
+-                    parent.recursiveApplyCurrentShape(getSiblingIndexBelow());
+-                }
+-            } //XXX: else applyNormalShape() ???
++                applyCurrentShapeBelowMe();
++            }
+         }
+     }
+ 
+@@ -9542,11 +9665,11 @@
+             if (mixingLog.isLoggable(Level.FINE)) {
+                 mixingLog.fine("this = " + this);
+             }
++            if (!isMixingNeeded()) {
++                return;
++            }
+             if (isLightweight()) {
+-                Container parent = getContainer();
+-                if (parent != null) {
+-                    parent.recursiveApplyCurrentShape(parent.getComponentZOrder(this));
+-                }
++                applyCurrentShapeBelowMe();
+             } else {
+                 applyCurrentShape();
+             }
+@@ -9562,11 +9685,13 @@
+                 mixingLog.fine("this = " + this +
+                     "; oldZorder=" + oldZorder + "; newZorder=" + newZorder + "; parent=" + parent);
+             }
+-
++            if (!isMixingNeeded()) {
++                return;
++            }
+             if (isLightweight()) {
+                 if (becameHigher) {
+-                    if (parent != null && isShowing() && isOpaque()) {
+-                        parent.recursiveSubtractAndApplyShape(getNormalShape(), getSiblingIndexBelow(), oldZorder);
++                    if (parent != null && isShowing()) {
++                        parent.recursiveSubtractAndApplyShape(getOpaqueShape(), getSiblingIndexBelow(), oldZorder);
+                     }
+                 } else {
+                     if (parent != null) {
+@@ -9582,8 +9707,8 @@
+ 
+                         for (int index = oldZorder; index < newZorder; index++) {
+                             Component c = parent.getComponent(index);
+-                            if (c.isLightweight() && c.isShowing() && c.isOpaque()) {
+-                                shape = shape.getDifference(c.getNormalShape());
++                            if (c.isLightweight() && c.isShowing()) {
++                                shape = shape.getDifference(c.getOpaqueShape());
+                             }
+                         }
+                         applyCompoundShape(shape);
+@@ -9593,21 +9718,42 @@
+         }
+     }
+ 
+-    void mixOnOpaqueChanging() {
+-        if (mixingLog.isLoggable(Level.FINE)) {
+-            mixingLog.fine("this = " + this);
+-        }
+-        if (isOpaque()) {
+-            mixOnShowing();
+-        } else {
+-            mixOnHiding(isLightweight());
+-        }
+-    }
+-
+     void mixOnValidating() {
+         // This method gets overriden in the Container. Obviously, a plain
+         // non-container components don't need to handle validation.
+     }
+ 
++    final boolean isMixingNeeded() {
++        if (SunToolkit.getSunAwtDisableMixing()) {
++            if (mixingLog.isLoggable(Level.FINEST)) {
++                mixingLog.finest("this = " + this + "; Mixing disabled via sun.awt.disableMixing");
++            }
++            return false;
++        }
++        if (!areBoundsValid()) {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.fine("this = " + this + "; areBoundsValid = " + areBoundsValid());
++            }
++            return false;
++        }
++        Window window = getContainingWindow();
++        if (window != null) {
++            if (!window.hasHeavyweightDescendants() || !window.hasLightweightDescendants()) {
++                if (mixingLog.isLoggable(Level.FINE)) {
++                    mixingLog.fine("containing window = " + window +
++                            "; has h/w descendants = " + window.hasHeavyweightDescendants() +
++                            "; has l/w descendants = " + window.hasLightweightDescendants());
++                }
++                return false;
++            }
++        } else {
++            if (mixingLog.isLoggable(Level.FINE)) {
++                mixingLog.finest("this = " + this + "; containing window is null");
++            }
++            return false;
++        }
++        return true;
++    }
++
+     // ****************** END OF MIXING CODE ********************************
+ }
+diff -Nru openjdk.orig/jdk/src/share/classes/java/awt/Container.java openjdk/jdk/src/share/classes/java/awt/Container.java
+--- openjdk.orig/jdk/src/share/classes/java/awt/Container.java	2011-02-16 00:32:37.000000000 +0000
++++ openjdk/jdk/src/share/classes/java/awt/Container.java	2011-02-16 00:36:10.762530115 +0000
+@@ -569,7 +569,7 @@
+      * @return true if there is at least one heavyweight children in a container, false otherwise
+      * @since 1.5
+      */
+-    private boolean hasHeavyweightDescendants() {
++    final boolean hasHeavyweightDescendants() {
+         checkTreeLock();
+         return numOfHWComponents > 0;
+     }
+@@ -580,7 +580,7 @@
+      * @return true if there is at least one lightweight children in a container, false otherwise
+      * @since 1.7
+      */
+-    private boolean hasLightweightDescendants() {
++    final boolean hasLightweightDescendants() {
+         checkTreeLock();
+         return numOfLWComponents > 0;
+     }
+@@ -3857,6 +3857,28 @@
+         return -1;
+     }
+ 
++    /*
++     * This method is overriden to handle opaque children in non-opaque
++     * containers.
++     */
++    @Override
++    final Region getOpaqueShape() {
++        checkTreeLock();
++        if (isLightweight() && isNonOpaqueForMixing()
++                && hasLightweightDescendants())
++        {
++            Region s = Region.EMPTY_REGION;
++            for (int index = 0; index < getComponentCount(); index++) {
++                Component c = getComponent(index);
++                if (c.isLightweight() && c.isShowing()) {
++                    s = s.getUnion(c.getOpaqueShape());
++                }
++            }
++            return s.getIntersection(getNormalShape());
++        }
++        return super.getOpaqueShape();
++    }
++
+     final void recursiveSubtractAndApplyShape(Region shape) {
+         recursiveSubtractAndApplyShape(shape, getTopmostComponentIndex(), getBottommostComponentIndex());
+     }
+@@ -3874,6 +3896,15 @@
+         if (fromZorder == -1) {
+             return;
+         }
++        if (shape.isEmpty()) {
++            return;
++        }
++        // An invalid container with not-null layout should be ignored
++        // by the mixing code, the container will be validated later
++        // and the mixing code will be executed later.
++        if (getLayout() != null && !isValid()) {
++            return;
++        }
+         for (int index = fromZorder; index <= toZorder; index++) {
+             Component comp = getComponent(index);
+             if (!comp.isLightweight()) {
+@@ -3902,10 +3933,19 @@
+         if (fromZorder == -1) {
+             return;
+         }
++        // An invalid container with not-null layout should be ignored
++        // by the mixing code, the container will be validated later
++        // and the mixing code will be executed later.
++        if (getLayout() != null && !isValid()) {
++            return;
++        }
+         for (int index = fromZorder; index <= toZorder; index++) {
+             Component comp = getComponent(index);
+             if (!comp.isLightweight()) {
+                 comp.applyCurrentShape();
++                if (comp instanceof Container && ((Container)comp).getLayout() == null) {
++                    ((Container)comp).recursiveApplyCurrentShape();
++                }
+             } else if (comp instanceof Container &&
+                     ((Container)comp).hasHeavyweightDescendants()) {
+                 ((Container)comp).recursiveApplyCurrentShape();
+@@ -3996,6 +4036,10 @@
+                 mixingLog.fine("this = " + this);
+             }
+ 
++            if (!isMixingNeeded()) {
++                return;
++            }
++
+             boolean isLightweight = isLightweight();
+ 
+             if (isLightweight && isRecursivelyVisibleUpToHeavyweightContainer()) {
+@@ -4030,6 +4074,9 @@
+             if (mixingLog.isLoggable(Level.FINE)) {
+                 mixingLog.fine("this = " + this);
+             }
++
++            boolean isMixingNeeded = isMixingNeeded();
++
+             if (isLightweight() && hasHeavyweightDescendants()) {
+                 final Point origin = new Point(getX(), getY());
+                 for (Container cont = getContainer();
+@@ -4040,7 +4087,18 @@
+                 }
+ 
+                 recursiveRelocateHeavyweightChildren(origin);
++
++                if (!isMixingNeeded) {
++                    return;
++                }
++
++                recursiveApplyCurrentShape();
++            }
++
++            if (!isMixingNeeded) {
++                return;
+             }
++
+             super.mixOnReshaping();
+         }
+     }
+@@ -4053,6 +4111,10 @@
+                     "; oldZ=" + oldZorder + "; newZ=" + newZorder);
+             }
+ 
++            if (!isMixingNeeded()) {
++                return;
++            }
++
+             boolean becameHigher = newZorder < oldZorder;
+ 
+             if (becameHigher && isLightweight() && hasHeavyweightDescendants()) {
+@@ -4069,10 +4131,18 @@
+                 mixingLog.fine("this = " + this);
+             }
+ 
++            if (!isMixingNeeded()) {
++                return;
++            }
++
+             if (hasHeavyweightDescendants()) {
+                 recursiveApplyCurrentShape();
+             }
+ 
++            if (isLightweight() && isNonOpaqueForMixing()) {
++                subtractAndApplyShapeBelowMe();
++            }
++
+             super.mixOnValidating();
+         }
+     }
+diff -Nru openjdk.orig/jdk/src/share/classes/javax/swing/JRootPane.java openjdk/jdk/src/share/classes/javax/swing/JRootPane.java
+--- openjdk.orig/jdk/src/share/classes/javax/swing/JRootPane.java	2011-01-20 23:54:21.000000000 +0000
++++ openjdk/jdk/src/share/classes/javax/swing/JRootPane.java	2011-02-16 00:36:10.762530115 +0000
+@@ -34,6 +34,7 @@
+ import java.util.Vector;
+ import java.io.Serializable;
+ import javax.swing.border.*;
++import sun.awt.AWTAccessor;
+ import sun.security.action.GetBooleanAction;
+ 
+ 
+@@ -688,6 +689,9 @@
+             throw new NullPointerException("glassPane cannot be set to null.");
+         }
+ 
++        AWTAccessor.getComponentAccessor().setMixingCutoutShape(glass,
++                new Rectangle());
++
+         boolean visible = false;
+         if (glassPane != null && glassPane.getParent() == this) {
+             this.remove(glassPane);
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-16 00:32:37.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-02-16 00:37:57.566269674 +0000
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2008, 2011, 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
+@@ -59,6 +59,12 @@
+      * An interface of accessor for the java.awt.Component class.
+      */
+     public interface ComponentAccessor {
++        // See 6797587
++        // Also see: 6776743, 6768307, and 6768332.
++        /**
++         * Sets the shape of a lw component to cut out from hw components.
++         */
++        void setMixingCutoutShape(Component comp, Shape shape);
+         /*
+          * Returns the acc this component was constructed with.
+          */
+@@ -92,6 +98,8 @@
+      * Accessor instances are initialized in the static initializers of
+      * corresponding AWT classes by using setters defined below.
+      */
++    /* The java.awt.Component class accessor object.
++     */
+     private static ComponentAccessor componentAccessor;
+     private static AWTEventAccessor awtEventAccessor;
+ 
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/awt/SunToolkit.java openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java
+--- openjdk.orig/jdk/src/share/classes/sun/awt/SunToolkit.java	2011-01-20 23:54:24.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java	2011-02-16 00:36:10.762530115 +0000
+@@ -1973,6 +1973,21 @@
+         AWTAutoShutdown.getInstance().dumpPeers(aLog);
+     }
+ 
++    private static Boolean sunAwtDisableMixing = null;
++
++    /**
++     * Returns the value of "sun.awt.disableMixing" property. Default
++     * value is {@code false}.
++     */
++    public synchronized static boolean getSunAwtDisableMixing() {
++        if (sunAwtDisableMixing == null) {
++            sunAwtDisableMixing = Boolean.valueOf(
++                    AccessController.doPrivileged(
++                        new GetBooleanAction("sun.awt.disableMixing")));
++        }
++        return sunAwtDisableMixing.booleanValue();
++    }
++
+     /**
+      * Returns true if the native GTK libraries are available.  The
+      * default implementation returns false, but UNIXToolkit overrides this
+diff -Nru openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/Region.java openjdk/jdk/src/share/classes/sun/java2d/pipe/Region.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/Region.java	2011-01-20 23:54:26.000000000 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/Region.java	2011-02-16 00:36:10.762530115 +0000
+@@ -28,6 +28,7 @@
+ import java.awt.Rectangle;
+ import java.awt.Shape;
+ import java.awt.geom.AffineTransform;
++import java.awt.geom.RectangularShape;
+ 
+ /**
+  * This class encapsulates a definition of a two dimensional region which
+@@ -63,11 +64,28 @@
+     static final int INIT_SIZE = 50;
+     static final int GROW_SIZE = 50;
+ 
+-    static final Region EMPTY_REGION = new Region(0, 0, 0, 0);
+-    static final Region WHOLE_REGION = new Region(Integer.MIN_VALUE,
+-                                                  Integer.MIN_VALUE,
+-                                                  Integer.MAX_VALUE,
+-                                                  Integer.MAX_VALUE);
++    /**
++     * Immutable Region.
++     */
++    private static final class ImmutableRegion extends Region {
++        protected ImmutableRegion(int lox, int loy, int hix, int hiy) {
++            super(lox, loy, hix, hiy);
++        }
++
++        // Override all the methods that mutate the object
++        public void appendSpans(sun.java2d.pipe.SpanIterator si) {}
++        public void setOutputArea(java.awt.Rectangle r) {}
++        public void setOutputAreaXYWH(int x, int y, int w, int h) {}
++        public void setOutputArea(int[] box) {}
++        public void setOutputAreaXYXY(int lox, int loy, int hix, int hiy) {}
++    }
++
++    public static final Region EMPTY_REGION = new ImmutableRegion(0, 0, 0, 0);
++    public static final Region WHOLE_REGION = new ImmutableRegion(
++            Integer.MIN_VALUE,
++            Integer.MIN_VALUE,
++            Integer.MAX_VALUE,
++            Integer.MAX_VALUE);
+ 
+     int lox;
+     int loy;
+@@ -113,7 +131,7 @@
+         return newv;
+     }
+ 
+-    private Region(int lox, int loy, int hix, int hiy) {
++    protected Region(int lox, int loy, int hix, int hiy) {
+         this.lox = lox;
+         this.loy = loy;
+         this.hix = hix;
+@@ -194,6 +212,13 @@
+     public static Region getInstance(Region devBounds, boolean normalize,
+                                      Shape s, AffineTransform at)
+     {
++        // Optimize for empty shapes to avoid involving the SpanIterator
++        if (s instanceof RectangularShape &&
++                ((RectangularShape)s).isEmpty())
++        {
++            return EMPTY_REGION;
++        }
++
+         int box[] = new int[4];
+         ShapeSpanIterator sr = new ShapeSpanIterator(normalize);
+         try {
+@@ -1206,7 +1231,7 @@
+             return false;
+         }
+         if (r.lox != this.lox || r.loy != this.loy ||
+-            r.hiy != this.hiy || r.hiy != this.hiy)
++            r.hix != this.hix || r.hiy != this.hiy)
+         {
+             return false;
+         }
+diff -Nru openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	2011-01-20 23:54:40.000000000 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java	2011-02-16 00:36:10.762530115 +0000
+@@ -1536,13 +1536,23 @@
+             }
+             XToolkit.awtLock();
+             try {
+-                XlibWrapper.SetRectangularShape(
+-                        XToolkit.getDisplay(),
+-                        getWindow(),
+-                        shape.getLoX(), shape.getLoY(),
+-                        shape.getHiX(), shape.getHiY(),
+-                        (shape.isRectangular() ? null : shape)
+-                        );
++                if (shape != null) {
++                    XlibWrapper.SetRectangularShape(
++                            XToolkit.getDisplay(),
++                            getWindow(),
++                            shape.getLoX(), shape.getLoY(),
++                            shape.getHiX(), shape.getHiY(),
++                            (shape.isRectangular() ? null : shape)
++                            );
++                } else {
++                    XlibWrapper.SetRectangularShape(
++                            XToolkit.getDisplay(),
++                            getWindow(),
++                            0, 0,
++                            0, 0,
++                            null
++                            );
++                }
+             } finally {
+                 XToolkit.awtUnlock();
+             }
+diff -Nru openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c
+--- openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2011-02-16 00:36:10.762530115 +0000
+@@ -1933,19 +1933,30 @@
+  jint x1, jint y1, jint x2, jint y2,
+  jobject region)
+ {
+-    XRectangle rects[256];
+-    XRectangle *pRect = rects;
+-    int numrects;
+-
+     AWT_CHECK_HAVE_LOCK();
+ 
+-    numrects = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region,
+-            &pRect, 256);
++    // If all the params are zeros, the shape must be simply reset.
++    // Otherwise, the shape may be not rectangular.
++    if (region || x1 || x2 || y1 || y2) {
++        XRectangle rects[256];
++        XRectangle *pRect = rects;
++
++        int numrects = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region,
++                &pRect, 256);
+ 
+-    XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++        XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++                ShapeClip, 0, 0, pRect, numrects, ShapeSet, YXBanded);
++        XShapeCombineRectangles((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
+                 ShapeBounding, 0, 0, pRect, numrects, ShapeSet, YXBanded);
+ 
+-    if (pRect != rects) {
+-        free(pRect);
++        if (pRect != rects) {
++            free(pRect);
++        }
++    } else {
++        // Reset the shape to a rectangular form.
++        XShapeCombineMask((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++                ShapeClip, 0, 0, None, ShapeSet);
++        XShapeCombineMask((Display *)jlong_to_ptr(display), (Window)jlong_to_ptr(window),
++                ShapeBounding, 0, 0, None, ShapeSet);
+     }
+ }
+diff -Nru openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java
+--- openjdk.orig/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-01-20 23:54:43.000000000 +0000
++++ openjdk/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java	2011-02-16 00:36:10.762530115 +0000
+@@ -878,8 +878,12 @@
+                     + "; SHAPE: " + shape);
+         }
+ 
+-        setRectangularShape(shape.getLoX(), shape.getLoY(), shape.getHiX(), shape.getHiY(),
+-                (shape.isRectangular() ? null : shape));
++        if (shape != null) {
++            setRectangularShape(shape.getLoX(), shape.getLoY(), shape.getHiX(), shape.getHiY(),
++                    (shape.isRectangular() ? null : shape));
++        } else {
++            setRectangularShape(0, 0, 0, 0, null);
++        }
+     }
+ 
+ }
+diff -Nru openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp
+--- openjdk.orig/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-16 00:32:37.000000000 +0000
++++ openjdk/jdk/src/windows/native/sun/windows/awt_Component.cpp	2011-02-16 00:36:10.766529806 +0000
+@@ -6315,30 +6315,36 @@
+     c = (AwtComponent *)pData;
+     if (::IsWindow(c->GetHWnd()))
+     {
+-        RGNDATA *pRgnData = NULL;
+-        RGNDATAHEADER *pRgnHdr;
++        HRGN hRgn = NULL;
+ 
+-        /* reserving memory for the worst case */
+-        size_t worstBufferSize = size_t(((x2 - x1) / 2 + 1) * (y2 - y1));
+-        pRgnData = (RGNDATA *) safe_Malloc(sizeof(RGNDATAHEADER) +
+-                sizeof(RECT_T) * worstBufferSize);
+-        pRgnHdr = (RGNDATAHEADER *) pRgnData;
+-
+-        pRgnHdr->dwSize = sizeof(RGNDATAHEADER);
+-        pRgnHdr->iType = RDH_RECTANGLES;
+-        pRgnHdr->nRgnSize = 0;
+-        pRgnHdr->rcBound.top = 0;
+-        pRgnHdr->rcBound.left = 0;
+-        pRgnHdr->rcBound.bottom = LONG(y2 - y1);
+-        pRgnHdr->rcBound.right = LONG(x2 - x1);
++        if (region || x1 || x2 || y1 || y2) {
++            // If all the params are zeros, the shape must be simply reset.
++            // Otherwise, convert it into a region.
++            RGNDATA *pRgnData = NULL;
++            RGNDATAHEADER *pRgnHdr;
++
++            /* reserving memory for the worst case */
++            size_t worstBufferSize = size_t(((x2 - x1) / 2 + 1) * (y2 - y1));
++            pRgnData = (RGNDATA *) safe_Malloc(sizeof(RGNDATAHEADER) +
++                    sizeof(RECT_T) * worstBufferSize);
++            pRgnHdr = (RGNDATAHEADER *) pRgnData;
++
++            pRgnHdr->dwSize = sizeof(RGNDATAHEADER);
++            pRgnHdr->iType = RDH_RECTANGLES;
++            pRgnHdr->nRgnSize = 0;
++            pRgnHdr->rcBound.top = 0;
++            pRgnHdr->rcBound.left = 0;
++            pRgnHdr->rcBound.bottom = LONG(y2 - y1);
++            pRgnHdr->rcBound.right = LONG(x2 - x1);
+ 
+-        RECT_T * pRect = (RECT_T *) (((BYTE *) pRgnData) + sizeof(RGNDATAHEADER));
+-        pRgnHdr->nCount = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region, &pRect, worstBufferSize);
++            RECT_T * pRect = (RECT_T *) (((BYTE *) pRgnData) + sizeof(RGNDATAHEADER));
++            pRgnHdr->nCount = RegionToYXBandedRectangles(env, x1, y1, x2, y2, region, &pRect, worstBufferSize);
+ 
+-        HRGN hRgn = ::ExtCreateRegion(NULL,
+-                sizeof(RGNDATAHEADER) + sizeof(RECT_T) * pRgnHdr->nCount, pRgnData);
++            hRgn = ::ExtCreateRegion(NULL,
++                    sizeof(RGNDATAHEADER) + sizeof(RECT_T) * pRgnHdr->nCount, pRgnData);
+ 
+-        free(pRgnData);
++            free(pRgnData);
++        }
+ 
+         ::SetWindowRgn(c->GetHWnd(), hRgn, TRUE);
+     }
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/HWDisappear.java openjdk/jdk/test/java/awt/Mixing/HWDisappear.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/HWDisappear.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Mixing/HWDisappear.java	2011-02-16 00:36:10.766529806 +0000
+@@ -0,0 +1,426 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++  @bug 6769511
++  @summary AWT components are invisible for a while after frame is moved & menu items are visible
++  @author anthony.petrov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main HWDisappear
++*/
++
++/**
++ * HWDisappear.java
++ *
++ * summary:  AWT components are invisible for a while after frame is moved & menu items are visible
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import javax.swing.*;
++import test.java.awt.regtesthelpers.Util;
++
++public class HWDisappear
++{
++
++    static volatile boolean clickPassed = false;
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++
++        // Create the frame and the button
++        JFrame f = new JFrame();
++        f.setBounds(100, 100, 400, 300);
++
++        JMenuBar menubar = new JMenuBar();
++        f.setJMenuBar(menubar);
++
++        // Create lightweight-enabled menu
++        JMenu lmenu = new JMenu("Lite Menu");
++        lmenu.add("Salad");
++        lmenu.add("Fruit Plate");
++        lmenu.add("Water");
++        menubar.add(lmenu);
++
++        Button b = new Button("OK");
++
++        f.setLayout(null);
++        f.add(b);
++        b.setBounds(50, 50, 200, 50);
++
++        b.addActionListener(new java.awt.event.ActionListener() {
++            public void actionPerformed(java.awt.event.ActionEvent e) {
++                clickPassed = true;
++            }
++        });
++
++        f.setVisible(true);
++
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        // Move quite far to ensure the button is hidden completely
++        f.setLocation(500, 200);
++
++        Util.waitForIdle(robot);
++
++        // Activate the menu
++        Point lLoc = lmenu.getLocationOnScreen();
++        robot.mouseMove(lLoc.x + 5, lLoc.y + 5);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        // Click on the button.
++        Point bLoc = b.getLocationOnScreen();
++        robot.mouseMove(bLoc.x + b.getWidth() / 2, bLoc.y + 5);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        if (clickPassed) {
++            pass();
++        } else {
++            fail("The button cannot be clicked.");
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class HWDisappear
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         HWDisappear.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         HWDisappear.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/JButtonInGlassPane.java openjdk/jdk/test/java/awt/Mixing/JButtonInGlassPane.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/JButtonInGlassPane.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Mixing/JButtonInGlassPane.java	2011-02-16 00:36:10.766529806 +0000
+@@ -0,0 +1,430 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++  @bug 6779670
++  @summary Tests if a LW components in the glass pane affects HW in the content pane
++  @author anthony.petrov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main JButtonInGlassPane
++*/
++
++
++/**
++ * JButtonInGlassPane.java
++ *
++ * summary:  Tests whether a LW menu correctly overlaps a HW button
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import javax.swing.*;
++import test.java.awt.regtesthelpers.Util;
++
++
++
++public class JButtonInGlassPane
++{
++    static volatile boolean failed = false;
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++        JFrame frame = new JFrame("Glass Pane children test");
++        frame.setLayout(null);
++
++        final Button button = new Button("AWT Button");
++        button.setBounds(100,100,100,100);
++        frame.add(button);
++
++        button.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                failed = true;
++            }
++        });
++
++        frame.getGlassPane().setVisible(true);
++        Container glassPane = (Container) frame.getGlassPane();
++        glassPane.setLayout(null);
++
++        final JButton jbutton = new JButton("JButton");
++        jbutton.setBounds(50,50,100,100);
++        glassPane.add(jbutton);
++
++        jbutton.setVisible(false);
++
++        frame.setSize(400, 400);
++        frame.setLocationRelativeTo(null);
++        frame.setVisible(true);
++
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        jbutton.setVisible(true);
++        Util.waitForIdle(robot);
++
++        // Click the LW button - in the area that intersects with
++        // the HW button.
++        Point lLoc = jbutton.getLocationOnScreen();
++        robot.mouseMove(lLoc.x + jbutton.getWidth() - 5, lLoc.y + jbutton.getHeight() - 5);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        jbutton.setBounds(50,50,120,120);
++        Util.waitForIdle(robot);
++
++        // Now click on the 'added' area of the LW button that again
++        // intersects with the HW.
++        robot.mouseMove(lLoc.x + jbutton.getWidth() - 5, lLoc.y + jbutton.getHeight() - 5);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        if (failed) {
++            JButtonInGlassPane.fail("The LW button did not receive the click.");
++        } else {
++            JButtonInGlassPane.pass();
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class JButtonInGlassPane
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         JButtonInGlassPane.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         JButtonInGlassPane.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
++
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/LWComboBox.java openjdk/jdk/test/java/awt/Mixing/LWComboBox.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/LWComboBox.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Mixing/LWComboBox.java	2011-02-16 00:36:10.766529806 +0000
+@@ -0,0 +1,425 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++  @bug 6637655
++  @summary Tests whether a LW combobox correctly overlaps a HW button
++  @author anthony.petrov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main LWComboBox
++*/
++
++
++/**
++ * LWComboBox.java
++ *
++ * summary:  Tests whether a LW combobox correctly overlaps a HW button
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import javax.swing.*;
++import java.util.Vector;
++import test.java.awt.regtesthelpers.Util;
++
++
++
++public class LWComboBox
++{
++    static volatile boolean failed = false;
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++        JFrame f = new JFrame("LW menu test");
++
++        JComboBox ch;
++        Button b;
++
++        Vector v = new Vector();
++        for(int i = 1 ; i <=20;i++){
++            v.add("Item # "+i);
++        }
++        ch = new JComboBox(v);
++
++
++        b = new Button("AWT Button");
++        b.addActionListener(new ActionListener() {
++            public void actionPerformed(ActionEvent e) {
++                failed = true;
++            }
++        });
++
++        f.add(ch,BorderLayout.NORTH);
++        f.add(b,BorderLayout.CENTER);
++        f.setSize(300,300);
++        f.setVisible(true);
++
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        // Pop up the combobox
++        Point lLoc = ch.getLocationOnScreen();
++        System.err.println("lLoc: " + lLoc);
++        robot.mouseMove(lLoc.x + 5, lLoc.y + 5);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        // Click on the combo popup.
++        //    It's assumed that the popup item is located
++        //    above the heavyweight button.
++        Point bLoc = b.getLocationOnScreen();
++        System.err.println("bLoc: " + bLoc);
++        robot.mouseMove(bLoc.x + 10, bLoc.y + 10);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        if (failed) {
++            fail("The LW popup did not received the click.");
++        } else {
++            pass();
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class LWComboBox
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         LWComboBox.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         LWComboBox.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
++
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java openjdk/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Mixing/MixingOnShrinkingHWButton.java	2011-02-16 00:36:10.766529806 +0000
+@@ -0,0 +1,429 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++  @bug 6777320
++  @summary PIT : Canvas is not fully painted on the internal frame & internal frame goes behind the canvas
++  @author dmitry.cherepanov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main MixingOnShrinkingHWButton
++*/
++
++
++/**
++ * MixingOnDialog.java
++ *
++ * summary:  Tests whether awt.Button and swing.JButton mix correctly
++ *           when awt.Button's width got shrinked
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import javax.swing.*;
++import test.java.awt.regtesthelpers.Util;
++
++
++
++public class MixingOnShrinkingHWButton
++{
++    static volatile boolean heavyClicked = false;
++    static volatile boolean lightClicked = false;
++
++    private static void init()
++    {
++        //*** Create instructions for the user here ***
++
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++
++        // Create components
++        final Dialog d = new Dialog((Frame)null, "Button-JButton mix test");
++        final Button heavy = new Button("  Heavyweight Button  ");
++        final JButton light = new JButton("  LW Button  ");
++
++        // Actions for the buttons add appropriate number to the test sequence
++        heavy.addActionListener(new java.awt.event.ActionListener()
++                {
++                    public void actionPerformed(java.awt.event.ActionEvent e) {
++                        heavyClicked = true;
++                    }
++                }
++                );
++
++        light.addActionListener(new java.awt.event.ActionListener()
++                {
++                    public void actionPerformed(java.awt.event.ActionEvent e) {
++                        lightClicked = true;
++                    }
++                }
++                );
++
++        // Shrink the HW button under LW button
++        heavy.setBounds(30, 30, 100, 100);
++        light.setBounds(40, 30, 100, 100);
++
++        // Put the components into the frame
++        d.setLayout(null);
++        d.add(light);
++        d.add(heavy);
++        d.setBounds(50, 50, 400, 400);
++        d.setVisible(true);
++
++
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        // Move the mouse pointer to the position where both
++        //    buttons overlap
++        Point heavyLoc = heavy.getLocationOnScreen();
++        robot.mouseMove(heavyLoc.x + 20, heavyLoc.y + 20);
++
++        // Now perform the click at this point
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++        // If the buttons are correctly mixed, the test sequence
++        // is equal to the check sequence.
++        if (lightClicked == true) {
++            MixingOnShrinkingHWButton.pass();
++        } else {
++            MixingOnShrinkingHWButton.fail("The lightweight component left behind the heavyweight one.");
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class MixingOnDialog
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         MixingOnDialog.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         MixingOnDialog.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
++
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java openjdk/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jdk/test/java/awt/Mixing/NonOpaqueInternalFrame.java	2011-02-16 00:36:10.766529806 +0000
+@@ -0,0 +1,434 @@
++/*
++ * Copyright (c) 2009, 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 %W% %E%
++  @bug 6768332
++  @summary Tests whether internal frames are always considered opaque
++  @author anthony.petrov@...: area=awt.mixing
++  @library ../regtesthelpers
++  @build Util
++  @run main NonOpaqueInternalFrame
++*/
++
++
++/**
++ * NonOpaqueInternalFrame.java
++ *
++ * summary:  Tests whether internal frames are always considered opaque
++ */
++
++import java.awt.*;
++import java.awt.event.*;
++import java.beans.PropertyVetoException;
++import javax.swing.*;
++import java.util.Vector;
++import test.java.awt.regtesthelpers.Util;
++
++
++
++public class NonOpaqueInternalFrame
++{
++    static volatile boolean failed = false;
++
++    private static final class MyButton extends Button
++            implements ActionListener
++        {
++            public MyButton() {
++                setPreferredSize(new Dimension(100, 100));
++                addActionListener(this);
++            }
++
++            public void actionPerformed(ActionEvent e) {
++                failed = true;
++            }
++        }
++
++    private static void init()
++    {
++        String[] instructions =
++        {
++            "This is an AUTOMATIC test, simply wait until it is done.",
++            "The result (passed or failed) will be shown in the",
++            "message window below."
++        };
++        Sysout.createDialog( );
++        Sysout.printInstructions( instructions );
++
++
++        // Create a frame with two non-opaque JInternalFrame's containing
++        // heavyweight buttons.
++        JFrame jframe = new JFrame("mixing test");
++        JDesktopPane desktop = new JDesktopPane();
++        jframe.setContentPane(desktop);
++        JInternalFrame iframe1 = new JInternalFrame("iframe 1");
++        iframe1.setIconifiable(true);
++        iframe1.add(new MyButton());
++        iframe1.setBounds(10, 10, 100, 100);
++        iframe1.setOpaque(false);
++        iframe1.setVisible(true);
++        desktop.add(iframe1);
++        JInternalFrame iframe2 = new JInternalFrame("iframe 2");
++        iframe2.setIconifiable(true);
++        iframe2.add(new MyButton());
++        iframe2.setBounds(50, 50, 100, 100);
++        iframe2.setOpaque(false);
++        iframe2.setVisible(true);
++        desktop.add(iframe2);
++        jframe.setSize(300, 300);
++        jframe.setVisible(true);
++
++        Robot robot = Util.createRobot();
++        robot.setAutoDelay(20);
++
++        Util.waitForIdle(robot);
++
++        // Try selecting the bottommost frame
++        try {
++            iframe2.setSelected(true);
++        } catch (PropertyVetoException ex) {
++            ex.printStackTrace();
++        }
++
++        // Click the title bar of the internal frame
++        Point lLoc = iframe2.getLocationOnScreen();
++        System.err.println("lLoc: " + lLoc);
++        robot.mouseMove(lLoc.x + 10, lLoc.y + 10);
++        Util.waitForIdle(robot);
++
++        robot.mousePress(InputEvent.BUTTON1_MASK);
++        robot.mouseRelease(InputEvent.BUTTON1_MASK);
++        Util.waitForIdle(robot);
++
++
++        if (failed) {
++            fail("The JInternalFrame is considered non-opaque.");
++        } else {
++            pass();
++        }
++    }//End  init()
++
++
++
++    /*****************************************************
++     * 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-
++     * 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;
++
++    // Not sure about what happens if multiple of this test are
++    //  instantiated in the same VM.  Being static (and using
++    //  static vars), it aint gonna work.  Not worrying about
++    //  it for now.
++    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 pass nor test fail 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)
++        {
++            //The test harness may have interrupted the test.  If so, rethrow the exception
++            // so that the harness gets it and deals with it.
++            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.
++            theTestPassed = true;
++            throw new TestPassedException();
++        }
++        theTestPassed = true;
++        testGeneratedInterrupt = true;
++        mainThread.interrupt();
++    }//pass()
++
++    public static synchronized void fail()
++    {
++        //test writer didn't specify why test failed, so give generic
++        fail( "it just plain failed! :-)" );
++    }
++
++    public static synchronized void fail( String whyFailed )
++    {
++        Sysout.println( "The test failed: " + whyFailed );
++        Sysout.println( "The test is over, hit  Ctl-C to stop Java VM" );
++        //check if this called from main thread
++        if ( mainThread == Thread.currentThread() )
++        {
++            //If main thread, fail now 'cause not sleeping
++            throw new RuntimeException( whyFailed );
++        }
++        theTestPassed = false;
++        testGeneratedInterrupt = true;
++        failureMessage = whyFailed;
++        mainThread.interrupt();
++    }//fail()
++
++}// class NonOpaqueInternalFrame
++
++//This exception is used to exit from any level of call nesting
++// when it's determined that the test has passed, and immediately
++// end the test.
++class TestPassedException extends RuntimeException
++{
++}
++
++//*********** End Standard Test Machinery Section **********
++
++
++//************ Begin classes defined for the test ****************
++
++// if want to make listeners, here is the recommended place for them, then instantiate
++//  them in init()
++
++/* Example of a class which may be written as part of a test
++class NewClass implements anInterface
++ {
++   static int newVar = 0;
++
++   public void eventDispatched(AWTEvent e)
++    {
++      //Counting events to see if we get enough
++      eventCount++;
++
++      if( eventCount == 20 )
++       {
++         //got enough events, so pass
++
++         NonOpaqueInternalFrame.pass();
++       }
++      else if( tries == 20 )
++       {
++         //tried too many times without getting enough events so fail
++
++         NonOpaqueInternalFrame.fail();
++       }
++
++    }// eventDispatched()
++
++ }// NewClass class
++
++*/
++
++
++//************** End classes defined for the test *******************
++
++
++
++
++/****************************************************
++ Standard Test Machinery
++ DO NOT modify anything below -- it's a standard
++  chunk of code whose purpose is to make user
++  interaction uniform, and thereby make it simpler
++  to read and understand someone else's test.
++ ****************************************************/
++
++/**
++ This is part of the standard test machinery.
++ It creates a dialog (with the instructions), and is the interface
++  for sending text messages to the user.
++ To print the instructions, send an array of strings to Sysout.createDialog
++  WithInstructions method.  Put one line of instructions per array entry.
++ To display a message for the tester to see, simply call Sysout.println
++  with the string to be displayed.
++ This mimics System.out.println but works within the test harness as well
++  as standalone.
++ */
++
++class Sysout
++{
++    private static TestDialog dialog;
++
++    public static void createDialogWithInstructions( String[] instructions )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        dialog.printInstructions( instructions );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++    public static void createDialog( )
++    {
++        dialog = new TestDialog( new Frame(), "Instructions" );
++        String[] defInstr = { "Instructions will appear here. ", "" } ;
++        dialog.printInstructions( defInstr );
++        dialog.setVisible(true);
++        println( "Any messages for the tester will display here." );
++    }
++
++
++    public static void printInstructions( String[] instructions )
++    {
++        dialog.printInstructions( instructions );
++    }
++
++
++    public static void println( String messageIn )
++    {
++        dialog.displayMessage( messageIn );
++        System.out.println(messageIn);
++    }
++
++}// Sysout  class
++
++/**
++  This is part of the standard test machinery.  It provides a place for the
++   test instructions to be displayed, and a place for interactive messages
++   to the user to be displayed.
++  To have the test instructions displayed, see Sysout.
++  To have a message to the user be displayed, see Sysout.
++  Do not call anything in this dialog directly.
++  */
++class TestDialog extends Dialog
++{
++
++    TextArea instructionsText;
++    TextArea messageText;
++    int maxStringLength = 80;
++
++    //DO NOT call this directly, go through Sysout
++    public TestDialog( Frame frame, String name )
++    {
++        super( frame, name );
++        int scrollBoth = TextArea.SCROLLBARS_BOTH;
++        instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
++        add( "North", instructionsText );
++
++        messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
++        add("Center", messageText);
++
++        pack();
++
++        setVisible(true);
++    }// TestDialog()
++
++    //DO NOT call this directly, go through Sysout
++    public void printInstructions( String[] instructions )
++    {
++        //Clear out any current instructions
++        instructionsText.setText( "" );
++
++        //Go down array of instruction strings
++
++        String printStr, remainingStr;
++        for( int i=0; i < instructions.length; i++ )
++        {
++            //chop up each into pieces maxSringLength long
++            remainingStr = instructions[ i ];
++            while( remainingStr.length() > 0 )
++            {
++                //if longer than max then chop off first max chars to print
++                if( remainingStr.length() >= maxStringLength )
++                {
++                    //Try to chop on a word boundary
++                    int posOfSpace = remainingStr.
++                        lastIndexOf( ' ', maxStringLength - 1 );
++
++                    if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
++
++                    printStr = remainingStr.substring( 0, posOfSpace + 1 );
++                    remainingStr = remainingStr.substring( posOfSpace + 1 );
++                }
++                //else just print
++                else
++                {
++                    printStr = remainingStr;
++                    remainingStr = "";
++                }
++
++                instructionsText.append( printStr + "\n" );
++
++            }// while
++
++        }// for
++
++    }//printInstructions()
++
++    //DO NOT call this directly, go through Sysout
++    public void displayMessage( String messageIn )
++    {
++        messageText.append( messageIn + "\n" );
++        System.out.println(messageIn);
++    }
++
++}// TestDialog  class
++
++
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/OpaqueTest.java openjdk/jdk/test/java/awt/Mixing/OpaqueTest.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/OpaqueTest.java	2011-01-20 23:54:46.000000000 +0000
++++ openjdk/jdk/test/java/awt/Mixing/OpaqueTest.java	2011-02-16 00:36:10.766529806 +0000
+@@ -42,6 +42,7 @@
+ import java.awt.event.*;
+ import javax.swing.*;
+ import test.java.awt.regtesthelpers.Util;
++import com.sun.awt.AWTUtilities;
+ 
+ 
+ 
+@@ -78,6 +79,7 @@
+                 {
+                     public void actionPerformed(java.awt.event.ActionEvent e) {
+                         p.setComponentZOrder(light, 0);
++                        f.validate();
+                         testSeq = testSeq + "0";
+                     }
+                 }
+@@ -87,6 +89,7 @@
+                 {
+                     public void actionPerformed(java.awt.event.ActionEvent e) {
+                         p.setComponentZOrder(heavy, 0);
++                        f.validate();
+                         testSeq = testSeq + "1";
+                     }
+                 }
+@@ -120,10 +123,12 @@
+         // flag value.
+         for (int i = 0; i < 9; ++i) {
+             if (i == 3) {
+-                light.setOpaque(false);
++                AWTUtilities.setComponentMixingCutoutShape(light,
++                        new Rectangle());
+             }
+             if (i == 6) {
+-                light.setOpaque(true);
++                AWTUtilities.setComponentMixingCutoutShape(light,
++                        null);
+             }
+ 
+             robot.mousePress(InputEvent.BUTTON1_MASK);
+diff -Nru openjdk.orig/jdk/test/java/awt/Mixing/OverlappingButtons.java openjdk/jdk/test/java/awt/Mixing/OverlappingButtons.java
+--- openjdk.orig/jdk/test/java/awt/Mixing/OverlappingButtons.java	2011-01-20 23:54:46.000000000 +0000
++++ openjdk/jdk/test/java/awt/Mixing/OverlappingButtons.java	2011-02-16 00:36:10.766529806 +0000
+@@ -78,6 +78,7 @@
+                 {
+                     public void actionPerformed(java.awt.event.ActionEvent e) {
+                         p.setComponentZOrder(light, 0);
++                        f.validate();
+                         testSeq = testSeq + "0";
+                     }
+                 }
+@@ -87,6 +88,7 @@
+                 {
+                     public void actionPerformed(java.awt.event.ActionEvent e) {
+                         p.setComponentZOrder(heavy, 0);
++                        f.validate();
+                         testSeq = testSeq + "1";
+                     }
+                 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6883341-text_bearing_exception.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,92 @@
+# HG changeset patch
+# User alexp
+# Date 1253541489 -14400
+# Node ID 9d78c3d9def2044404e678f3508dd0bb25946fd2
+# Parent  fa71ca7a36555ea20de4669a3959bb0ba226d9a8
+6883341: SWAT: jdk7-b72 swat build(2009-09-17) threw exceptions when running Java2D demo by clicking Paint ta
+Reviewed-by: peterz
+
+diff -r fa71ca7a3655 -r 9d78c3d9def2 src/share/classes/sun/swing/SwingUtilities2.java
+--- openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Mon Sep 21 01:26:57 2009 -0700
++++ openjdk/jdk/src/share/classes/sun/swing/SwingUtilities2.java	Mon Sep 21 17:58:09 2009 +0400
+@@ -250,15 +250,23 @@
+      * Returns the left side bearing of the first character of string. The
+      * left side bearing is calculated from the passed in
+      * FontMetrics.  If the passed in String is less than one
+-     * character, this will throw a StringIndexOutOfBoundsException exception.
++     * character {@code 0} is returned.
+      *
+      * @param c JComponent that will display the string
+      * @param fm FontMetrics used to measure the String width
+      * @param string String to get the left side bearing for.
++     * @throws NullPointerException if {@code string} is {@code null}
++     *
++     * @return the left side bearing of the first character of string
++     * or {@code 0} if the string is empty
+      */
+     public static int getLeftSideBearing(JComponent c, FontMetrics fm,
+                                          String string) {
+-        return getLeftSideBearing(c, fm, string.charAt(0));
++        int res = 0;
++        if (!string.isEmpty()) {
++            res = getLeftSideBearing(c, fm, string.charAt(0));
++        }
++        return res;
+     }
+ 
+     /**
+diff -r fa71ca7a3655 -r 9d78c3d9def2 test/javax/swing/JMenuItem/6883341/bug6883341.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/test/javax/swing/JMenuItem/6883341/bug6883341.java	Mon Sep 21 17:58:09 2009 +0400
+@@ -0,0 +1,50 @@
++/*
++ * Copyright (c) 2009, 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 6883341
++ * @summary Checks that menu items with no text don't throw an exception
++ * @author Alexander Potochkin
++ * @run main bug6883341
++ */
++
++import javax.swing.*;
++
++public class bug6883341 {
++
++    private static void createGui() {
++        JPopupMenu menu = new JPopupMenu();
++        menu.add(new JMenuItem());
++        menu.setVisible(true);
++        menu.setVisible(false);
++    }
++
++    public static void main(String[] args) throws Exception {
++        SwingUtilities.invokeAndWait(new Runnable() {
++            public void run() {
++                bug6883341.createGui();
++            }
++        });
++    }
++}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/6896068-sg2d.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,209 @@
+# HG changeset patch
+# User neugens
+# Date 1256926775 -3600
+# Node ID 634221297c37bc73c0f598e6ce212ef83ba74d14
+# Parent  1f2ef3a7d7c023c7ffcdf4e8fbb204ec66098f80
+6896068: SunGraphics2D exposes a reference to itself while non fully initialised.
+Summary: Introduce a new Interface to mark the Loops based pipes and initialise the loops accordingly.
+Reviewed-by: flar, rkennke
+
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/SunGraphics2D.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -257,7 +257,6 @@
+             font = defaultFont;
+         }
+ 
+-        loops = sd.getRenderLoops(this);
+         setDevClip(sd.getBounds());
+         invalidatePipe();
+     }
+@@ -367,6 +366,7 @@
+         shapepipe = invalidpipe;
+         textpipe = invalidpipe;
+         imagepipe = invalidpipe;
++        loops = null;
+     }
+ 
+     public void validatePipe() {
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/SurfaceData.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/SurfaceData.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/SurfaceData.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -69,6 +69,7 @@
+ import sun.java2d.pipe.DrawImage;
+ import sun.awt.SunHints;
+ import sun.awt.image.SurfaceManager;
++import sun.java2d.pipe.LoopBasedPipe;
+ 
+ /**
+  * This class provides various pieces of information relevant to a
+@@ -506,7 +507,6 @@
+                     sg2d.textpipe = solidTextRenderer;
+                 }
+                 sg2d.shapepipe = colorPrimitives;
+-                sg2d.loops = getRenderLoops(sg2d);
+                 // assert(sg2d.surfaceData == this);
+             }
+         } else if (sg2d.compositeState == sg2d.COMP_CUSTOM) {
+@@ -603,8 +603,17 @@
+ 
+             sg2d.textpipe = getTextPipe(sg2d, false /* AA==OFF */);
+             sg2d.shapepipe = colorPrimitives;
++            // assert(sg2d.surfaceData == this);
++        }
++
++        // check for loops
++        if (sg2d.textpipe  instanceof LoopBasedPipe ||
++            sg2d.shapepipe instanceof LoopBasedPipe ||
++            sg2d.fillpipe  instanceof LoopBasedPipe ||
++            sg2d.drawpipe  instanceof LoopBasedPipe ||
++            sg2d.imagepipe instanceof LoopBasedPipe)
++        {
+             sg2d.loops = getRenderLoops(sg2d);
+-            // assert(sg2d.surfaceData == this);
+         }
+     }
+ 
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/AATextRenderer.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/AATextRenderer.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/AATextRenderer.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -34,8 +34,9 @@
+  * a solid source colour to an opaque destination.
+  */
+ 
+-public class AATextRenderer extends GlyphListLoopPipe {
+-
++public class AATextRenderer extends GlyphListLoopPipe
++    implements LoopBasedPipe
++{
+    protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl) {
+        sg2d.loops.drawGlyphListAALoop.DrawGlyphListAA(sg2d, sg2d.surfaceData,
+                                                       gl);
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/GlyphListLoopPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/GlyphListLoopPipe.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/GlyphListLoopPipe.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -36,8 +36,9 @@
+  * the installed loop may not match the glyphvector.
+  */
+ 
+-public abstract class GlyphListLoopPipe extends GlyphListPipe {
+-
++public abstract class GlyphListLoopPipe extends GlyphListPipe
++    implements LoopBasedPipe
++{
+     protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl,
+                                  int aaHint) {
+         switch (aaHint) {
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/LoopBasedPipe.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/LoopBasedPipe.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -0,0 +1,37 @@
++/*
++ * Copyright 2009 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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.java2d.pipe;
++
++/**
++ * This is a marker interface used by Pipes that need RenderLoops.
++ * RenderLoops are validated in SurfaceData when a pipe is recognised to
++ * implement this interface.
++ *
++ * @author Mario Torre <neugens@aicas.com>
++ */
++public interface LoopBasedPipe {
++
++}
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/LoopPipe.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/LoopPipe.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/LoopPipe.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -46,7 +46,8 @@
+ public class LoopPipe
+     implements PixelDrawPipe,
+                PixelFillPipe,
+-               ShapeDrawPipe
++               ShapeDrawPipe,
++               LoopBasedPipe
+ {
+     final static RenderingEngine RenderEngine = RenderingEngine.getInstance();
+ 
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/SolidTextRenderer.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/SolidTextRenderer.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/SolidTextRenderer.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -35,8 +35,9 @@
+  * a solid source colour to an opaque destination.
+  */
+ 
+-public class SolidTextRenderer extends GlyphListLoopPipe {
+-
++public class SolidTextRenderer extends GlyphListLoopPipe
++    implements LoopBasedPipe
++{
+     protected void drawGlyphList(SunGraphics2D sg2d, GlyphList gl) {
+         sg2d.loops.drawGlyphListLoop.DrawGlyphList(sg2d, sg2d.surfaceData, gl);
+     }
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/share/classes/sun/java2d/pipe/SpanShapeRenderer.java
+--- openjdk.orig/jdk/src/share/classes/sun/java2d/pipe/SpanShapeRenderer.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/share/classes/sun/java2d/pipe/SpanShapeRenderer.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -65,7 +65,9 @@
+         }
+     }
+ 
+-    public static class Simple extends SpanShapeRenderer {
++    public static class Simple extends SpanShapeRenderer
++        implements  LoopBasedPipe
++    {
+         public Object startSequence(SunGraphics2D sg, Shape s,
+                                     Rectangle devR, int[] bbox) {
+             return sg;
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/solaris/classes/sun/java2d/x11/X11SurfaceData.java
+--- openjdk.orig/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/solaris/classes/sun/java2d/x11/X11SurfaceData.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -388,7 +388,10 @@
+             // if a GlyphVector overrides the AA setting.
+             // We use getRenderLoops() rather than setting solidloops
+             // directly so that we get the appropriate loops in XOR mode.
+-            sg2d.loops = getRenderLoops(sg2d);
++            if (sg2d.loops == null) {
++                // assert(some pipe will always be a LoopBasedPipe)
++                sg2d.loops = getRenderLoops(sg2d);
++            }
+         } else {
+             super.validatePipe(sg2d);
+         }
+diff -r 1f2ef3a7d7c0 -r 634221297c37 src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java
+--- openjdk.orig/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java	Fri Oct 23 16:21:50 2009 +0400
++++ openjdk/jdk/src/windows/classes/sun/java2d/windows/GDIWindowSurfaceData.java	Fri Oct 30 19:19:35 2009 +0100
+@@ -210,7 +210,10 @@
+             // if a GlyphVector overrides the AA setting.
+             // We use getRenderLoops() rather than setting solidloops
+             // directly so that we get the appropriate loops in XOR mode.
+-            sg2d.loops = getRenderLoops(sg2d);
++            if (sg2d.loops == null) {
++                // assert(some pipe will always be a LoopBasedPipe)
++                sg2d.loops = getRenderLoops(sg2d);
++            }
+         } else {
+             super.validatePipe(sg2d);
+         }
--- a/patches/params-cast-size_t.patch	Sat Jan 22 03:48:53 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,295 +0,0 @@
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	2010-09-19 16:07:14.939307365 +0100
-@@ -2619,7 +2619,7 @@
-   if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
-     size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
-     n_blks +=  CMSOldPLABReactivityFactor*multiple*n_blks;
--    n_blks = MIN2(n_blks, CMSOldPLABMax);
-+    n_blks = MIN2(n_blks, (size_t)CMSOldPLABMax);
-   }
-   assert(n_blks > 0, "Error");
-   _cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	2010-09-19 16:07:14.915307286 +0100
-@@ -967,7 +967,7 @@
-   if (free_percentage < desired_free_percentage) {
-     size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
-     assert(desired_capacity >= capacity(), "invalid expansion size");
--    expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
-+    expand_bytes = MAX2((long unsigned int) (desired_capacity - capacity()), (long unsigned int) MinHeapDeltaBytes);
-   }
-   if (expand_bytes > 0) {
-     if (PrintGCDetails && Verbose) {
-@@ -6191,7 +6191,7 @@
-     HeapWord* curAddr = _markBitMap.startWord();
-     while (curAddr < _markBitMap.endWord()) {
-       size_t remaining  = pointer_delta(_markBitMap.endWord(), curAddr);
--      MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
-+      MemRegion chunk(curAddr, MIN2((size_t) CMSBitMapYieldQuantum, remaining));
-       _markBitMap.clear_large_range(chunk);
-       if (ConcurrentMarkSweepThread::should_yield() &&
-           !foregroundGCIsActive() &&
-@@ -6484,7 +6484,7 @@
-     return;
-   }
-   // Double capacity if possible
--  size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
-+  size_t new_capacity = MIN2((size_t) (_capacity*2), (size_t) MarkStackSizeMax);
-   // Do not give up existing stack until we have managed to
-   // get the double capacity that we desired.
-   ReservedSpace rs(ReservedSpace::allocation_align_size_up(
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-09-19 15:38:16.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp	2010-09-19 16:07:14.915307286 +0100
-@@ -452,7 +452,7 @@
-   _regionStack(),
-   // _finger set in set_non_marking_state
- 
--  _max_task_num(MAX2(ParallelGCThreads, (size_t)1)),
-+  _max_task_num(MAX2((size_t)ParallelGCThreads, (size_t)1)),
-   // _active_tasks set in set_non_marking_state
-   // _tasks set inside the constructor
-   _task_queues(new CMTaskQueueSet((int) _max_task_num)),
-@@ -503,7 +503,7 @@
-   SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set();
-   satb_qs.set_buffer_size(G1SATBBufferSize);
- 
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   _par_cleanup_thread_state = NEW_C_HEAP_ARRAY(ParCleanupThreadState*, size);
-   for (int i = 0 ; i < size; i++) {
-     _par_cleanup_thread_state[i] = new ParCleanupThreadState;
-@@ -562,7 +562,7 @@
-       _sleep_factor             = sleep_factor;
-       _marking_task_overhead    = marking_task_overhead;
-     } else {
--      _parallel_marking_threads = MAX2((ParallelGCThreads + 2) / 4, (size_t)1);
-+      _parallel_marking_threads = MAX2((size_t)((ParallelGCThreads + 2) / 4), (size_t)1);
-       _sleep_factor             = 0.0;
-       _marking_task_overhead    = 1.0;
-     }
-@@ -689,7 +689,7 @@
- }
- 
- ConcurrentMark::~ConcurrentMark() {
--  int size = (int) MAX2(ParallelGCThreads, (size_t)1);
-+  int size = (int) MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int i = 0; i < size; i++) delete _par_cleanup_thread_state[i];
-   FREE_C_HEAP_ARRAY(ParCleanupThreadState*,
-                     _par_cleanup_thread_state);
-@@ -1781,7 +1781,7 @@
-   if (has_aborted()) return;
- 
-   int first = 0;
--  int last = (int)MAX2(ParallelGCThreads, (size_t)1);
-+  int last = (int)MAX2((size_t)ParallelGCThreads, (size_t)1);
-   for (int t = 0; t < last; t++) {
-     UncleanRegionList* list = &_par_cleanup_thread_state[t]->list;
-     assert(list->well_formed(), "Inv");
-@@ -3281,7 +3281,7 @@
-   // of things to do) or totally (at the very end).
-   size_t target_size;
-   if (partially)
--    target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
-+    target_size = MIN2((size_t)_task_queue->max_elems()/3, (size_t)GCDrainStackTargetSize);
-   else
-     target_size = 0;
- 
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	2010-09-19 16:07:14.915307286 +0100
-@@ -1066,7 +1066,7 @@
- // This can be done by either mutator threads together with the
- // concurrent refinement threads or GC threads.
- int HeapRegionRemSet::num_par_rem_sets() {
--  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
-+  return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
- }
- 
- HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	2010-09-19 16:07:14.915307286 +0100
-@@ -864,8 +864,8 @@
- void PSParallelCompact::initialize_dead_wood_limiter()
- {
-   const size_t max = 100;
--  _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
--  _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-+  _dwl_mean = double(MIN2((size_t) ParallelOldDeadWoodLimiterMean, max)) / 100.0;
-+  _dwl_std_dev = double(MIN2((size_t) ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
-   _dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
-   DEBUG_ONLY(_dwl_initialized = true;)
-   _dwl_adjustment = normal_distribution(1.0);
-diff -Nru openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp
---- openjdk.orig/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	2010-09-19 16:07:14.915307286 +0100
-@@ -63,7 +63,7 @@
-   _last_used = current_live;
- 
-   // We have different alignment constraints than the rest of the heap.
--  const size_t alignment = MAX2(MinPermHeapExpansion,
-+  const size_t alignment = MAX2((size_t) MinPermHeapExpansion,
-                                 virtual_space()->alignment());
- 
-   // Compute the desired size:
-diff -Nru openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/collectorPolicy.cpp	2010-09-19 16:07:14.939307365 +0100
-@@ -297,7 +297,7 @@
-     // yield a size that is too small) and bound it by MaxNewSize above.
-     // Ergonomics plays here by previously calculating the desired
-     // NewSize and MaxNewSize.
--    max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
-+    max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
-   }
-   assert(max_new_size > 0, "All paths should set max_new_size");
- 
-@@ -324,7 +324,7 @@
-       // generally small compared to the NewRatio calculation.
-       _min_gen0_size = NewSize;
-       desired_new_size = NewSize;
--      max_new_size = MAX2(max_new_size, NewSize);
-+      max_new_size = MAX2(max_new_size, (size_t) NewSize);
-     } else {
-       // For the case where NewSize is the default, use NewRatio
-       // to size the minimum and initial generation sizes.
-@@ -332,10 +332,10 @@
-       // NewRatio is overly large, the resulting sizes can be too
-       // small.
-       _min_gen0_size = MAX2(scale_by_NewRatio_aligned(min_heap_byte_size()),
--                          NewSize);
-+                          (size_t) NewSize);
-       desired_new_size =
-         MAX2(scale_by_NewRatio_aligned(initial_heap_byte_size()),
--             NewSize);
-+             (size_t) NewSize);
-     }
- 
-     assert(_min_gen0_size > 0, "Sanity check");
-@@ -390,14 +390,14 @@
-       // Adjust gen0 down to accomodate OldSize
-       *gen0_size_ptr = heap_size - min_gen0_size;
-       *gen0_size_ptr =
--        MAX2((uintx)align_size_down(*gen0_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen0_size_ptr, min_alignment()),
-              min_alignment());
-       assert(*gen0_size_ptr > 0, "Min gen0 is too large");
-       result = true;
-     } else {
-       *gen1_size_ptr = heap_size - *gen0_size_ptr;
-       *gen1_size_ptr =
--        MAX2((uintx)align_size_down(*gen1_size_ptr, min_alignment()),
-+        MAX2((size_t)align_size_down(*gen1_size_ptr, min_alignment()),
-                        min_alignment());
-     }
-   }
-@@ -421,7 +421,7 @@
-   // for setting the gen1 maximum.
-   _max_gen1_size = max_heap_byte_size() - _max_gen0_size;
-   _max_gen1_size =
--    MAX2((uintx)align_size_down(_max_gen1_size, min_alignment()),
-+    MAX2((size_t)align_size_down(_max_gen1_size, min_alignment()),
-          min_alignment());
-   // If no explicit command line flag has been set for the
-   // gen1 size, use what is left for gen1.
-@@ -435,11 +435,11 @@
-       "gen0 has an unexpected minimum size");
-     set_min_gen1_size(min_heap_byte_size() - min_gen0_size());
-     set_min_gen1_size(
--      MAX2((uintx)align_size_down(_min_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_min_gen1_size, min_alignment()),
-            min_alignment()));
-     set_initial_gen1_size(initial_heap_byte_size() - initial_gen0_size());
-     set_initial_gen1_size(
--      MAX2((uintx)align_size_down(_initial_gen1_size, min_alignment()),
-+      MAX2((size_t)align_size_down(_initial_gen1_size, min_alignment()),
-            min_alignment()));
- 
-   } else {
-diff -Nru openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
---- openjdk.orig/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-09-01 01:23:45.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp	2010-09-19 16:07:14.939307365 +0100
-@@ -221,7 +221,7 @@
-   size_t init_sz;
- 
-   if (TLABSize > 0) {
--    init_sz = MIN2(TLABSize / HeapWordSize, max_size());
-+    init_sz = MIN2((size_t) (TLABSize / HeapWordSize), max_size());
-   } else if (global_stats() == NULL) {
-     // Startup issue - main thread initialized before heap initialized.
-     init_sz = min_size();
-diff -Nru openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp openjdk/hotspot/src/share/vm/runtime/arguments.cpp
---- openjdk.orig/hotspot/src/share/vm/runtime/arguments.cpp	2010-09-19 15:38:15.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	2010-09-19 16:07:14.939307365 +0100
-@@ -1073,7 +1073,7 @@
-     // NewSize was set on the command line and it is larger than
-     // preferred_max_new_size.
-     if (!FLAG_IS_DEFAULT(NewSize)) {   // NewSize explicitly set at command-line
--      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
-+      FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t) NewSize, preferred_max_new_size));
-     } else {
-       FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
-     }
-@@ -1092,7 +1092,7 @@
-     // there was no obvious reason.  Also limit to the case where
-     // MaxNewSize has not been set.
- 
--    FLAG_SET_ERGO(intx, NewRatio, MAX2(NewRatio, new_ratio));
-+    FLAG_SET_ERGO(intx, NewRatio, MAX2((intx) NewRatio, new_ratio));
- 
-     // Code along this path potentially sets NewSize and OldSize
- 
-@@ -1134,8 +1134,8 @@
-       // Unless explicitly requested otherwise, make young gen
-       // at least min_new, and at most preferred_max_new_size.
-       if (FLAG_IS_DEFAULT(NewSize)) {
--        FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
--        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
-+	FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t) NewSize, min_new));
-+        FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t) NewSize));
-         if (PrintGCDetails && Verbose) {
-           // Too early to use gclog_or_tty
-           tty->print_cr("Ergo set NewSize: " SIZE_FORMAT, NewSize);
-@@ -1146,7 +1146,7 @@
-       // later NewRatio will decide how it grows; see above.
-       if (FLAG_IS_DEFAULT(OldSize)) {
-         if (max_heap > NewSize) {
--          FLAG_SET_ERGO(uintx, OldSize, MIN2(3*NewSize, max_heap - NewSize));
-+	  FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t) 3*NewSize, max_heap - (size_t) NewSize));
-           if (PrintGCDetails && Verbose) {
-             // Too early to use gclog_or_tty
-             tty->print_cr("Ergo set OldSize: " SIZE_FORMAT, OldSize);
---- openjdk.orig/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2010-10-28 05:45:16.000000000 -0400
-+++ openjdk/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp	2010-10-28 05:46:22.000000000 -0400
-@@ -37,7 +37,7 @@ void objArrayKlass::objarray_follow_cont
-   const size_t beg_index = size_t(index);
-   assert(beg_index < len || len == 0, "index too large");
- 
--  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
-+  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
-   const size_t end_index = beg_index + stride;
-   T* const base = (T*)a->base();
-   T* const beg = base + beg_index;
-@@ -71,7 +71,7 @@ void objArrayKlass::objarray_follow_cont
-   const size_t beg_index = size_t(index);
-   assert(beg_index < len || len == 0, "index too large");
- 
--  const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
-+  const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
-   const size_t end_index = beg_index + stride;
-   T* const base = (T*)a->base();
-   T* const beg = base + beg_index;
---- openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp~	2010-10-08 20:29:24.000000000 +0000
-+++ openjdk/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	2010-11-29 07:27:56.000000000 +0000
-@@ -163,7 +163,7 @@
-   const size_t num_overflow_elems = of_stack->size();
-   const size_t space_available = queue->max_elems() - queue->size();
-   const size_t num_take_elems = MIN3(space_available / 4,
--                                     ParGCDesiredObjsFromOverflowList,
-+                                     (size_t) ParGCDesiredObjsFromOverflowList,
-                                      num_overflow_elems);
-   // Transfer the most recent num_take_elems from the overflow
-   // stack to our work queue.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/rh661505-jpeg.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,16 @@
+--- openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c.old	2010-12-24 13:20:49.444589072 -0500
++++ openjdk/jdk/src/share/native/sun/awt/image/jpeg/imageioJPEG.c	2010-12-24 13:21:58.059463767 -0500
+@@ -1488,2 +1488,4 @@
+ 
++#define JPEG_APP1  (JPEG_APP0 + 1)  /* EXIF APP1 marker code  */
++
+ JNIEXPORT jlong JNICALL
+@@ -1541,2 +1543,3 @@
+     jpegsavemarkers(cinfo, ICC_MARKER, 0xFFFF);
++    jpegsavemarkers(cinfo, JPEG_APP1, 0xFFFF);
+ 
+@@ -1601,4 +1604,2 @@
+ 
+-#define JPEG_APP1  (JPEG_APP0 + 1)  /* EXIF APP1 marker code  */
+-
+ /*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/rh676659-gcc-export-dynamic.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,12 @@
+diff -r 55b9f498dbce make/linux/makefiles/gcc.make
+--- openjdk/hotspot/make/linux/makefiles/gcc.make	Thu Feb 10 16:24:29 2011 -0800
++++ openjdk/hotspot/make/linux/makefiles/gcc.make	Fri Feb 11 18:09:21 2011 -0500
+@@ -196,7 +196,7 @@
+ SHARED_FLAG = -shared
+ 
+ # Keep symbols even they are not used
+-AOUT_FLAGS += -export-dynamic
++AOUT_FLAGS += -Wl,-export-dynamic
+ 
+ #------------------------------------------------------------------------
+ # Debug flags
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110209/4421494.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,106 @@
+# HG changeset patch
+# User alanb
+# Date 1297019854 0
+# Node ID d00080320e439c339594d380f0322c865553a046
+# Parent  f7afe7a5e086a6af1f23dd6304bcbe7fb2b6226a
+4421494: infinite loop while parsing double literal
+Reviewed-by: darcy, alanb
+Contributed-by: dmitry.nadezhin@oracle.com
+
+diff --git a/src/share/classes/sun/misc/FloatingDecimal.java b/src/share/classes/sun/misc/FloatingDecimal.java
+--- openjdk/jdk/src/share/classes/sun/misc/FloatingDecimal.java
++++ openjdk/jdk/src/share/classes/sun/misc/FloatingDecimal.java
+@@ -1547,7 +1547,7 @@ public class FloatingDecimal{
+                 if ( (cmpResult = bigB.cmp( bigD ) ) > 0 ){
+                     overvalue = true; // our candidate is too big.
+                     diff = bigB.sub( bigD );
+-                    if ( (bigIntNBits == 1) && (bigIntExp > -expBias) ){
++                    if ( (bigIntNBits == 1) && (bigIntExp > -expBias+1) ){
+                         // candidate is a normalized exact power of 2 and
+                         // is too big. We will be subtracting.
+                         // For our purposes, ulp is the ulp of the
+diff --git a/test/java/lang/Double/ParseDouble.java b/test/java/lang/Double/ParseDouble.java
+--- openjdk/jdk/test/java/lang/Double/ParseDouble.java
++++ openjdk/jdk/test/java/lang/Double/ParseDouble.java
+@@ -23,11 +23,12 @@
+ 
+ /*
+  * @test
+- * @bug 4160406 4705734 4707389 4826774 4895911
++ * @bug 4160406 4705734 4707389 4826774 4895911 4421494
+  * @summary Test for Double.parseDouble method and acceptance regex
+  */
+ 
+ import java.util.regex.*;
++import java.math.BigDecimal;
+ 
+ public class ParseDouble {
+ 
+@@ -416,7 +417,15 @@ public class ParseDouble {
+ 
+         "0x00100p1",
+         "0x00.100p1",
+-        "0x001.100p1"
++        "0x001.100p1",
++
++        // Limits
++
++        "1.7976931348623157E308",     // Double.MAX_VALUE
++        "4.9e-324",                   // Double.MIN_VALUE
++        "2.2250738585072014e-308",    // Double.MIN_NORMAL
++
++        "2.2250738585072012e-308",    // near Double.MIN_NORMAL
+     };
+ 
+     static String paddedBadStrings[];
+@@ -546,6 +555,42 @@ public class ParseDouble {
+ 
+     }
+ 
++    /**
++     * For each subnormal power of two, test at boundaries of
++     * region that should convert to that value.
++     */
++    private static void testSubnormalPowers() {
++        BigDecimal TWO = BigDecimal.valueOf(2);
++        // An ulp is the same for all subnormal values
++        BigDecimal ulp_BD = new BigDecimal(Double.MIN_VALUE);
++
++        System.out.println("Testing subnormal powers of two.");
++        for(int i = -1074; i <= -1022; i++) {
++            double d = Math.scalb(1.0, i);
++
++            /*
++             * The region [d - ulp/2, d + ulp/2] should round to d.
++             */
++            BigDecimal d_BD = new BigDecimal(d);
++
++            BigDecimal lowerBound = d_BD.subtract(ulp_BD.divide(TWO));
++            BigDecimal upperBound = d_BD.add(ulp_BD.divide(TWO));
++
++            double convertedLowerBound = Double.parseDouble(lowerBound.toString());
++            double convertedUpperBound = Double.parseDouble(upperBound.toString());
++
++            if (convertedLowerBound != d) {
++                System.out.printf("Exponent %d, unexpected lower bound converted to %a, not %a.%n",
++                                  i, convertedLowerBound, d);
++            }
++
++            if (convertedUpperBound != d) {
++                System.out.printf("Exponent %d, unexpected upper bound converted to %a, not %a.%n",
++                                  i, convertedUpperBound, d);
++            }
++        }
++    }
++
+     public static void main(String[] args) throws Exception {
+         rudimentaryTest();
+ 
+@@ -558,5 +603,7 @@ public class ParseDouble {
+         testRegex(paddedGoodStrings, false);
+         testRegex(badStrings, true);
+         testRegex(paddedBadStrings, true);
++
++        testSubnormalPowers();
+     }
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6878713.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,143 @@
+# HG changeset patch
+# User kamg
+# Date 1296505046 18000
+# Node ID a6f5011d46a97d3e710aaed5c8ea85af04236c28
+# Parent  2c8e1acf0433db897eb3bc8f6e1276b2c84769b7
+6878713: Verifier heap corruption, relating to backward jsrs
+Summary: Added overflow detection in arena Amalloc methods
+Reviewed-by: coleenp, phh
+
+diff --git a/src/share/vm/memory/allocation.cpp b/src/share/vm/memory/allocation.cpp
+--- openjdk/hotspot/src/share/vm/memory/allocation.cpp
++++ openjdk/hotspot/src/share/vm/memory/allocation.cpp
+@@ -377,6 +377,9 @@ size_t Arena::used() const {
+   return sum;                   // Return total consumed space.
+ }
+ 
++void Arena::signal_out_of_memory(size_t sz, const char* whence) const {
++  vm_exit_out_of_memory(sz, whence);
++}
+ 
+ // Grow a new Chunk
+ void* Arena::grow( size_t x ) {
+@@ -386,8 +389,9 @@ void* Arena::grow( size_t x ) {
+   Chunk *k = _chunk;            // Get filled-up chunk address
+   _chunk = new (len) Chunk(len);
+ 
+-  if (_chunk == NULL)
+-      vm_exit_out_of_memory(len * Chunk::aligned_overhead_size(), "Arena::grow");
++  if (_chunk == NULL) {
++    signal_out_of_memory(len * Chunk::aligned_overhead_size(), "Arena::grow");
++  }
+ 
+   if (k) k->set_next(_chunk);   // Append new chunk to end of linked list
+   else _first = _chunk;
+@@ -484,6 +488,7 @@ void* Arena::malloc(size_t size) {
+ // for debugging with UseMallocOnly
+ void* Arena::internal_malloc_4(size_t x) {
+   assert( (x&(sizeof(char*)-1)) == 0, "misaligned size" );
++  check_for_overflow(x, "Arena::internal_malloc_4");
+   if (_hwm + x > _max) {
+     return grow(x);
+   } else {
+diff --git a/src/share/vm/memory/allocation.hpp b/src/share/vm/memory/allocation.hpp
+--- openjdk/hotspot/src/share/vm/memory/allocation.hpp
++++ openjdk/hotspot/src/share/vm/memory/allocation.hpp
+@@ -194,6 +194,15 @@ protected:
+   friend class AllocStats;
+   debug_only(void* malloc(size_t size);)
+   debug_only(void* internal_malloc_4(size_t x);)
++
++  void signal_out_of_memory(size_t request, const char* whence) const;
++
++  void check_for_overflow(size_t request, const char* whence) const {
++    if (UINTPTR_MAX - request < (uintptr_t)_hwm) {
++      signal_out_of_memory(request, whence);
++    }
++  }
++
+  public:
+   Arena();
+   Arena(size_t init_size);
+@@ -207,6 +216,7 @@ protected:
+     assert(is_power_of_2(ARENA_AMALLOC_ALIGNMENT) , "should be a power of 2");
+     x = ARENA_ALIGN(x);
+     debug_only(if (UseMallocOnly) return malloc(x);)
++    check_for_overflow(x, "Arena::Amalloc");
+     NOT_PRODUCT(_bytes_allocated += x);
+     if (_hwm + x > _max) {
+       return grow(x);
+@@ -220,6 +230,7 @@ protected:
+   void *Amalloc_4(size_t x) {
+     assert( (x&(sizeof(char*)-1)) == 0, "misaligned size" );
+     debug_only(if (UseMallocOnly) return malloc(x);)
++    check_for_overflow(x, "Arena::Amalloc_4");
+     NOT_PRODUCT(_bytes_allocated += x);
+     if (_hwm + x > _max) {
+       return grow(x);
+@@ -240,6 +251,7 @@ protected:
+     size_t delta = (((size_t)_hwm + DALIGN_M1) & ~DALIGN_M1) - (size_t)_hwm;
+     x += delta;
+ #endif
++    check_for_overflow(x, "Arena::Amalloc_D");
+     NOT_PRODUCT(_bytes_allocated += x);
+     if (_hwm + x > _max) {
+       return grow(x); // grow() returns a result aligned >= 8 bytes.
+diff --git a/src/share/vm/utilities/globalDefinitions_gcc.hpp b/src/share/vm/utilities/globalDefinitions_gcc.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
+@@ -72,6 +72,7 @@
+ # endif
+ 
+ #ifdef LINUX
++#define __STDC_LIMIT_MACROS
+ #include <inttypes.h>
+ #include <signal.h>
+ #include <ucontext.h>
+diff --git a/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp b/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp
+@@ -141,6 +141,17 @@ typedef unsigned int            uintptr_
+ // If this gets an error, figure out a symbol XXX that implies the
+ // prior definition of intptr_t, and add "&& !defined(XXX)" above.
+ #endif
++#endif
++
++// On solaris 8, UINTPTR_MAX is defined as empty.  
++// Everywhere else it's an actual value.
++#if UINTPTR_MAX - 1 == -1
++#undef UINTPTR_MAX
++#ifdef _LP64
++#define UINTPTR_MAX UINT64_MAX
++#else
++#define UINTPTR_MAX UINT32_MAX
++#endif /* ifdef _LP64 */
+ #endif
+ 
+ // Additional Java basic types
+diff --git a/src/share/vm/utilities/globalDefinitions_visCPP.hpp b/src/share/vm/utilities/globalDefinitions_visCPP.hpp
+--- openjdk/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp
++++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_visCPP.hpp
+@@ -36,6 +36,7 @@
+ # include <stdio.h> // for va_list
+ # include <time.h>
+ # include <fcntl.h>
++# include <limits.h>
+ // Need this on windows to get the math constants (e.g., M_PI).
+ #define _USE_MATH_DEFINES
+ # include <math.h>
+@@ -92,6 +93,14 @@ typedef signed   __int64 ssize_t;
+ #else
+ typedef signed   int intptr_t;
+ typedef signed   int ssize_t;
++#endif
++
++#ifndef UINTPTR_MAX
++#ifdef _WIN64
++#define UINTPTR_MAX _UI64_MAX
++#else
++#define UINTPTR_MAX _UI32_MAX
++#endif
+ #endif
+ 
+ //----------------------------------------------------------------------------------------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6907662.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,758 @@
+--- openjdk/jdk/src/share/classes/java/awt/AWTEvent.java	2011-01-26 18:38:27.502360608 +0300
++++ openjdk/jdk/src/share/classes/java/awt/AWTEvent.java	2011-01-26 18:38:27.078362272 +0300
+@@ -33,6 +33,12 @@
+ import java.util.logging.Logger;
+ import java.util.logging.Level;
+ 
++import java.security.AccessControlContext;
++import java.security.AccessController;
++import java.io.ObjectInputStream;
++import java.io.IOException;
++import sun.awt.AWTAccessor;
++
+ /**
+  * The root event class for all AWT events.
+  * This class and its subclasses supercede the original
+@@ -97,10 +103,33 @@
+      */
+     protected boolean consumed = false;
+ 
++    /*
++     * The event's AccessControlContext.
++     */
++    private transient volatile AccessControlContext acc =
++        AccessController.getContext();
++
++    /*
++     * Returns the acc this event was constructed with.
++     */
++    final AccessControlContext getAccessControlContext() {
++        if (acc == null) {
++            throw new SecurityException("AWTEvent is missing AccessControlContext");
++        }
++            return acc;
++        }
++
+     transient boolean focusManagerIsDispatching = false;
+     transient boolean isPosted;
+ 
+     /**
++     * Indicates whether this AWTEvent was generated by the system as
++     * opposed to by user code.
++     */
++    private transient boolean isSystemGenerated;
++
++
++    /**
+      * The event mask for selecting component events.
+      */
+     public final static long COMPONENT_EVENT_MASK = 0x01;
+@@ -230,6 +259,19 @@
+         if (!GraphicsEnvironment.isHeadless()) {
+             initIDs();
+         }
++        AWTAccessor.setAWTEventAccessor(new AWTAccessor.AWTEventAccessor() {
++                public void setSystemGenerated(AWTEvent ev) {
++                    ev.isSystemGenerated = true;
++                }
++
++                public boolean isSystemGenerated(AWTEvent ev) {
++                    return ev.isSystemGenerated;
++                }
++
++                public AccessControlContext getAccessControlContext(AWTEvent ev) {
++                    return ev.getAccessControlContext();
++                }
++        });
+     }
+ 
+     private static synchronized Field get_InputEvent_CanAccessSystemClipboard() {
+@@ -564,4 +606,11 @@
+             }
+         }
+     }
++
++    private void readObject(ObjectInputStream in) 
++        throws ClassNotFoundException, IOException
++    {
++        this.acc = AccessController.getContext();
++        in.defaultReadObject();
++    }
+ } // class AWTEvent
+--- openjdk/jdk/src/share/classes/java/awt/Component.java	2011-01-26 18:38:28.678359148 +0300
++++ openjdk/jdk/src/share/classes/java/awt/Component.java	2011-01-26 18:38:28.166361875 +0300
+@@ -58,9 +58,11 @@
+ import java.lang.reflect.Method;
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
++import java.security.AccessControlContext;
+ import javax.accessibility.*;
+ import java.util.logging.*;
+ import java.applet.Applet;
++import sun.awt.AWTAccessor;
+ 
+ import sun.security.action.GetPropertyAction;
+ import sun.awt.AppContext;
+@@ -451,6 +453,12 @@
+     static final Object LOCK = new AWTTreeLock();
+     static class AWTTreeLock {}
+ 
++    /*
++     * The component's AccessControlContext.
++     */
++    private transient volatile AccessControlContext acc =
++        AccessController.getContext();
++
+     /**
+      * Minimum size.
+      * (This field perhaps should have been transient).
+@@ -641,6 +649,16 @@
+         return changeSupportLock;
+     }
+ 
++    /*
++     * Returns the acc this component was constructed with.
++     */
++    final AccessControlContext getAccessControlContext() {
++        if (acc == null) {
++            throw new SecurityException("Component is missing AccessControlContext");
++        }
++        return acc;
++    }
++
+     boolean isPacked = false;
+ 
+     /**
+@@ -778,6 +796,16 @@
+             }
+     }
+ 
++    static {
++        AWTAccessor.setComponentAccessor(new AWTAccessor.ComponentAccessor() {
++                public AccessControlContext getAccessControlContext(Component comp) {
++                    return comp.getAccessControlContext();
++                }
++
++            });
++    }
++
++
+     /**
+      * Constructs a new component. Class <code>Component</code> can be
+      * extended directly to create a lightweight component that does not
+@@ -8317,6 +8345,8 @@
+     {
+         changeSupportLock = new Object();
+ 
++        acc = AccessController.getContext();
++
+         s.defaultReadObject();
+ 
+         appContext = AppContext.getAppContext();
+--- openjdk/jdk/src/share/classes/java/awt/EventDispatchThread.java	2011-01-26 18:38:30.086359974 +0300
++++ openjdk/jdk/src/share/classes/java/awt/EventDispatchThread.java	2011-01-26 18:38:29.658361680 +0300
+@@ -284,10 +284,7 @@
+                           // Threads in the AppContext
+ 
+         }
+-        // Can get and throw only unchecked exceptions
+-        catch (RuntimeException e) {
+-            processException(e, modalFiltersCount > 0);
+-        } catch (Error e) {
++        catch (Throwable e) {
+             processException(e, modalFiltersCount > 0);
+         }
+         return true;
+--- openjdk/jdk/src/share/classes/java/awt/EventQueue.java	2011-01-26 18:38:31.062358938 +0300
++++ openjdk/jdk/src/share/classes/java/awt/EventQueue.java	2011-01-26 18:38:30.658361787 +0300
+@@ -43,6 +43,12 @@
+ import sun.awt.PeerEvent;
+ import sun.awt.SunToolkit;
+ 
++import java.security.AccessControlContext;
++import java.security.ProtectionDomain;
++
++import sun.misc.SharedSecrets;
++import sun.misc.JavaSecurityAccess;
++
+ /**
+  * <code>EventQueue</code> is a platform-independent class
+  * that queues events, both from the underlying peer classes
+@@ -554,6 +560,9 @@
+         return null;
+     }
+ 
++    private static final JavaSecurityAccess javaSecurityAccess =
++        SharedSecrets.getJavaSecurityAccess();
++
+     /**
+      * Dispatches an event. The manner in which the event is
+      * dispatched depends upon the type of the event and the
+@@ -592,13 +601,49 @@
+      * @throws NullPointerException if <code>event</code> is <code>null</code>
+      * @since           1.2
+      */
+-    protected void dispatchEvent(AWTEvent event) {
++    protected void dispatchEvent(final AWTEvent event) {
++        final Object src = event.getSource();
++        final PrivilegedAction<Void> action = new PrivilegedAction<Void>() {
++            public Void run() {
++                dispatchEventImpl(event, src);
++                return null;
++            }
++        };
++
++        final AccessControlContext stack = AccessController.getContext();
++        final AccessControlContext srcAcc = getAccessControlContextFrom(src);
++        final AccessControlContext eventAcc = event.getAccessControlContext();
++        if (srcAcc == null) {
++            javaSecurityAccess.doIntersectionPrivilege(action, stack, eventAcc);
++        } else {
++            javaSecurityAccess.doIntersectionPrivilege(
++                new PrivilegedAction<Void>() {
++                    public Void run() {
++                        javaSecurityAccess.doIntersectionPrivilege(action, eventAcc);
++                        return null;
++                    }
++                }, stack, srcAcc);
++        }
++    }
++
++    private static AccessControlContext getAccessControlContextFrom(Object src) {
++        return src instanceof Component ?
++            ((Component)src).getAccessControlContext() :
++            src instanceof MenuComponent ?
++                ((MenuComponent)src).getAccessControlContext() :
++                src instanceof TrayIcon ?
++                    ((TrayIcon)src).getAccessControlContext() :
++                    null;
++    }
++
++    /**
++     * Called from dispatchEvent() under a correct AccessControlContext  
++     */
++    private void dispatchEventImpl(final AWTEvent event, final Object src) {
+         event.isPosted = true;
+-        Object src = event.getSource();
+         if (event instanceof ActiveEvent) {
+             // This could become the sole method of dispatching in time.
+             setCurrentEventAndMostRecentTimeImpl(event);
+-
+             ((ActiveEvent)event).dispatch();
+         } else if (src instanceof Component) {
+             ((Component)src).dispatchEvent(event);
+--- openjdk/jdk/src/share/classes/java/awt/MenuComponent.java	2011-01-26 18:38:32.326360585 +0300
++++ openjdk/jdk/src/share/classes/java/awt/MenuComponent.java	2011-01-26 18:38:31.821360242 +0300
+@@ -32,6 +32,9 @@
+ import sun.awt.SunToolkit;
+ import javax.accessibility.*;
+ 
++import java.security.AccessControlContext;
++import java.security.AccessController;
++
+ /**
+  * The abstract class <code>MenuComponent</code> is the superclass
+  * of all menu-related components. In this respect, the class
+@@ -99,6 +102,23 @@
+     boolean newEventsOnly = false;
+ 
+     /*
++     * The menu's AccessControlContext.
++     */
++    private transient volatile AccessControlContext acc =
++            AccessController.getContext();
++    
++    /*
++     * Returns the acc this menu component was constructed with.
++     */
++    final AccessControlContext getAccessControlContext() {
++        if (acc == null) {
++            throw new SecurityException(
++                    "MenuComponent is missing AccessControlContext");
++        }
++        return acc;
++    }
++
++    /*
+      * Internal constants for serialization.
+      */
+     final static String actionListenerK = Component.actionListenerK;
+@@ -385,6 +405,9 @@
+         throws ClassNotFoundException, IOException, HeadlessException
+     {
+         GraphicsEnvironment.checkHeadless();
++
++        acc = AccessController.getContext();
++
+         s.defaultReadObject();
+ 
+         appContext = AppContext.getAppContext();
+--- openjdk/jdk/src/share/classes/java/awt/TrayIcon.java	2011-01-26 18:38:33.458362899 +0300
++++ openjdk/jdk/src/share/classes/java/awt/TrayIcon.java	2011-01-26 18:38:33.014361521 +0300
+@@ -39,6 +39,8 @@
+ import sun.awt.AppContext;
+ import sun.awt.SunToolkit;
+ import java.util.EventObject;
++import java.security.AccessControlContext;
++import java.security.AccessController;
+ 
+ /**
+  * A <code>TrayIcon</code> object represents a tray icon that can be
+@@ -89,6 +91,7 @@
+  * @author Anton Tarasov
+  */
+ public class TrayIcon {
++
+     private Image image;
+     private String tooltip;
+     private PopupMenu popup;
+@@ -102,6 +105,24 @@
+     transient MouseMotionListener mouseMotionListener;
+     transient ActionListener actionListener;
+ 
++    /*
++     * The tray icon's AccessControlContext.
++     *
++     * Unlike the acc in Component, this field is made final
++     * because TrayIcon is not serializable.
++     */
++    private final AccessControlContext acc = AccessController.getContext();
++    
++    /*
++     * Returns the acc this tray icon was constructed with.
++     */
++    final AccessControlContext getAccessControlContext() {
++        if (acc == null) {
++            throw new SecurityException("TrayIcon is missing AccessControlContext");
++        }
++        return acc;
++    }
++
+     static {
+         Toolkit.loadLibraries();
+         if (!GraphicsEnvironment.isHeadless()) {
+--- openjdk/jdk/src/share/classes/java/security/AccessControlContext.java	2011-01-26 18:38:34.693361438 +0300
++++ openjdk/jdk/src/share/classes/java/security/AccessControlContext.java	2011-01-26 18:38:34.218359986 +0300
+@@ -29,6 +29,9 @@
+ import java.util.List;
+ import sun.security.util.Debug;
+ import sun.security.util.SecurityConstants;
++import sun.misc.JavaSecurityAccess;
++import sun.misc.SharedSecrets;
++
+ 
+ /**
+  * An AccessControlContext is used to make system resource access decisions
+@@ -87,6 +90,36 @@
+     private static boolean debugInit = false;
+     private static Debug debug = null;
+ 
++    static {
++        // Set up JavaSecurityAccess in SharedSecrets
++        SharedSecrets.setJavaSecurityAccess(
++            new JavaSecurityAccess() {
++                public <T> T doIntersectionPrivilege(
++                    PrivilegedAction<T> action,
++                    final AccessControlContext stack,
++                    final AccessControlContext context)
++                {
++                    if (action == null) {
++                        throw new NullPointerException();
++                    }
++                    return AccessController.doPrivileged(
++                        action,
++                        new AccessControlContext(
++                            stack.getContext(), context).optimize()
++                    );
++                }
++
++                public <T> T doIntersectionPrivilege(
++                    PrivilegedAction<T> action,
++                    AccessControlContext context)
++                {
++                    return doIntersectionPrivilege(action,
++                        AccessController.getContext(), context);
++                }
++            }
++       );
++    }
++
+     static Debug getDebug()
+     {
+         if (debugInit)
+@@ -194,6 +227,24 @@
+     }
+ 
+     /**
++     * Constructor for JavaSecurityAccess.doIntersectionPrivilege()
++     */
++    AccessControlContext(ProtectionDomain[] context,
++                         AccessControlContext privilegedContext)
++    {
++        this.context = context;
++        this.privilegedContext = privilegedContext;
++        this.isPrivileged = true;
++    }
++
++    /**
++     * Returns this context's context.
++     */
++    ProtectionDomain[] getContext() {
++        return context;
++    }
++
++    /**
+      * Returns true if this context is privileged.
+      */
+     boolean isPrivileged()
+--- openjdk/jdk/src/share/classes/javax/swing/Timer.java	2011-01-26 18:38:35.702358958 +0300
++++ openjdk/jdk/src/share/classes/javax/swing/Timer.java	2011-01-26 18:38:35.290359835 +0300
+@@ -35,6 +35,10 @@
+ import java.awt.*;
+ import java.awt.event.*;
+ import java.io.Serializable;
++import java.io.*;
++import java.security.AccessControlContext;
++import java.security.AccessController;
++import java.security.PrivilegedAction;
+ import javax.swing.event.EventListenerList;
+ 
+ 
+@@ -174,6 +178,23 @@
+ 
+     private transient final Lock lock = new ReentrantLock();
+ 
++    /*
++     * The timer's AccessControlContext.
++     */
++     private transient volatile AccessControlContext acc =
++            AccessController.getContext();
++
++    /**
++      * Returns the acc this timer was constructed with.
++      */
++     final AccessControlContext getAccessControlContext() {
++       if (acc == null) {
++           throw new SecurityException(
++                   "Timer is missing AccessControlContext");
++       }
++       return acc;
++     }
++
+     // This field is maintained by TimerQueue.
+     // eventQueued can also be reset by the TimerQueue, but will only ever
+     // happen in applet case when TimerQueues thread is destroyed.
+@@ -191,7 +212,7 @@
+      *
+      * @param delay milliseconds for the initial and between-event delay
+      * @param listener  an initial listener; can be <code>null</code>
+-     *
++
+      * @see #addActionListener
+      * @see #setInitialDelay
+      * @see #setRepeats
+@@ -208,7 +229,6 @@
+         }
+     }
+ 
+-
+     /**
+      * DoPostEvent is a runnable class that fires actionEvents to
+      * the listeners on the EventDispatchThread, via invokeLater.
+@@ -589,7 +609,12 @@
+ 
+     void post() {
+         if (notify.compareAndSet(false, true) || !coalesce) {
+-            SwingUtilities.invokeLater(doPostEvent);
++            AccessController.doPrivileged(new PrivilegedAction<Void>() {
++                public Void run() {
++                    SwingUtilities.invokeLater(doPostEvent);
++                    return null;
++                 }
++            }, getAccessControlContext());
+         }
+     }
+ 
+@@ -611,4 +636,11 @@
+         timer.actionCommand = actionCommand;
+         return timer;
+     }
++
++     private void readObject(ObjectInputStream in) 
++        throws ClassNotFoundException, IOException
++     {
++        this.acc = AccessController.getContext();
++        in.defaultReadObject();
++     }
+ }
+--- openjdk/jdk/src/share/classes/javax/swing/TransferHandler.java	2011-01-26 18:38:36.678359115 +0300
++++ openjdk/jdk/src/share/classes/javax/swing/TransferHandler.java	2011-01-26 18:38:36.270359956 +0300
+@@ -41,6 +41,16 @@
+ import sun.awt.AppContext;
+ import sun.swing.*;
+ 
++import java.security.AccessController;
++import java.security.PrivilegedAction;
++
++import java.security.AccessControlContext;
++import java.security.ProtectionDomain;
++import sun.misc.SharedSecrets;
++import sun.misc.JavaSecurityAccess;
++
++import sun.awt.AWTAccessor;
++
+ /**
+  * This class is used to handle the transfer of a <code>Transferable</code>
+  * to and from Swing components.  The <code>Transferable</code> is used to
+@@ -1640,7 +1650,37 @@
+             return true;
+         }
+ 
+-        public void actionPerformed(ActionEvent e) {
++        private static final JavaSecurityAccess javaSecurityAccess =
++            SharedSecrets.getJavaSecurityAccess();
++
++        public void actionPerformed(final ActionEvent e) {
++            final Object src = e.getSource();
++
++            final PrivilegedAction<Void> action = new PrivilegedAction<Void>() {
++                public Void run() {
++                    actionPerformedImpl(e);
++                    return null;
++                }
++            };
++
++            final AccessControlContext stack = AccessController.getContext();
++            final AccessControlContext srcAcc = AWTAccessor.getComponentAccessor().getAccessControlContext((Component)src);
++            final AccessControlContext eventAcc = AWTAccessor.getAWTEventAccessor().getAccessControlContext(e);
++
++                if (srcAcc == null) {
++                    javaSecurityAccess.doIntersectionPrivilege(action, stack, eventAcc);
++                } else {
++                    javaSecurityAccess.doIntersectionPrivilege(
++                        new PrivilegedAction<Void>() {
++                            public Void run() {
++                                javaSecurityAccess.doIntersectionPrivilege(action, eventAcc);
++                                return null;
++                             }
++                    }, stack, srcAcc);
++                }
++        }
++
++        private void actionPerformedImpl(ActionEvent e) {
+             Object src = e.getSource();
+             if (src instanceof JComponent) {
+                 JComponent c = (JComponent) src;
+--- openjdk/jdk/src/share/classes/sun/misc/SharedSecrets.java	2011-01-26 18:38:37.918360769 +0300
++++ openjdk/jdk/src/share/classes/sun/misc/SharedSecrets.java	2011-01-26 18:38:37.421362526 +0300
+@@ -31,6 +31,8 @@
+ import java.io.FileDescriptor;
+ import java.security.ProtectionDomain;
+ 
++import java.security.AccessController;
++
+ /** A repository of "shared secrets", which are a mechanism for
+     calling implementation-private methods in another package without
+     using reflection. A package-private class implements a public
+@@ -49,6 +51,7 @@
+     private static JavaNetAccess javaNetAccess;
+     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
+     private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
++    private static JavaSecurityAccess javaSecurityAccess;
+ 
+     public static JavaUtilJarAccess javaUtilJarAccess() {
+         if (javaUtilJarAccess == null) {
+@@ -124,4 +127,15 @@
+ 
+         return javaSecurityProtectionDomainAccess;
+     }
++
++    public static void setJavaSecurityAccess(JavaSecurityAccess jsa) {
++        javaSecurityAccess = jsa;
++    }
++
++    public static JavaSecurityAccess getJavaSecurityAccess() {
++        if (javaSecurityAccess == null) {
++            unsafe.ensureClassInitialized(AccessController.class);
++        }
++        return javaSecurityAccess;
++    }
+ }
+--- /dev/null	2011-01-25 15:27:47.225362334 +0300
++++ openjdk/jdk/src/share/classes/sun/awt/AWTAccessor.java	2011-01-26 18:38:38.506361467 +0300
+@@ -0,0 +1,132 @@
++/*
++ * Copyright (c) 2011, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.awt;
++
++import java.awt.*;
++import java.awt.event.InputEvent;
++import java.awt.geom.Point2D;
++import java.awt.image.BufferedImage;
++
++import sun.misc.Unsafe;
++import java.awt.peer.ComponentPeer;
++
++import java.security.AccessController;
++import java.security.AccessControlContext;
++
++/**
++ * The AWTAccessor utility class.
++ * The main purpose of this class is to enable accessing
++ * private and package-private fields of classes from
++ * different classes/packages. See sun.misc.SharedSecretes
++ * for another example.
++ */
++public final class AWTAccessor {
++
++    private static final Unsafe unsafe = Unsafe.getUnsafe();
++
++    /*
++     * We don't need any objects of this class.
++     * It's rather a collection of static methods
++     * and interfaces.
++     */
++    private AWTAccessor() {
++    }
++
++    /*
++     * An interface of accessor for the java.awt.Component class.
++     */
++    public interface ComponentAccessor {
++        /*
++         * Returns the acc this component was constructed with.
++         */
++        AccessControlContext getAccessControlContext(Component comp);
++    }
++
++    /*
++     * An accessor for the AWTEvent class.
++     */
++    public interface AWTEventAccessor {
++        /**
++         * Sets the flag on this AWTEvent indicating that it was
++         * generated by the system.
++         */
++        void setSystemGenerated(AWTEvent ev);
++
++        /**
++         * Indicates whether this AWTEvent was generated by the system.
++         */
++        boolean isSystemGenerated(AWTEvent ev);
++
++
++        /*
++         * Returns the acc this event was constructed with.
++         */
++        AccessControlContext getAccessControlContext(AWTEvent ev);
++
++    }
++
++    /*
++     * Accessor instances are initialized in the static initializers of
++     * corresponding AWT classes by using setters defined below.
++     */
++    private static ComponentAccessor componentAccessor;
++    private static AWTEventAccessor awtEventAccessor;
++
++    /*
++     * Set an accessor object for the java.awt.Component class.
++     */
++    public static void setComponentAccessor(ComponentAccessor ca) {
++        componentAccessor = ca;
++    }
++
++    /*
++     * Retrieve the accessor object for the java.awt.Component class.
++     */
++    public static ComponentAccessor getComponentAccessor() {
++        if (componentAccessor == null) {
++            unsafe.ensureClassInitialized(Component.class);
++        }
++
++        return componentAccessor;
++    }
++
++    /*
++     * Set an accessor object for the java.awt.AWTEvent class.
++     */
++    public static void setAWTEventAccessor(AWTEventAccessor aea) {
++        awtEventAccessor = aea;
++    }
++
++    /*
++     * Retrieve the accessor object for the java.awt.AWTEvent class.
++     */
++    public static AWTEventAccessor getAWTEventAccessor() {
++        if (awtEventAccessor == null) {
++            unsafe.ensureClassInitialized(AWTEvent.class);
++        }
++        return awtEventAccessor;
++    }
++}
+--- /dev/null	2011-01-25 15:27:47.225362334 +0300
++++ openjdk/jdk/src/share/classes/sun/misc/JavaSecurityAccess.java	2011-01-26 18:38:39.446362054 +0300
+@@ -0,0 +1,40 @@
++/*
++ * Copyright (c) 2011, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.misc;
++
++import java.security.AccessControlContext;
++import java.security.PrivilegedAction;
++
++public interface JavaSecurityAccess {
++
++    <T> T doIntersectionPrivilege(PrivilegedAction<T> action,
++                                  AccessControlContext stack,
++                                  AccessControlContext context);
++
++    <T> T doIntersectionPrivilege(PrivilegedAction<T> action,
++                                  AccessControlContext context);
++
++}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6927050.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,331 @@
+diff -Nru jaxp.orig/build.properties jaxp/build.properties
+--- openjdk.orig/jaxp/build.properties	2010-02-17 03:11:24.000000000 +0000
++++ openjdk/jaxp/build.properties	2011-02-11 16:56:51.000000000 +0000
+@@ -77,6 +77,9 @@
+ # Where patches to drop bundle sources live
+ patches.dir=patches
+ 
++# Patches to apply
++jaxp_src.patch.list=6927050.patch
++
+ # Sanity information
+ sanity.info= Sanity Settings:${line.separator}\
+   ant.home=${ant.home}${line.separator}\
+diff -Nru jaxp.orig/patches/jaxp_src/6927050.patch jaxp/patches/jaxp_src/6927050.patch
+--- openjdk.orig/jaxp/patches/jaxp_src/6927050.patch	1970-01-01 01:00:00.000000000 +0100
++++ openjdk/jaxp/patches/jaxp_src/6927050.patch	2011-02-11 16:54:43.000000000 +0000
+@@ -0,0 +1,314 @@
++diff -Nruw src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/AbstractXMLSchema.java src/com/sun/org/apache/xerces/internal/jaxp/validation/AbstractXMLSchema.java
++--- src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/AbstractXMLSchema.java	2010-08-26 22:50:55.000000000 +0100
+++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/AbstractXMLSchema.java	2011-02-16 13:26:37.183169937 +0000
++@@ -20,6 +20,8 @@
++ 
++ package com.sun.org.apache.xerces.internal.jaxp.validation;
++ 
+++import java.util.HashMap;
+++
++ import javax.xml.validation.Schema;
++ import javax.xml.validation.Validator;
++ import javax.xml.validation.ValidatorHandler;
++@@ -32,6 +34,16 @@
++ abstract class AbstractXMLSchema extends Schema implements
++         XSGrammarPoolContainer {
++ 
+++    /**
+++     * Map containing the initial values of features for
+++     * validators created using this grammar pool container.
+++     */
+++    private final HashMap<String,Boolean> fFeatures;
+++
+++    public AbstractXMLSchema() {
+++        fFeatures = new HashMap<String,Boolean>();
+++    }
+++
++     /*
++      * Schema methods
++      */
++@@ -50,4 +62,26 @@
++         return new ValidatorHandlerImpl(this);
++     }
++ 
+++    /*
+++     * XSGrammarPoolContainer methods
+++     */
+++
+++    /**
+++     * Returns the initial value of a feature for validators created
+++     * using this grammar pool container or null if the validators
+++     * should use the default value.
+++     */
+++    public final Boolean getFeature(String featureId) {
+++        return fFeatures.get(featureId);
+++    }
+++
+++    /*
+++     * Other methods
+++     */
+++
+++    final void setFeature(String featureId, boolean state) {
+++        fFeatures.put(featureId, state ? Boolean.TRUE : Boolean.FALSE);
+++    }
+++
+++
++ } // AbstractXMLSchema
++diff -Nruw src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/EmptyXMLSchema.java src/com/sun/org/apache/xerces/internal/jaxp/validation/EmptyXMLSchema.java
++--- src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/EmptyXMLSchema.java	2010-08-26 22:50:55.000000000 +0100
+++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/EmptyXMLSchema.java	2011-02-16 13:26:37.187169628 +0000
++@@ -32,17 +32,10 @@
++  */
++ final class EmptyXMLSchema extends AbstractXMLSchema implements XMLGrammarPool {
++ 
++-    private static EmptyXMLSchema EMPTY_XML_SCHEMA_INSTANCE = new EmptyXMLSchema();
++-
++     /** Zero length grammar array. */
++     private static final Grammar [] ZERO_LENGTH_GRAMMAR_ARRAY = new Grammar [0];
++ 
++-    /** Returns the one and only instance of this class. */
++-    public static EmptyXMLSchema getInstance() {
++-        return EMPTY_XML_SCHEMA_INSTANCE;
++-    }
++-
++-    private EmptyXMLSchema() {}
+++    public EmptyXMLSchema() {}
++ 
++     /*
++      * XMLGrammarPool methods
++diff -Nruw src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java
++--- src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	2010-08-27 21:13:40.000000000 +0100
+++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaFactory.java	2011-02-16 13:28:55.108485839 +0000
++@@ -228,21 +228,26 @@
++         
++         // Select Schema implementation based on grammar count.
++         final int grammarCount = pool.getGrammarCount();
+++        AbstractXMLSchema schema = null;
++         if (grammarCount > 1) {
++-            return new XMLSchema(new ReadOnlyGrammarPool(pool));
+++            schema = new XMLSchema(new ReadOnlyGrammarPool(pool));
++         }
++         else if (grammarCount == 1) {
++             Grammar[] grammars = pool.retrieveInitialGrammarSet(XMLGrammarDescription.XML_SCHEMA);
++-            return new SimpleXMLSchema(grammars[0]);
+++            schema = new SimpleXMLSchema(grammars[0]);
++         }
++         else {
++-            return EmptyXMLSchema.getInstance();
+++            schema = new EmptyXMLSchema();
++         }
+++        propagateFeatures(schema);
+++        return schema;
++     }
++     
++     public Schema newSchema() throws SAXException {
++         // Use a Schema that uses the system id as the equality source.
++-        return new WeakReferenceXMLSchema();
+++        AbstractXMLSchema schema = new WeakReferenceXMLSchema();
+++        propagateFeatures(schema);
+++        return schema;
++     }
++     
++     public boolean getFeature(String name) 
++@@ -372,6 +377,15 @@
++         }
++     }
++     
+++    private void propagateFeatures(AbstractXMLSchema schema) {
+++        schema.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, fSecurityManager != null);
+++        String[] features = fXMLSchemaLoader.getRecognizedFeatures();
+++        for (int i = 0; i < features.length; ++i) {
+++            boolean state = fXMLSchemaLoader.getFeature(features[i]);
+++            schema.setFeature(features[i], state);
+++        }
+++    }
+++
++     /** 
++      * Extension of XMLGrammarPoolImpl which exposes the number of
++      * grammars stored in the grammar pool.
++diff -Nruw src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java
++--- src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java	2010-08-27 21:13:39.000000000 +0100
+++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/XMLSchemaValidatorComponentManager.java	2011-02-16 13:37:55.778587505 +0000
++@@ -21,6 +21,8 @@
++ package com.sun.org.apache.xerces.internal.jaxp.validation;
++ 
++ import java.util.HashMap;
+++import java.util.Iterator;
+++import java.util.Map;
++ import java.util.Locale;
++ 
++ import javax.xml.XMLConstants;
++@@ -161,6 +163,19 @@
++     private ValidationManager fValidationManager;
++     
++     //
+++    // Configuration
+++    //
+++
+++    /** Stores initial feature values for validator reset. */
+++    private final HashMap<String,Boolean> fInitFeatures = new HashMap<String,Boolean>();
+++
+++    /** Stores initial property values for validator reset. */
+++    private final HashMap<String,Object> fInitProperties = new HashMap<String,Object>();
+++
+++    /** Stores the initial security manager. */
+++    private final SecurityManager fInitSecurityManager;
+++
+++    //
++     // User Objects
++     //
++     
++@@ -211,9 +226,20 @@
++         fErrorReporter.putMessageFormatter(XSMessageFormatter.SCHEMA_DOMAIN, new XSMessageFormatter());
++         
++         // add all recognized features and properties and apply their defaults
++-        addRecognizedParamsAndSetDefaults(fEntityManager);
++-        addRecognizedParamsAndSetDefaults(fErrorReporter);
++-        addRecognizedParamsAndSetDefaults(fSchemaValidator); 
+++        addRecognizedParamsAndSetDefaults(fEntityManager, grammarContainer);
+++        addRecognizedParamsAndSetDefaults(fErrorReporter, grammarContainer);
+++        addRecognizedParamsAndSetDefaults(fSchemaValidator, grammarContainer);
+++
+++        // if the secure processing feature is set to true, add a security manager to the configuration
+++        Boolean secureProcessing = grammarContainer.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING);
+++        if (Boolean.TRUE.equals(secureProcessing)) {
+++            fInitSecurityManager = new SecurityManager();
+++        }
+++        else {
+++            fInitSecurityManager = null;
+++        }
+++        fComponents.put(SECURITY_MANAGER, fInitSecurityManager);
+++
++     }
++ 
++     /**
++@@ -266,7 +292,6 @@
++         else if (USE_GRAMMAR_POOL_ONLY.equals(featureId) && value != fUseGrammarPoolOnly) {
++             throw new XMLConfigurationException(XMLConfigurationException.NOT_SUPPORTED, featureId);
++         }
++-        fConfigUpdated = true;
++         if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(featureId)) {
++             if (_isSecureMode && !value) {
++                 throw new XMLConfigurationException(XMLConfigurationException.NOT_ALLOWED, XMLConstants.FEATURE_SECURE_PROCESSING);
++@@ -274,9 +299,14 @@
++             setProperty(SECURITY_MANAGER, value ? new SecurityManager() : null);
++             return;
++         }
+++        fConfigUpdated = true;
++         fEntityManager.setFeature(featureId, value);
++         fErrorReporter.setFeature(featureId, value);
++         fSchemaValidator.setFeature(featureId, value);
+++        if (!fInitFeatures.containsKey(featureId)) {
+++            boolean current = super.getFeature(featureId);
+++            fInitFeatures.put(featureId, current ? Boolean.TRUE : Boolean.FALSE);
+++        }
++         super.setFeature(featureId, value);
++     }
++     
++@@ -336,6 +366,9 @@
++             fComponents.put(propertyId, value);
++             return;
++         }
+++        if (!fInitProperties.containsKey(propertyId)) {
+++            fInitProperties.put(propertyId, super.getProperty(propertyId));
+++        }
++         super.setProperty(propertyId, value);
++     }
++     
++@@ -348,7 +381,7 @@
++      * @param component The component whose recognized features
++      * and properties will be added to the configuration
++      */
++-    public void addRecognizedParamsAndSetDefaults(XMLComponent component) {
+++    public void addRecognizedParamsAndSetDefaults(XMLComponent component, XSGrammarPoolContainer grammarContainer) {
++         
++         // register component's recognized features
++         final String[] recognizedFeatures = component.getRecognizedFeatures();
++@@ -359,7 +392,7 @@
++         addRecognizedProperties(recognizedProperties);
++ 
++         // set default values
++-        setFeatureDefaults(component, recognizedFeatures);
+++        setFeatureDefaults(component, recognizedFeatures, grammarContainer);
++         setPropertyDefaults(component, recognizedProperties);
++     }
++     
++@@ -406,33 +439,50 @@
++     void restoreInitialState() {
++         fConfigUpdated = true;
++         
++-        // Clear feature and property tables.
++-        fFeatures.clear();
++-        fProperties.clear();
++-        
++         // Remove error resolver and error handler
++         fComponents.put(ENTITY_RESOLVER, null);
++         fComponents.put(ERROR_HANDLER, null);
++ 
+++        // Restore initial security manager
+++        fComponents.put(SECURITY_MANAGER, fInitSecurityManager);
+++
++         // Set the Locale back to null.
++         setLocale(null);
++         fComponents.put(LOCALE, null);
++        
++-        // Restore component defaults.
++-        setFeatureDefaults(fEntityManager, fEntityManager.getRecognizedFeatures());
++-        setPropertyDefaults(fEntityManager, fEntityManager.getRecognizedProperties());
++-        setFeatureDefaults(fErrorReporter, fErrorReporter.getRecognizedFeatures());
++-        setPropertyDefaults(fErrorReporter, fErrorReporter.getRecognizedProperties());
++-        setFeatureDefaults(fSchemaValidator, fSchemaValidator.getRecognizedFeatures());
++-        setPropertyDefaults(fSchemaValidator, fSchemaValidator.getRecognizedProperties());
+++        // Reset feature and property values to their initial values
+++        if (!fInitFeatures.isEmpty()) {
+++            Iterator<Map.Entry<String,Boolean>> iter = fInitFeatures.entrySet().iterator();
+++            while (iter.hasNext()) {
+++                Map.Entry<String,Boolean> entry = iter.next();
+++                String name = entry.getKey();
+++                boolean value = entry.getValue().booleanValue();
+++                super.setFeature(name, value);
+++            }
+++            fInitFeatures.clear();
+++        }
+++        if (!fInitProperties.isEmpty()) {
+++            Iterator<Map.Entry<String,Object>> iter = fInitProperties.entrySet().iterator();
+++            while (iter.hasNext()) {
+++                Map.Entry<String,Object> entry = iter.next();
+++                String name = entry.getKey();
+++                Object value = entry.getValue();
+++                super.setProperty(name, value);
+++            }
+++            fInitProperties.clear();
+++        }
++     }
++     
++     /** Sets feature defaults for the given component on this configuration. */
++-    private void setFeatureDefaults(final XMLComponent component, final String [] recognizedFeatures) {
+++    private void setFeatureDefaults(final XMLComponent component,
+++            final String [] recognizedFeatures, XSGrammarPoolContainer grammarContainer) {
++         if (recognizedFeatures != null) {
++             for (int i = 0; i < recognizedFeatures.length; ++i) {
++                 String featureId = recognizedFeatures[i];
++-                Boolean state = component.getFeatureDefault(featureId);
+++                Boolean state = grammarContainer.getFeature(featureId);
+++                if (state == null) {
+++                    state = component.getFeatureDefault(featureId);
+++                }
++                 if (state != null) {
++                     // Do not overwrite values already set on the configuration.
++                     if (!fFeatures.containsKey(featureId)) {
++diff -Nruw src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XSGrammarPoolContainer.java src/com/sun/org/apache/xerces/internal/jaxp/validation/XSGrammarPoolContainer.java
++--- src.orig/com/sun/org/apache/xerces/internal/jaxp/validation/XSGrammarPoolContainer.java	2010-08-26 22:50:55.000000000 +0100
+++++ src/com/sun/org/apache/xerces/internal/jaxp/validation/XSGrammarPoolContainer.java	2011-02-16 13:26:37.187169628 +0000
++@@ -47,4 +47,11 @@
++      */
++     public boolean isFullyComposed();
++ 
+++    /**
+++     * Returns the initial value of a feature for validators created
+++     * using this grammar pool container or null if the validators
+++     * should use the default value.
+++     */
+++    public Boolean getFeature(String featureId);
+++
++ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6981922.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,245 @@
+# HG changeset patch
+# User michaelm
+# Date 1296485276 28800
+# Node ID 1da22d47056eebecb9aec43c8d79c0f9f54ff04b
+# Parent  0933d8b8547a6c657b4d4f636ac6b94e70bb2e40
+6981922: DNS cache poisoning by untrusted applets
+Reviewed-by: chegar
+
+diff --git a/make/sun/net/FILES_java.gmk b/make/sun/net/FILES_java.gmk
+--- openjdk/jdk/make/sun/net/FILES_java.gmk
++++ openjdk/jdk/make/sun/net/FILES_java.gmk
+@@ -34,6 +34,7 @@ FILES_java = \
+ 	sun/net/ProgressEvent.java \
+ 	sun/net/ProgressListener.java \
+ 	sun/net/ProgressMeteringPolicy.java \
++	sun/net/ResourceManager.java \
+ 	sun/net/TelnetInputStream.java \
+ 	sun/net/TelnetOutputStream.java \
+ 	sun/net/TelnetProtocolException.java \
+diff --git a/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java b/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
+--- openjdk/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
++++ openjdk/jdk/src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
+@@ -28,6 +28,7 @@ import java.io.IOException;
+ import java.io.IOException;
+ import java.io.InterruptedIOException;
+ import java.util.Enumeration;
++import sun.net.ResourceManager;
+ 
+ /**
+  * Abstract datagram and multicast socket implementation base class.
+@@ -65,8 +66,15 @@ abstract class AbstractPlainDatagramSock
+      * Creates a datagram socket
+      */
+     protected synchronized void create() throws SocketException {
++        ResourceManager.beforeUdpCreate();
+         fd = new FileDescriptor();
+-        datagramSocketCreate();
++        try {
++            datagramSocketCreate();
++        } catch (SocketException ioe) {
++            ResourceManager.afterUdpClose();
++            fd = null;
++            throw ioe;
++        }
+     }
+ 
+     /**
+@@ -211,6 +219,7 @@ abstract class AbstractPlainDatagramSock
+     protected void close() {
+         if (fd != null) {
+             datagramSocketClose();
++            ResourceManager.afterUdpClose();
+             fd = null;
+         }
+     }
+diff --git a/src/share/classes/java/net/AbstractPlainSocketImpl.java b/src/share/classes/java/net/AbstractPlainSocketImpl.java
+--- openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java
++++ openjdk/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java
+@@ -33,6 +33,7 @@ import java.io.ByteArrayOutputStream;
+ import java.io.ByteArrayOutputStream;
+ 
+ import sun.net.ConnectionResetException;
++import sun.net.ResourceManager;
+ 
+ /**
+  * Default Socket Implementation. This implementation does
+@@ -69,6 +70,10 @@ abstract class AbstractPlainSocketImpl e
+     private int resetState;
+     private Object resetLock = new Object();
+ 
++   /* whether this Socket is a stream (TCP) socket or not (UDP)
++    */
++    private boolean stream;
++
+     /**
+      * Load net library into runtime.
+      */
+@@ -83,7 +88,19 @@ abstract class AbstractPlainSocketImpl e
+      */
+     protected synchronized void create(boolean stream) throws IOException {
+         fd = new FileDescriptor();
+-        socketCreate(stream);
++        this.stream = stream;
++        if (!stream) {
++            ResourceManager.beforeUdpCreate();
++            try {
++                socketCreate(false);
++            } catch (IOException ioe) {
++                ResourceManager.afterUdpClose();
++                fd = null;
++                throw ioe;
++            }
++        } else {
++            socketCreate(true);
++        }
+         if (socket != null)
+             socket.setCreated();
+         if (serverSocket != null)
+@@ -458,6 +475,9 @@ abstract class AbstractPlainSocketImpl e
+     protected void close() throws IOException {
+         synchronized(fdLock) {
+             if (fd != null) {
++                if (!stream) {
++                    ResourceManager.afterUdpClose();
++                }
+                 if (fdUseCount == 0) {
+                     if (closePending) {
+                         return;
+diff --git a/src/share/classes/sun/net/ResourceManager.java b/src/share/classes/sun/net/ResourceManager.java
+new file mode 100644
+--- /dev/null
++++ openjdk/jdk/src/share/classes/sun/net/ResourceManager.java
+@@ -0,0 +1,82 @@
++/*
++ * Copyright (c) 2011, 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.  Oracle designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Oracle in the LICENSE file that accompanied this code.
++ *
++ * 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.
++ */
++
++package sun.net;
++
++import java.net.SocketException;
++import java.util.concurrent.atomic.AtomicInteger;
++import sun.security.action.GetPropertyAction;
++
++/**
++ * Manages count of total number of UDP sockets and ensures
++ * that exception is thrown if we try to create more than the
++ * configured limit.
++ *
++ * This functionality could be put in NetHooks some time in future.
++ */
++
++public class ResourceManager {
++
++    /* default maximum number of udp sockets per VM
++     * when a security manager is enabled.
++     * The default is 1024 which is high enough to be useful
++     * but low enough to be well below the maximum number
++     * of port numbers actually available on all OSes for
++     * such sockets (5000 on some versions of windows)
++     */
++
++    private static final int DEFAULT_MAX_SOCKETS = 1024;
++    private static final int maxSockets;
++    private static final AtomicInteger numSockets;
++
++    static {
++        String prop = java.security.AccessController.doPrivileged(
++            new GetPropertyAction("sun.net.maxDatagramSockets")
++        );
++        int defmax = DEFAULT_MAX_SOCKETS;
++        try {
++            if (prop != null) {
++                defmax = Integer.parseInt(prop);
++            }
++        } catch (NumberFormatException e) {}
++        maxSockets = defmax;
++        numSockets = new AtomicInteger(0);
++    }
++
++    public static void beforeUdpCreate() throws SocketException {
++        if (System.getSecurityManager() != null) {
++            if (numSockets.incrementAndGet() > maxSockets) {
++                numSockets.decrementAndGet();
++                throw new SocketException("maximum number of DatagramSockets reached");
++            }
++        }
++    }
++
++    public static void afterUdpClose() {
++        if (System.getSecurityManager() != null) {
++            numSockets.decrementAndGet();
++        }
++    }
++}
+diff --git a/src/share/classes/sun/nio/ch/DatagramChannelImpl.java b/src/share/classes/sun/nio/ch/DatagramChannelImpl.java
+--- openjdk/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java
++++ openjdk/jdk/src/share/classes/sun/nio/ch/DatagramChannelImpl.java
+@@ -32,6 +32,7 @@ import java.nio.channels.*;
+ import java.nio.channels.*;
+ import java.nio.channels.spi.*;
+ import java.lang.ref.SoftReference;
++import sun.net.ResourceManager;
+ 
+ 
+ /**
+@@ -98,9 +99,15 @@ class DatagramChannelImpl
+         throws IOException
+     {
+         super(sp);
+-        this.fd = Net.socket(false);
+-        this.fdVal = IOUtil.fdVal(fd);
+-        this.state = ST_UNCONNECTED;
++        ResourceManager.beforeUdpCreate();
++        try {
++            this.fd = Net.socket(false);
++            this.fdVal = IOUtil.fdVal(fd);
++            this.state = ST_UNCONNECTED;
++        } catch (IOException ioe) {
++            ResourceManager.afterUdpClose();
++            throw ioe;
++        }
+     }
+ 
+     public DatagramChannelImpl(SelectorProvider sp, FileDescriptor fd)
+@@ -587,6 +594,7 @@ class DatagramChannelImpl
+     protected void implCloseSelectableChannel() throws IOException {
+         synchronized (stateLock) {
+             nd.preClose(fd);
++            ResourceManager.afterUdpClose();
+             long th;
+             if ((th = readerThread) != 0)
+                 NativeThread.signal(th);
+diff --git a/src/share/classes/sun/nio/ch/Net.java b/src/share/classes/sun/nio/ch/Net.java
+--- openjdk/jdk/src/share/classes/sun/nio/ch/Net.java
++++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java
+@@ -111,7 +111,7 @@ class Net {                             
+ 
+     // -- Socket operations --
+ 
+-    static FileDescriptor socket(boolean stream) {
++    static FileDescriptor socket(boolean stream) throws IOException {
+         return IOUtil.newFD(socket0(stream, false));
+     }
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6983554.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,20 @@
+# HG changeset patch
+# User ksrini
+# Date 1288026697 25200
+# Node ID 547ec9b43edde622a08cc9bae0f4e2efae861796
+# Parent  9216ec4e4c1443fe854872630aa8b3726523c0c9
+6983554: (launcher) Fix empty user's LD_LIBRARY_PATH environment variable in the launcher
+Reviewed-by: darcy, ohair, asaha
+
+diff --git a/src/solaris/bin/java_md.c b/src/solaris/bin/java_md.c
+--- openjdk/jdk/src/solaris/bin/java_md.c
++++ openjdk/jdk/src/solaris/bin/java_md.c
+@@ -484,7 +484,7 @@ CreateExecutionEnvironment(int *_argcp,
+        * LD_LIBRARY_PATH.  Note that this prevents any possible infinite
+        * loop of execv() because we test for the prefix, above.
+        */
+-      if (runpath != 0) {
++      if (runpath != 0 && (runpath[0] != '\0')) {
+         strcat(new_runpath, ":");
+         strcat(new_runpath, runpath);
+       }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6985453.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,104 @@
+# HG changeset patch
+# User bae
+# Date 1288382134 -14400
+# Node ID 5e70dbac6a7d3743e64e19399552a60d25ba5cff
+# Parent  f3dff5c1b9c2cc8d38fde74c3661786f6332a3eb
+6985453: Font.createFont may expose some system properties in exception text
+Reviewed-by: prr, hawtin
+
+diff --git a/src/share/classes/sun/font/FileFont.java b/src/share/classes/sun/font/FileFont.java
+--- openjdk/jdk/src/share/classes/sun/font/FileFont.java
++++ openjdk/jdk/src/share/classes/sun/font/FileFont.java
+@@ -48,6 +48,9 @@ import java.util.HashSet;
+ import java.util.HashSet;
+ import java.util.HashMap;
+ import java.awt.Font;
++import java.security.AccessController;
++import java.security.PrivilegedActionException;
++import java.security.PrivilegedExceptionAction;
+ 
+ public abstract class FileFont extends PhysicalFont {
+ 
+@@ -284,4 +287,49 @@ public abstract class FileFont extends P
+             });
+         }
+     }
++
++    protected String getPublicFileName() {
++        SecurityManager sm = System.getSecurityManager();
++        if (sm == null) {
++            return platName;
++        }
++        boolean canReadProperty = true;
++
++        try {
++            sm.checkPropertyAccess("java.io.tmpdir");
++        } catch (SecurityException e) {
++            canReadProperty = false;
++        }
++
++        if (canReadProperty) {
++            return platName;
++        }
++
++        final File f = new File(platName);
++
++         Boolean isTmpFile = Boolean.FALSE;
++         try {
++             isTmpFile = AccessController.doPrivileged(
++                 new PrivilegedExceptionAction<Boolean>() {
++                     public Boolean run() {
++                         File tmp = new File(System.getProperty("java.io.tmpdir"));
++                         try {
++                             String tpath = tmp.getCanonicalPath();
++                             String fpath = f.getCanonicalPath();
++
++                             return (fpath == null) || fpath.startsWith(tpath);
++                         } catch (IOException e) {
++                             return Boolean.TRUE;
++                         }
++                     }
++                 }
++             );
++         } catch (PrivilegedActionException e) {
++             // unable to verify whether value of java.io.tempdir will be
++             // exposed, so return only a name of the font file.
++             isTmpFile = Boolean.TRUE;
++         }
++
++         return  isTmpFile ? "temp file" : platName;
++     }
+ }
+diff --git a/src/share/classes/sun/font/TrueTypeFont.java b/src/share/classes/sun/font/TrueTypeFont.java
+--- openjdk/jdk/src/share/classes/sun/font/TrueTypeFont.java
++++ openjdk/jdk/src/share/classes/sun/font/TrueTypeFont.java
+@@ -504,7 +504,8 @@ public class TrueTypeFont extends FileFo
+                 break;
+ 
+             default:
+-                throw new FontFormatException("Unsupported sfnt " + platName);
++                throw new FontFormatException("Unsupported sfnt " +
++                                              getPublicFileName());
+             }
+ 
+             /* Now have the offset of this TT font (possibly within a TTC)
+@@ -1369,6 +1370,6 @@ public class TrueTypeFont extends FileFo
+ 
+     public String toString() {
+         return "** TrueType Font: Family="+familyName+ " Name="+fullName+
+-            " style="+style+" fileName="+platName;
++            " style="+style+" fileName="+getPublicFileName();
+     }
+ }
+diff --git a/src/share/classes/sun/font/Type1Font.java b/src/share/classes/sun/font/Type1Font.java
+--- openjdk/jdk/src/share/classes/sun/font/Type1Font.java
++++ openjdk/jdk/src/share/classes/sun/font/Type1Font.java
+@@ -677,7 +677,7 @@ public class Type1Font extends FileFont 
+ 
+     public String toString() {
+         return "** Type1 Font: Family="+familyName+ " Name="+fullName+
+-            " style="+style+" fileName="+platName;
++            " style="+style+" fileName="+getPublicFileName();
+     }
+ 
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/security/20110215/6994263.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -0,0 +1,33 @@
+--- openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/transforms/Transform.java	Mon Nov  1 13:25:19 2010
++++ openjdk/jdk/src/share/classes/com/sun/org/apache/xml/internal/security/transforms/Transform.java	Mon Nov  1 13:25:18 2010
+@@ -247,6 +247,8 @@
+ 
+       if (!_alreadyInitialized) {
+          _transformHash = new HashMap(10);
++         // make sure builtin algorithms are all registered first
++         com.sun.org.apache.xml.internal.security.Init.init();
+          _alreadyInitialized = true;
+       }
+    }
+@@ -274,19 +276,13 @@
+                "algorithm.alreadyRegistered", exArgs);
+          }
+ 
+-         ClassLoader cl = (ClassLoader) AccessController.doPrivileged(
+-             new PrivilegedAction() {
+-                 public Object run() {
+-                     return Thread.currentThread().getContextClassLoader();
+-                 }
+-             });
++         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ 
+          try {
+              Transform._transformHash.put
+                  (algorithmURI, Class.forName(implementingClass, true, cl));
+          } catch (ClassNotFoundException e) {
+-             // TODO Auto-generated catch block
+-             e.printStackTrace();
++             throw new RuntimeException(e);
+          }
+       }
+    }
--- a/patches/systemtap.patch	Sat Jan 22 03:48:53 2011 +0000
+++ b/patches/systemtap.patch	Thu Feb 17 23:36:09 2011 +0000
@@ -60,101 +60,3 @@
  #ifdef ASSERT
      } else if (match_option(option, "-XX:+FullGCALot", &tail)) {
        FLAG_SET_CMDLINE(bool, FullGCALot, true);
-diff -Nru openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp openjdk/hotspot/src/share/vm/utilities/dtrace.hpp
---- openjdk.orig/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 20:30:52.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/utilities/dtrace.hpp	2010-08-27 22:38:19.569540300 +0100
-@@ -1,5 +1,6 @@
- /*
-  * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright 2009 Red Hat, Inc.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -22,7 +23,7 @@
-  *
-  */
- 
--#if defined(SOLARIS) && defined(DTRACE_ENABLED)
-+#if defined(DTRACE_ENABLED)
- 
- #include <sys/sdt.h>
- 
-@@ -33,7 +34,7 @@
- #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG() \
-   do { volatile size_t dtrace_workaround_tail_call_bug = 1; } while (0)
- 
--#else // ndef SOLARIS || ndef DTRACE_ENABLED
-+#else // ndef DTRACE_ENABLED
- 
- #define DTRACE_ONLY(x)
- #define NOT_DTRACE(x) x
-@@ -44,11 +45,18 @@
- #define DTRACE_PROBE3(a,b,c,d,e) {;}
- #define DTRACE_PROBE4(a,b,c,d,e,f) {;}
- #define DTRACE_PROBE5(a,b,c,d,e,f,g) {;}
-+#define DTRACE_PROBE6(a,b,c,d,e,f,g,h) {;}
-+#define DTRACE_PROBE7(a,b,c,d,e,f,g,h,i) {;}
-+#define DTRACE_PROBE8(a,b,c,d,e,f,g,h,i,j) {;}
-+#define DTRACE_PROBE9(a,b,c,d,e,f,g,h,i,j,k) {;}
-+#define DTRACE_PROBE10(a,b,c,d,e,f,g,h,i,j,k,l) {;}
- 
- #define HS_DTRACE_WORKAROUND_TAIL_CALL_BUG()
- 
- #endif
- 
-+#if defined(SOLARIS)
-+// Solaris dtrace needs actual extern function decls.
- #define HS_DTRACE_PROBE_FN(provider,name)\
-   __dtrace_##provider##___##name
- 
-@@ -56,6 +64,11 @@
-   DTRACE_ONLY(extern "C" void HS_DTRACE_PROBE_FN(provider,name) args)
- #define HS_DTRACE_PROBE_CDECL_N(provider,name,args) \
-   DTRACE_ONLY(extern void HS_DTRACE_PROBE_FN(provider,name) args)
-+#else
-+// Systemtap dtrace compatible probes on GNU/Linux don't.
-+#define HS_DTRACE_PROBE_DECL_N(provider,name,args)
-+#define HS_DTRACE_PROBE_CDECL_N(provider,name,args)
-+#endif 
- 
- /* Dtrace probe declarations */
- #define HS_DTRACE_PROBE_DECL(provider,name) \
-@@ -94,6 +107,8 @@
-     uintptr_t,uintptr_t,uintptr_t))
- 
- /* Dtrace probe definitions */
-+#if defined(SOLARIS)
-+// Solaris dtrace uses actual function calls.
- #define HS_DTRACE_PROBE_N(provider,name, args) \
-   DTRACE_ONLY(HS_DTRACE_PROBE_FN(provider,name) args)
- 
-@@ -129,3 +144,29 @@
-   HS_DTRACE_PROBE_N(provider,name,((uintptr_t)a0,(uintptr_t)a1,(uintptr_t)a2,\
-     (uintptr_t)a3,(uintptr_t)a4,(uintptr_t)a5,(uintptr_t)a6,(uintptr_t)a7,\
-     (uintptr_t)a8,(uintptr_t)a9))
-+#else
-+// Systemtap dtrace compatible probes on GNU/Linux use direct macros.
-+#define HS_DTRACE_PROBE(provider,name) HS_DTRACE_PROBE0(provider,name)
-+#define HS_DTRACE_PROBE0(provider,name)\
-+  DTRACE_PROBE(provider,name)
-+#define HS_DTRACE_PROBE1(provider,name,a0)\
-+  DTRACE_PROBE1(provider,name,a0)
-+#define HS_DTRACE_PROBE2(provider,name,a0,a1)\
-+  DTRACE_PROBE2(provider,name,a0,a1)
-+#define HS_DTRACE_PROBE3(provider,name,a0,a1,a2)\
-+  DTRACE_PROBE3(provider,name,a0,a1,a2)
-+#define HS_DTRACE_PROBE4(provider,name,a0,a1,a2,a3)\
-+  DTRACE_PROBE4(provider,name,a0,a1,a2,a3)
-+#define HS_DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)\
-+  DTRACE_PROBE5(provider,name,a0,a1,a2,a3,a4)
-+#define HS_DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)\
-+  DTRACE_PROBE6(provider,name,a0,a1,a2,a3,a4,a5)
-+#define HS_DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)\
-+  DTRACE_PROBE7(provider,name,a0,a1,a2,a3,a4,a5,a6)
-+#define HS_DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)\
-+  DTRACE_PROBE8(provider,name,a0,a1,a2,a3,a4,a5,a6,a7)
-+#define HS_DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
-+  DTRACE_PROBE9(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
-+#define HS_DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)\
-+  DTRACE_PROBE10(provider,name,a0,a1,a2,a3,a4,a5,a6,a7,a8)
-+#endif